zink: always allow mutating the format
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Tue, 29 Oct 2019 22:19:53 +0000 (23:19 +0100)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Wed, 6 Nov 2019 11:37:36 +0000 (11:37 +0000)
There's no good way to know if a texture-view will be created, so we
just have to accept it for all resources.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Fixes: 8d46e35d16e ("zink: introduce opengl over vulkan")
src/gallium/drivers/zink/zink_resource.c

index 0051c891d57ccd997a8bdf4d38e95732c50f8ad3..09d84ba71a517f38b19d0ea18b25753c8162a7e6 100644 (file)
@@ -137,6 +137,7 @@ resource_create(struct pipe_screen *pscreen,
 
       VkImageCreateInfo ici = {};
       ici.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
+      ici.flags = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
 
       switch (templ->target) {
       case PIPE_TEXTURE_1D:
@@ -146,7 +147,7 @@ resource_create(struct pipe_screen *pscreen,
 
       case PIPE_TEXTURE_CUBE:
       case PIPE_TEXTURE_CUBE_ARRAY:
-         ici.flags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
+         ici.flags |= VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
          /* fall-through */
       case PIPE_TEXTURE_2D:
       case PIPE_TEXTURE_2D_ARRAY:
@@ -157,7 +158,7 @@ resource_create(struct pipe_screen *pscreen,
       case PIPE_TEXTURE_3D:
          ici.imageType = VK_IMAGE_TYPE_3D;
          if (templ->bind & PIPE_BIND_RENDER_TARGET)
-            ici.flags = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT;
+            ici.flags |= VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT;
          break;
 
       case PIPE_BUFFER: