nvk: Implement VK_EXT_image_sliced_view_of_3d
authorFaith Ekstrand <faith.ekstrand@collabora.com>
Wed, 18 Oct 2023 08:32:59 +0000 (03:32 -0500)
committerMarge Bot <emma+marge@anholt.net>
Wed, 18 Oct 2023 12:19:40 +0000 (12:19 +0000)
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9637
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25785>

docs/features.txt
src/nouveau/vulkan/nvk_image_view.c
src/nouveau/vulkan/nvk_physical_device.c

index f72b0be..edac939 100644 (file)
@@ -574,7 +574,7 @@ Khronos extensions that are not part of any Vulkan version:
   VK_EXT_graphics_pipeline_library                      DONE (anv, lvp, radv, tu)
   VK_EXT_image_2d_view_of_3d                            DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
   VK_EXT_image_drm_format_modifier                      DONE (anv, hasvk, radv/gfx9+, tu, v3dv, vn)
-  VK_EXT_image_sliced_view_of_3d                        DONE (anv, radv/gfx10+)
+  VK_EXT_image_sliced_view_of_3d                        DONE (anv, nvk, radv/gfx10+)
   VK_EXT_image_view_min_lod                             DONE (anv, hasvk, nvk, radv, tu, vn)
   VK_EXT_index_type_uint8                               DONE (anv, hasvk, nvk, lvp, panvk, radv/gfx8+, tu, v3dv, vn)
   VK_EXT_line_rasterization                             DONE (anv, hasvk, nvk, lvp, radv, tu, v3dv, vn)
index e5c8713..de3a404 100644 (file)
@@ -187,8 +187,8 @@ nvk_image_view_init(struct nvk_device *dev,
             assert(view->vk.layer_count == 1);
             nil_view.type = NIL_VIEW_TYPE_2D_ARRAY;
             nil_view.num_levels = 1;
-            nil_view.base_array_layer = 0;
-            nil_view.array_len = view->vk.extent.depth;
+            nil_view.base_array_layer = view->vk.storage.z_slice_offset;
+            nil_view.array_len = view->vk.storage.z_slice_count;
             image_3d_view_as_2d_array(&nil_image, &nil_view, &base_addr);
          }
 
index 7c5ec2f..355f2a5 100644 (file)
@@ -113,6 +113,7 @@ nvk_get_device_extensions(const struct nv_device_info *info,
       .EXT_host_query_reset = true,
       .EXT_image_2d_view_of_3d = true,
       .EXT_image_robustness = true,
+      .EXT_image_sliced_view_of_3d = true,
       .EXT_image_view_min_lod = true,
       .EXT_index_type_uint8 = true,
       .EXT_inline_uniform_block = true,
@@ -331,6 +332,9 @@ nvk_get_device_features(const struct nv_device_info *info,
       .image2DViewOf3D = true,
       .sampler2DViewOf3D = true,
 
+      /* VK_EXT_image_sliced_view_of_3d */
+      .imageSlicedViewOf3D = true,
+
       /* VK_EXT_image_view_min_lod */
       .minLod = true,