C Specification
The VkPhysicalDeviceFloatControlsProperties
structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceFloatControlsProperties {
VkStructureType sType;
void* pNext;
VkShaderFloatControlsIndependence denormBehaviorIndependence;
VkShaderFloatControlsIndependence 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;
} VkPhysicalDeviceFloatControlsProperties;
or the equivalent
// Provided by VK_KHR_shader_float_controls
typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
Members

sType
is the type of this structure. 
pNext
isNULL
or a pointer to a structure extending this structure. :anchorprefix: extension 
[[{anchorprefix}featuresdenormBehaviorIndependence]]
denormBehaviorIndependence
is a VkShaderFloatControlsIndependence value indicating whether, and how, denorm behavior can be set independently for different bit widths. 
[[{anchorprefix}featuresroundingModeIndependence]]
roundingModeIndependence
is a VkShaderFloatControlsIndependence value indicating whether, and how, rounding modes can be set independently for different bit widths. 
[[{anchorprefix}limitsshaderSignedZeroInfNanPreserveFloat16]]
shaderSignedZeroInfNanPreserveFloat16
is a boolean value indicating whether sign of a zero, Nans and $±∞$ can be preserved in 16bit floatingpoint computations. It also indicates whether theSignedZeroInfNanPreserve
execution mode can be used for 16bit floatingpoint types. 
[[{anchorprefix}limitsshaderSignedZeroInfNanPreserveFloat32]]
shaderSignedZeroInfNanPreserveFloat32
is a boolean value indicating whether sign of a zero, Nans and $±∞$ can be preserved in 32bit floatingpoint computations. It also indicates whether theSignedZeroInfNanPreserve
execution mode can be used for 32bit floatingpoint types. 
[[{anchorprefix}limitsshaderSignedZeroInfNanPreserveFloat64]]
shaderSignedZeroInfNanPreserveFloat64
is a boolean value indicating whether sign of a zero, Nans and $±∞$ can be preserved in 64bit floatingpoint computations. It also indicates whether theSignedZeroInfNanPreserve
execution mode can be used for 64bit floatingpoint types. 
[[{anchorprefix}limitsshaderDenormPreserveFloat16]]
shaderDenormPreserveFloat16
is a boolean value indicating whether denormals can be preserved in 16bit floatingpoint computations. It also indicates whether theDenormPreserve
execution mode can be used for 16bit floatingpoint types. 
[[{anchorprefix}limitsshaderDenormPreserveFloat32]]
shaderDenormPreserveFloat32
is a boolean value indicating whether denormals can be preserved in 32bit floatingpoint computations. It also indicates whether theDenormPreserve
execution mode can be used for 32bit floatingpoint types. 
[[{anchorprefix}limitsshaderDenormPreserveFloat64]]
shaderDenormPreserveFloat64
is a boolean value indicating whether denormals can be preserved in 64bit floatingpoint computations. It also indicates whether theDenormPreserve
execution mode can be used for 64bit floatingpoint types. 
[[{anchorprefix}limitsshaderDenormFlushToZeroFloat16]]
shaderDenormFlushToZeroFloat16
is a boolean value indicating whether denormals can be flushed to zero in 16bit floatingpoint computations. It also indicates whether theDenormFlushToZero
execution mode can be used for 16bit floatingpoint types. 
[[{anchorprefix}limitsshaderDenormFlushToZeroFloat32]]
shaderDenormFlushToZeroFloat32
is a boolean value indicating whether denormals can be flushed to zero in 32bit floatingpoint computations. It also indicates whether theDenormFlushToZero
execution mode can be used for 32bit floatingpoint types. 
[[{anchorprefix}limitsshaderDenormFlushToZeroFloat64]]
shaderDenormFlushToZeroFloat64
is a boolean value indicating whether denormals can be flushed to zero in 64bit floatingpoint computations. It also indicates whether theDenormFlushToZero
execution mode can be used for 64bit floatingpoint types. 
[[{anchorprefix}limitsshaderRoundingModeRTEFloat16]]
shaderRoundingModeRTEFloat16
is a boolean value indicating whether an implementation supports the roundtonearesteven rounding mode for 16bit floatingpoint arithmetic and conversion instructions. It also indicates whether theRoundingModeRTE
execution mode can be used for 16bit floatingpoint types. 
[[{anchorprefix}limitsshaderRoundingModeRTEFloat32]]
shaderRoundingModeRTEFloat32
is a boolean value indicating whether an implementation supports the roundtonearesteven rounding mode for 32bit floatingpoint arithmetic and conversion instructions. It also indicates whether theRoundingModeRTE
execution mode can be used for 32bit floatingpoint types. 
[[{anchorprefix}limitsshaderRoundingModeRTEFloat64]]
shaderRoundingModeRTEFloat64
is a boolean value indicating whether an implementation supports the roundtonearesteven rounding mode for 64bit floatingpoint arithmetic and conversion instructions. It also indicates whether theRoundingModeRTE
execution mode can be used for 64bit floatingpoint types. 
[[{anchorprefix}limitsshaderRoundingModeRTZFloat16]]
shaderRoundingModeRTZFloat16
is a boolean value indicating whether an implementation supports the roundtowardszero rounding mode for 16bit floatingpoint arithmetic and conversion instructions. It also indicates whether theRoundingModeRTZ
execution mode can be used for 16bit floatingpoint types. 
[[{anchorprefix}limitsshaderRoundingModeRTZFloat32]]
shaderRoundingModeRTZFloat32
is a boolean value indicating whether an implementation supports the roundtowardszero rounding mode for 32bit floatingpoint arithmetic and conversion instructions. It also indicates whether theRoundingModeRTZ
execution mode can be used for 32bit floatingpoint types. 
[[{anchorprefix}limitsshaderRoundingModeRTZFloat64]]
shaderRoundingModeRTZFloat64
is a boolean value indicating whether an implementation supports the roundtowardszero rounding mode for 64bit floatingpoint arithmetic and conversion instructions. It also indicates whether theRoundingModeRTZ
execution mode can be used for 64bit floatingpoint types.
Description
If the VkPhysicalDeviceFloatControlsProperties
structure is included in the pNext
chain of the
VkPhysicalDeviceProperties2 structure passed to
vkGetPhysicalDeviceProperties2, it is filled in with each
corresponding implementationdependent property.
See Also
VkBool32
, VkShaderFloatControlsIndependence, VkStructureType
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.