zink: fall back from cached to non-cached memory
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Wed, 14 Apr 2021 11:35:34 +0000 (13:35 +0200)
committerMarge Bot <eric+marge@anholt.net>
Wed, 14 Apr 2021 14:16:16 +0000 (14:16 +0000)
This fixes basic rendering on top of V3DV, which doesn't seem to expose
the cached memory we expect and love.

Fixes: 598dc3dca41 ("zink: use cached memory for all resources when possible")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10230>

src/gallium/drivers/zink/zink_resource.c

index 57434a8..5cf4e81 100644 (file)
@@ -187,6 +187,14 @@ get_memory_type_index(struct zink_screen *screen,
    if (idx >= 0)
       return idx;
 
+   if (props & VK_MEMORY_PROPERTY_HOST_CACHED_BIT) {
+      /* if no suitable cached memory can be found, fall back
+       * to non-cached memory instead.
+       */
+      return get_memory_type_index(screen, reqs,
+         props & ~VK_MEMORY_PROPERTY_HOST_CACHED_BIT);
+   }
+
    unreachable("Unsupported memory-type");
    return 0;
 }