From e981ed21e36871dd55a10fd1d8a1c94dfec17e03 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 10 May 2022 12:53:08 +0200 Subject: [PATCH] v3dv: expose VK_KHR_shader_float_controls MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Alejandro Piñeiro Part-of: --- docs/features.txt | 2 +- src/broadcom/vulkan/v3dv_device.c | 19 +++++++++++++++++++ src/broadcom/vulkan/v3dv_pipeline.c | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index b10fc19..10fe936 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -457,7 +457,7 @@ Vulkan 1.2 -- all DONE: anv, vn VK_KHR_separate_depth_stencil_layouts DONE (anv, lvp, radv, vn, v3dv, tu) VK_KHR_shader_atomic_int64 DONE (anv/gen9+, lvp, radv, vn) VK_KHR_shader_float16_int8 DONE (anv/gen8+, lvp, radv, tu, vn) - VK_KHR_shader_float_controls DONE (anv/gen8+, lvp, radv, tu, vn) + VK_KHR_shader_float_controls DONE (anv/gen8+, lvp, radv, tu, v3dv, vn) VK_KHR_shader_subgroup_extended_types DONE (anv/gen8+, lvp, radv, tu, vn) VK_KHR_spirv_1_4 DONE (anv, lvp, radv, tu, vn) VK_KHR_timeline_semaphore DONE (anv, lvp, radv, tu, v3dv, vn) diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index b01b726..accd2d9 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -139,6 +139,7 @@ get_device_extensions(const struct v3dv_physical_device *device, .KHR_multiview = true, .KHR_pipeline_executable_properties = true, .KHR_separate_depth_stencil_layouts = true, + .KHR_shader_float_controls = true, .KHR_shader_non_semantic_info = true, .KHR_sampler_mirror_clamp_to_edge = true, .KHR_storage_buffer_storage_class = true, @@ -1557,6 +1558,24 @@ v3dv_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, .independentResolveNone = false, .independentResolve = false, .maxTimelineSemaphoreValueDifference = UINT64_MAX, + + .denormBehaviorIndependence = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, + .roundingModeIndependence = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, + .shaderSignedZeroInfNanPreserveFloat16 = true, + .shaderSignedZeroInfNanPreserveFloat32 = true, + .shaderSignedZeroInfNanPreserveFloat64 = false, + .shaderDenormPreserveFloat16 = true, + .shaderDenormPreserveFloat32 = true, + .shaderDenormPreserveFloat64 = false, + .shaderDenormFlushToZeroFloat16 = false, + .shaderDenormFlushToZeroFloat32 = false, + .shaderDenormFlushToZeroFloat64 = false, + .shaderRoundingModeRTEFloat16 = true, + .shaderRoundingModeRTEFloat32 = true, + .shaderRoundingModeRTEFloat64 = false, + .shaderRoundingModeRTZFloat16 = false, + .shaderRoundingModeRTZFloat32 = false, + .shaderRoundingModeRTZFloat64 = false, }; memset(vk12.driverName, 0, VK_MAX_DRIVER_NAME_SIZE_KHR); snprintf(vk12.driverName, VK_MAX_DRIVER_NAME_SIZE_KHR, "V3DV Mesa"); diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c index c3dbac5..ed03fa8 100644 --- a/src/broadcom/vulkan/v3dv_pipeline.c +++ b/src/broadcom/vulkan/v3dv_pipeline.c @@ -185,6 +185,7 @@ v3dv_DestroyPipeline(VkDevice _device, static const struct spirv_to_nir_options default_spirv_options = { .caps = { .device_group = true, + .float_controls = true, .multiview = true, .storage_8bit = true, .storage_16bit = true, -- 2.7.4