Mesa (main): anv: Advertise support for VK_EXT_shader_atomic_float2

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 21 20:33:04 UTC 2021


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

Author: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Date:   Fri May  7 11:41:13 2021 -0700

anv: Advertise support for VK_EXT_shader_atomic_float2

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11981>

---

 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 e7d6232f490..35672fdbc26 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 9d79ddb7c64..77d1e6a0b6a 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 c57a0321486..52d819aad6f 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 8e0767feec6..a3349a591b5 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,



More information about the mesa-commit mailing list