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;