## C Specification

The members of the VkPhysicalDeviceFloatControlsPropertiesKHR structure describe the following implementation-dependent limits:

typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR {
VkStructureType                         sType;
void*                                   pNext;
VkShaderFloatControlsIndependenceKHR    denormBehaviorIndependence;
VkShaderFloatControlsIndependenceKHR    roundingModeIndependence;
VkBool32                                shaderSignedZeroInfNanPreserveFloat16;
VkBool32                                shaderSignedZeroInfNanPreserveFloat32;
VkBool32                                shaderSignedZeroInfNanPreserveFloat64;
VkBool32                                shaderDenormPreserveFloat16;
VkBool32                                shaderDenormPreserveFloat32;
VkBool32                                shaderDenormPreserveFloat64;
VkBool32                                shaderDenormFlushToZeroFloat16;
VkBool32                                shaderDenormFlushToZeroFloat32;
VkBool32                                shaderDenormFlushToZeroFloat64;
VkBool32                                shaderRoundingModeRTEFloat16;
VkBool32                                shaderRoundingModeRTEFloat32;
VkBool32                                shaderRoundingModeRTEFloat64;
VkBool32                                shaderRoundingModeRTZFloat16;
VkBool32                                shaderRoundingModeRTZFloat32;
VkBool32                                shaderRoundingModeRTZFloat64;
} VkPhysicalDeviceFloatControlsPropertiesKHR;

## Members

• denormBehaviorIndependence is a VkShaderFloatControlsIndependenceKHR value indicating whether, and how, denorm behavior can be set independently for different bit widths.

• roundingModeIndependence is a VkShaderFloatControlsIndependenceKHR value indicating whether, and how, rounding modes can be set independently for different bit widths.

• shaderSignedZeroInfNanPreserveFloat16 is a boolean value indicating whether sign of a zero, Nans and $$\pm\infty$$ can be preserved in 16-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can be used for 16-bit floating-point types.

• shaderSignedZeroInfNanPreserveFloat32 is a boolean value indicating whether sign of a zero, Nans and $$\pm\infty$$ can be preserved in 32-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can be used for 32-bit floating-point types.

• shaderSignedZeroInfNanPreserveFloat64 is a boolean value indicating whether sign of a zero, Nans and $$\pm\infty$$ can be preserved in 64-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can be used for 64-bit floating-point types.

• shaderDenormPreserveFloat16 is a boolean value indicating whether denormals can be preserved in 16-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can be used for 16-bit floating-point types.

• shaderDenormPreserveFloat32 is a boolean value indicating whether denormals can be preserved in 32-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can be used for 32-bit floating-point types.

• shaderDenormPreserveFloat64 is a boolean value indicating whether denormals can be preserved in 64-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can be used for 64-bit floating-point types.

• shaderDenormFlushToZeroFloat16 is a boolean value indicating whether denormals can be flushed to zero in 16-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can be used for 16-bit floating-point types.

• shaderDenormFlushToZeroFloat32 is a boolean value indicating whether denormals can be flushed to zero in 32-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can be used for 32-bit floating-point types.

• shaderDenormFlushToZeroFloat64 is a boolean value indicating whether denormals can be flushed to zero in 64-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can be used for 64-bit floating-point types.

• shaderRoundingModeRTEFloat16 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can be used for 16-bit floating-point types.

• shaderRoundingModeRTEFloat32 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can be used for 32-bit floating-point types.

• shaderRoundingModeRTEFloat64 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can be used for 64-bit floating-point types.

• shaderRoundingModeRTZFloat16 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can be used for 16-bit floating-point types.

• shaderRoundingModeRTZFloat32 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can be used for 32-bit floating-point types.

• shaderRoundingModeRTZFloat64 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can be used for 64-bit floating-point types.

## Description

If the VkPhysicalDeviceFloatControlsPropertiesKHR structure is included in the pNext chain of VkPhysicalDeviceProperties2, it is filled with the implementation-dependent limits.

Valid Usage (Implicit)
• sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

Copyright (c) 2014-2019 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.