v3dv: expose VK_KHR_shader_float_controls
authorIago Toral Quiroga <itoral@igalia.com>
Tue, 10 May 2022 10:53:08 +0000 (12:53 +0200)
committerMarge Bot <emma+marge@anholt.net>
Wed, 11 May 2022 09:12:27 +0000 (09:12 +0000)
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16424>

docs/features.txt
src/broadcom/vulkan/v3dv_device.c
src/broadcom/vulkan/v3dv_pipeline.c

index b10fc19..10fe936 100644 (file)
@@ -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)
index b01b726..accd2d9 100644 (file)
@@ -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");
index c3dbac5..ed03fa8 100644 (file)
@@ -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,