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

Author: Faith Ekstrand <[email protected]>
Date:   Wed Dec  6 18:28:18 2023 -0600

nvk: Advertise VK_KHR_shader_float_controls

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9605
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26557>

---

 docs/features.txt                        |  2 +-
 src/nouveau/vulkan/nvk_physical_device.c | 18 ++++++++++++++++++
 src/nouveau/vulkan/nvk_shader.c          |  1 +
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/docs/features.txt b/docs/features.txt
index f73fda1c4e5..d577e3ef799 100644
--- a/docs/features.txt
+++ b/docs/features.txt
@@ -460,7 +460,7 @@ Vulkan 1.2 -- all DONE: anv, tu, vn
   VK_KHR_separate_depth_stencil_layouts                 DONE (anv, dzn, hasvk, 
lvp, nvk, radv, tu, v3dv, vn)
   VK_KHR_shader_atomic_int64                            DONE (anv/gen9+, lvp, 
nvk, radv, vn)
   VK_KHR_shader_float16_int8                            DONE (anv/gen8+, dzn, 
hasvk, lvp, radv, tu, vn)
-  VK_KHR_shader_float_controls                          DONE (anv/gen8+, dzn, 
hasvk, lvp, radv, tu, v3dv, vn)
+  VK_KHR_shader_float_controls                          DONE (anv/gen8+, dzn, 
hasvk, lvp, nvk, radv, tu, v3dv, vn)
   VK_KHR_shader_subgroup_extended_types                 DONE (anv/gen8+, 
hasvk, lvp, radv, tu, vn)
   VK_KHR_spirv_1_4                                      DONE (anv, dzn, hasvk, 
lvp, nvk, radv, tu, v3dv, vn)
   VK_KHR_timeline_semaphore                             DONE (anv, dzn, hasvk, 
lvp, nvk, pvr, radv, tu, v3dv, vn)
diff --git a/src/nouveau/vulkan/nvk_physical_device.c 
b/src/nouveau/vulkan/nvk_physical_device.c
index c407725c835..213fd170076 100644
--- a/src/nouveau/vulkan/nvk_physical_device.c
+++ b/src/nouveau/vulkan/nvk_physical_device.c
@@ -116,6 +116,7 @@ nvk_get_device_extensions(const struct nv_device_info *info,
                                  nvk_use_nak(info),
       .KHR_shader_clock = true,
       .KHR_shader_draw_parameters = true,
+      .KHR_shader_float_controls = true,
       .KHR_shader_float16_int8 = true,
       .KHR_shader_integer_dot_product = true,
       .KHR_shader_non_semantic_info = true,
@@ -654,6 +655,23 @@ nvk_get_device_properties(const struct nvk_instance 
*instance,
          .subminor = 0,
          .patch = 0,
       },
+      .denormBehaviorIndependence = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+      .roundingModeIndependence = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+      .shaderSignedZeroInfNanPreserveFloat16 = true,
+      .shaderSignedZeroInfNanPreserveFloat32 = true,
+      .shaderSignedZeroInfNanPreserveFloat64 = true,
+      .shaderDenormPreserveFloat16 = true,
+      .shaderDenormPreserveFloat32 = true,
+      .shaderDenormPreserveFloat64 = true,
+      .shaderDenormFlushToZeroFloat16 = true,
+      .shaderDenormFlushToZeroFloat32 = true,
+      .shaderDenormFlushToZeroFloat64 = true,
+      .shaderRoundingModeRTEFloat16 = true,
+      .shaderRoundingModeRTEFloat32 = true,
+      .shaderRoundingModeRTEFloat64 = true,
+      .shaderRoundingModeRTZFloat16 = true,
+      .shaderRoundingModeRTZFloat32 = true,
+      .shaderRoundingModeRTZFloat64 = true,
       .maxUpdateAfterBindDescriptorsInAllPools = UINT32_MAX,
       .shaderUniformBufferArrayNonUniformIndexingNative = false,
       .shaderSampledImageArrayNonUniformIndexingNative = info->cls_eng3d >= 
TURING_A,
diff --git a/src/nouveau/vulkan/nvk_shader.c b/src/nouveau/vulkan/nvk_shader.c
index b798daa8a36..2ab8cf1edbb 100644
--- a/src/nouveau/vulkan/nvk_shader.c
+++ b/src/nouveau/vulkan/nvk_shader.c
@@ -140,6 +140,7 @@ nvk_physical_device_spirv_options(const struct 
nvk_physical_device *pdev,
          .descriptor_indexing = true,
          .device_group = true,
          .draw_parameters = true,
+         .float_controls = true,
          .fragment_barycentric = true,
          .geometry_streams = true,
          .image_atomic_int64 = true,

Reply via email to