radv: Implement VK_EXT_image_view_min_lod
Signed-off-by: Joshua Ashton <joshua@froggi.es> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13820>
This commit is contained in:
parent
d0f217ad80
commit
68ec867181
|
@ -531,6 +531,7 @@ Khronos extensions that are not part of any Vulkan version:
|
|||
VK_EXT_global_priority_query DONE (radv)
|
||||
VK_EXT_image_drm_format_modifier DONE (anv, radv/gfx9+, tu, vn)
|
||||
VK_EXT_image_robustness DONE (anv, radv)
|
||||
VK_EXT_image_view_min_lod DONE (radv)
|
||||
VK_EXT_index_type_uint8 DONE (anv, lvp, radv/gfx8+, v3dv, tu)
|
||||
VK_EXT_inline_uniform_block DONE (anv, radv)
|
||||
VK_EXT_line_rasterization DONE (anv, lvp, radv, tu)
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
lavapipe KHR_dynamic_rendering
|
||||
radv EXT_image_view_min_lod
|
||||
|
|
|
@ -491,6 +491,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device
|
|||
.EXT_host_query_reset = true,
|
||||
.EXT_image_drm_format_modifier = device->rad_info.chip_class >= GFX9,
|
||||
.EXT_image_robustness = true,
|
||||
.EXT_image_view_min_lod = true,
|
||||
.EXT_index_type_uint8 = device->rad_info.chip_class >= GFX8,
|
||||
.EXT_inline_uniform_block = true,
|
||||
.EXT_line_rasterization = true,
|
||||
|
@ -1630,6 +1631,12 @@ radv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||
features->vertexInputDynamicState = true;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: {
|
||||
VkPhysicalDeviceImageViewMinLodFeaturesEXT *features =
|
||||
(VkPhysicalDeviceImageViewMinLodFeaturesEXT *)ext;
|
||||
features->minLod = true;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1934,6 +1934,13 @@ radv_image_view_init(struct radv_image_view *iview, struct radv_device *device,
|
|||
RADV_FROM_HANDLE(radv_image, image, pCreateInfo->image);
|
||||
const VkImageSubresourceRange *range = &pCreateInfo->subresourceRange;
|
||||
uint32_t plane_count = 1;
|
||||
float min_lod = 0.0f;
|
||||
|
||||
const struct VkImageViewMinLodCreateInfoEXT *min_lod_info =
|
||||
vk_find_struct_const(pCreateInfo->pNext, IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT);
|
||||
|
||||
if (min_lod_info)
|
||||
min_lod = min_lod_info->minLod;
|
||||
|
||||
vk_object_base_init(&device->vk, &iview->base, VK_OBJECT_TYPE_IMAGE_VIEW);
|
||||
|
||||
|
@ -2063,10 +2070,10 @@ radv_image_view_init(struct radv_image_view *iview, struct radv_device *device,
|
|||
bool enable_compression = extra_create_info ? extra_create_info->enable_compression : false;
|
||||
for (unsigned i = 0; i < plane_count; ++i) {
|
||||
VkFormat format = vk_format_get_plane_format(iview->vk_format, i);
|
||||
radv_image_view_make_descriptor(iview, device, format, &pCreateInfo->components, 0.0f, false,
|
||||
radv_image_view_make_descriptor(iview, device, format, &pCreateInfo->components, min_lod, false,
|
||||
disable_compression, enable_compression, iview->plane_id + i,
|
||||
i);
|
||||
radv_image_view_make_descriptor(iview, device, format, &pCreateInfo->components, 0.0f, true,
|
||||
radv_image_view_make_descriptor(iview, device, format, &pCreateInfo->components, min_lod, true,
|
||||
disable_compression, enable_compression, iview->plane_id + i,
|
||||
i);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue