Module: Mesa
Branch: main
Commit: 34e7c17cfee71f0129d92cafb025e908b3761350
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=34e7c17cfee71f0129d92cafb025e908b3761350

Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Feb 13 12:22:47 2023 -0500

lavapipe: EXT_image_sliced_view_of_3d

Reviewed-by: Faith Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21514>

---

 src/gallium/frontends/lavapipe/lvp_device.c | 8 +++++++-
 src/gallium/frontends/lavapipe/lvp_image.c  | 4 ++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/frontends/lavapipe/lvp_device.c 
b/src/gallium/frontends/lavapipe/lvp_device.c
index 7826c69453b..627b01e5db9 100644
--- a/src/gallium/frontends/lavapipe/lvp_device.c
+++ b/src/gallium/frontends/lavapipe/lvp_device.c
@@ -161,6 +161,7 @@ static const struct vk_device_extension_table 
lvp_device_extensions_supported =
    .EXT_graphics_pipeline_library         = true,
    .EXT_host_query_reset                  = true,
    .EXT_image_2d_view_of_3d               = true,
+   .EXT_image_sliced_view_of_3d           = true,
    .EXT_image_robustness                  = true,
    .EXT_index_type_uint8                  = true,
    .EXT_inline_uniform_block              = true,
@@ -831,7 +832,12 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceFeatures2(
          features->maintenance4 = true;
          break;
       }
-
+      case 
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT: {
+         VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *features =
+            (VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *)ext;
+         features->imageSlicedViewOf3D = true;
+         break;
+      }
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: {
          VkPhysicalDeviceSubgroupSizeControlFeatures *features =
             (VkPhysicalDeviceSubgroupSizeControlFeatures *)ext;
diff --git a/src/gallium/frontends/lavapipe/lvp_image.c 
b/src/gallium/frontends/lavapipe/lvp_image.c
index 5200e5ed7ba..d87c5fd523f 100644
--- a/src/gallium/frontends/lavapipe/lvp_image.c
+++ b/src/gallium/frontends/lavapipe/lvp_image.c
@@ -250,8 +250,8 @@ lvp_create_imageview(const struct lvp_image_view *iv)
       view.format = lvp_vk_format_to_pipe_format(iv->vk.format);
 
    if (iv->vk.view_type == VK_IMAGE_VIEW_TYPE_3D) {
-      view.u.tex.first_layer = 0;
-      view.u.tex.last_layer = iv->vk.extent.depth - 1;
+      view.u.tex.first_layer = iv->vk.storage.slice_offset;
+      view.u.tex.last_layer = view.u.tex.first_layer + 
iv->vk.storage.slice_count - 1;
    } else {
       view.u.tex.first_layer = iv->vk.base_array_layer,
       view.u.tex.last_layer = iv->vk.base_array_layer + iv->vk.layer_count - 1;

Reply via email to