zink: improve surface viewtype clamping
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 18 Mar 2021 14:48:26 +0000 (10:48 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 19 Mar 2021 15:31:45 +0000 (15:31 +0000)
a cube array can still work with a nonzero first layer

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9685>

src/gallium/drivers/zink/zink_surface.h

index e3261e8..5610ca0 100644 (file)
@@ -65,9 +65,10 @@ zink_surface_clamp_viewtype(VkImageViewType viewType, unsigned first_layer, unsi
    if (viewType == VK_IMAGE_VIEW_TYPE_CUBE || viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY) {
       if (first_layer == last_layer)
          return VK_IMAGE_VIEW_TYPE_2D;
-      if (viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY && first_layer % 6 == 0 && layerCount % 6 == 0)
-         return VK_IMAGE_VIEW_TYPE_CUBE;
-      if (first_layer || layerCount != array_size)
+      if (layerCount % 6 == 0) {
+         if (viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY && layerCount == 6)
+            return VK_IMAGE_VIEW_TYPE_CUBE;
+      } else if (first_layer || layerCount != array_size)
          return VK_IMAGE_VIEW_TYPE_2D_ARRAY;
    } else if (viewType == VK_IMAGE_VIEW_TYPE_2D_ARRAY) {
       if (first_layer == last_layer)