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,
