lavapipe: add support for KHR_shader_float_controls

These pass all the CTS tests, though not sure how useful they are.

[airlied: these may need some work in the future depending on app expectations]

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12953>
This commit is contained in:
Mike Blumenkrantz
2021-07-06 15:43:54 -04:00
committed by Dave Airlie
parent 0e3fcc20d5
commit a8e123cd1c
2 changed files with 25 additions and 0 deletions

View File

@@ -103,6 +103,7 @@ static const struct vk_device_extension_table lvp_device_extensions_supported =
.KHR_external_fence = true,
.KHR_external_memory = true,
.KHR_external_semaphore = true,
.KHR_shader_float_controls = true,
.KHR_get_memory_requirements2 = true,
#ifdef LVP_USE_WSI_PLATFORM
.KHR_incremental_present = true,
@@ -1065,6 +1066,29 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceProperties2(
properties->independentResolve = false;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR : {
VkPhysicalDeviceFloatControlsPropertiesKHR *properties = (VkPhysicalDeviceFloatControlsPropertiesKHR *)ext;
properties->denormBehaviorIndependence = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR;
properties->roundingModeIndependence = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR;
properties->shaderDenormFlushToZeroFloat16 = false;
properties->shaderDenormPreserveFloat16 = false;
properties->shaderRoundingModeRTEFloat16 = true;
properties->shaderRoundingModeRTZFloat16 = false;
properties->shaderSignedZeroInfNanPreserveFloat16 = true;
properties->shaderDenormFlushToZeroFloat32 = false;
properties->shaderDenormPreserveFloat32 = false;
properties->shaderRoundingModeRTEFloat32 = true;
properties->shaderRoundingModeRTZFloat32 = false;
properties->shaderSignedZeroInfNanPreserveFloat32 = true;
properties->shaderDenormFlushToZeroFloat64 = false;
properties->shaderDenormPreserveFloat64 = false;
properties->shaderRoundingModeRTEFloat64 = true;
properties->shaderRoundingModeRTZFloat64 = false;
properties->shaderSignedZeroInfNanPreserveFloat64 = true;
break;
}
default:
break;
}

View File

@@ -483,6 +483,7 @@ lvp_shader_compile_to_ir(struct lvp_pipeline *pipeline,
.int16 = true,
.int64 = (pdevice->pscreen->get_param(pdevice->pscreen, PIPE_CAP_INT64) == 1),
.tessellation = true,
.float_controls = true,
.image_ms_array = true,
.image_read_without_format = true,
.image_write_without_format = true,