turnip: divide cube map depth by 6
authorJonathan Marek <jonathan@marek.ca>
Thu, 23 Apr 2020 16:10:07 +0000 (12:10 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 24 Apr 2020 10:24:55 +0000 (10:24 +0000)
This matches the GL driver and fixes these tests:

dEQP-VK.glsl.texture_functions.query.texturesize.samplercubearray*

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4709>

src/freedreno/vulkan/tu_image.c

index c4ac2f8c83062417fae7ac2ca3c7560c12f681ec..280263b0f3628a9250a84162a8a7bd3d85328374 100644 (file)
@@ -274,8 +274,18 @@ tu_image_view_init(struct tu_image_view *iview,
 
    uint32_t width = u_minify(image->extent.width, range->baseMipLevel);
    uint32_t height = u_minify(image->extent.height, range->baseMipLevel);
-   uint32_t depth = pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_3D ?
-      u_minify(image->extent.depth, range->baseMipLevel) : tu_get_layerCount(image, range);
+   uint32_t depth = tu_get_layerCount(image, range);
+   switch (pCreateInfo->viewType) {
+   case VK_IMAGE_VIEW_TYPE_3D:
+      depth = u_minify(image->extent.depth, range->baseMipLevel);
+      break;
+   case VK_IMAGE_VIEW_TYPE_CUBE:
+   case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:
+      depth /= 6;
+      break;
+   default:
+      break;
+  }
 
    uint64_t base_addr = image->bo->iova + image->bo_offset +
       fdl_surface_offset(layout, range->baseMipLevel, range->baseArrayLayer);