From 4dc81cc6318164ca2aaef25bf3dd164c766be6da Mon Sep 17 00:00:00 2001 From: Caio Marcelo de Oliveira Filho Date: Fri, 7 May 2021 11:41:13 -0700 Subject: [PATCH] anv: Advertise support for VK_EXT_shader_atomic_float2 Reviewed-by: Jason Ekstrand Part-of: --- docs/features.txt | 1 + docs/relnotes/new_features.txt | 1 + src/intel/vulkan/anv_device.c | 18 ++++++++++++++++++ src/intel/vulkan/anv_pipeline.c | 1 + 4 files changed, 21 insertions(+) diff --git a/docs/features.txt b/docs/features.txt index e7d6232..35672fd 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -543,6 +543,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_robustness2 DONE (anv, radv, tu) VK_EXT_sample_locations DONE (anv, radv/gfx9-, tu/a650) VK_EXT_shader_atomic_float DONE (anv, radv) + VK_EXT_shader_atomic_float2 DONE (anv/gen9+) VK_EXT_shader_demote_to_helper_invocation DONE (anv, radv, tu) VK_EXT_shader_image_atomic_int64 DONE (radv) VK_EXT_shader_stencil_export DONE (anv/gen9+, lvp, radv, tu) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 9d79ddb..77d1e6a 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -1,3 +1,4 @@ VK_EXT_color_write_enable on lavapipe GL_ARB_texture_filter_anisotropic in llvmpipe Anisotropic texture filtering in lavapipe +VK_EXT_shader_atomic_float2 on Intel diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index c57a032..52d819a 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -303,6 +303,7 @@ get_device_extensions(const struct anv_physical_device *device, .EXT_scalar_block_layout = true, .EXT_separate_stencil_usage = true, .EXT_shader_atomic_float = true, + .EXT_shader_atomic_float2 = device->info.ver >= 9, .EXT_shader_demote_to_helper_invocation = true, .EXT_shader_stencil_export = device->info.ver >= 9, .EXT_shader_subgroup_ballot = true, @@ -1672,6 +1673,23 @@ void anv_GetPhysicalDeviceFeatures2( break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: { + VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *features = (void *)ext; + features->shaderBufferFloat16Atomics = false; + features->shaderBufferFloat16AtomicAdd = false; + features->shaderBufferFloat16AtomicMinMax = false; + features->shaderBufferFloat32AtomicMinMax = pdevice->info.ver >= 9; + features->shaderBufferFloat64AtomicMinMax = false; + features->shaderSharedFloat16Atomics = false; + features->shaderSharedFloat16AtomicAdd = false; + features->shaderSharedFloat16AtomicMinMax = false; + features->shaderSharedFloat32AtomicMinMax = pdevice->info.ver >= 9; + features->shaderSharedFloat64AtomicMinMax = false; + features->shaderImageFloat32AtomicMinMax = false; + features->sparseImageFloat32AtomicMinMax = false; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR: { VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *features = (void *)ext; CORE_FEATURE(1, 2, shaderBufferInt64Atomics); diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index 8e0767f..a3349a5 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -158,6 +158,7 @@ anv_shader_compile_to_nir(struct anv_device *device, .device_group = true, .draw_parameters = true, .float16 = pdevice->info.ver >= 8, + .float32_atomic_min_max = pdevice->info.ver >= 9, .float64 = pdevice->info.ver >= 8, .fragment_shader_sample_interlock = pdevice->info.ver >= 9, .fragment_shader_pixel_interlock = pdevice->info.ver >= 9, -- 2.7.4