From 5e800ab6f7e61ebfe741a14bcad9247e2a4d1f6a Mon Sep 17 00:00:00 2001 From: Sagar Ghuge Date: Tue, 28 Feb 2023 14:03:48 -0800 Subject: [PATCH] anv: Implement VK_AMD_texture_gather_bias_lod Reviewed-by: Ian Romanick Signed-off-by: Sagar Ghuge Part-of: --- docs/features.txt | 2 +- src/intel/vulkan/anv_device.c | 1 + src/intel/vulkan/anv_formats.c | 9 +++++++++ src/intel/vulkan/anv_pipeline.c | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index e17976d9064..7b3ea4779ca 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -653,7 +653,7 @@ Khronos extensions that are not part of any Vulkan version: VK_AMD_shader_fragment_mask DONE (radv/gfx10.3-) VK_AMD_shader_image_load_store_lod DONE (radv) VK_AMD_shader_trinary_minmax DONE (radv) - VK_AMD_texture_gather_bias_lod DONE (radv) + VK_AMD_texture_gather_bias_lod DONE (anv, radv) VK_ARM_rasterization_order_attachment_access DONE (lvp, tu) VK_EXT_mutable_descriptor_type DONE (anv, lvp, nvk, radv, tu, vn) VK_EXT_swapchain_colorspace DONE (radv, anv, tu) diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index 2b5b92579f6..4390b45c3d4 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -409,6 +409,7 @@ get_device_extensions(const struct anv_physical_device *device, .EXT_vertex_input_dynamic_state = true, .EXT_ycbcr_image_arrays = true, .AMD_buffer_marker = true, + .AMD_texture_gather_bias_lod = device->info.ver >= 20, #if DETECT_OS_ANDROID .ANDROID_external_memory_android_hardware_buffer = true, .ANDROID_native_buffer = true, diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c index 944cacd600d..1fdfa2ed029 100644 --- a/src/intel/vulkan/anv_formats.c +++ b/src/intel/vulkan/anv_formats.c @@ -1591,6 +1591,7 @@ VkResult anv_GetPhysicalDeviceImageFormatProperties2( VkExternalImageFormatProperties *external_props = NULL; VkSamplerYcbcrConversionImageFormatProperties *ycbcr_props = NULL; UNUSED VkAndroidHardwareBufferUsageANDROID *android_usage = NULL; + VkTextureLODGatherFormatPropertiesAMD *texture_lod_gather_props = NULL; VkResult result; bool from_wsi = false; @@ -1631,6 +1632,9 @@ VkResult anv_GetPhysicalDeviceImageFormatProperties2( case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: android_usage = (void *) s; break; + case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: + texture_lod_gather_props = (void *) s; + break; default: anv_debug_ignored_stype(s->sType); break; @@ -1790,6 +1794,11 @@ VkResult anv_GetPhysicalDeviceImageFormatProperties2( } } + if (texture_lod_gather_props) { + texture_lod_gather_props->supportsTextureGatherLODBiasAMD = + physical_device->info.ver >= 20; + } + return VK_SUCCESS; fail: diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index 9ef14b87bc3..7976c72e977 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -145,6 +145,7 @@ anv_shader_stage_to_nir(struct anv_device *device, const bool rt_enabled = ANV_SUPPORT_RT && pdevice->info.has_ray_tracing; const struct spirv_to_nir_options spirv_options = { .caps = { + .amd_image_gather_bias_lod = pdevice->info.ver >= 20, .cooperative_matrix = anv_has_cooperative_matrix(pdevice), .demote_to_helper_invocation = true, .derivative_group = true,