zink: flatten 2d_array surfaces when necessary
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 18 Mar 2021 14:17:25 +0000 (10:17 -0400)
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 18 Mar 2021 20:29:09 +0000 (16:29 -0400)
same as cube types, if this is a single layer then it's not an array

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9684>

src/gallium/drivers/zink/zink_surface.c

index 02dd851..06b9d0d 100644 (file)
@@ -96,6 +96,9 @@ create_ivci(struct zink_screen *screen,
          ivci.viewType = VK_IMAGE_VIEW_TYPE_CUBE;
       else if (templ->u.tex.first_layer || ivci.subresourceRange.layerCount != res->base.array_size)
          ivci.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
+   } else if (ivci.viewType == VK_IMAGE_VIEW_TYPE_2D_ARRAY) {
+      if (templ->u.tex.first_layer == templ->u.tex.last_layer)
+         ivci.viewType = VK_IMAGE_VIEW_TYPE_2D;
    }
 
    return ivci;