Class KHRFragmentShadingRate
Up to three methods are available to the application to change the fragment shading rate:
- Pipeline Fragment Shading Rate, which allows the specification of a rate per-draw.
- Primitive Fragment Shading Rate, which allows the specification of a rate per primitive, specified during shading.
- Attachment Fragment Shading Rate, which allows the specification of a rate per-region of the framebuffer, specified in a specialized image attachment.
Additionally, these rates can all be specified and combined in order to adjust the overall detail in the image at each point.
This functionality can be used to focus shading efforts where higher levels of detail are needed in some parts of a scene compared to others. This can be particularly useful in high resolution rendering, or for XR contexts.
This extension also adds support for the SPV_KHR_fragment_shading_rate extension which enables setting the primitive fragment shading rate, and allows querying the final shading rate from a fragment shader.
- Name String
VK_KHR_fragment_shading_rate- Extension Type
- Device extension
- Registered Extension Number
- 227
- Revision
- 2
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2or Version 1.1 andVK_KHR_create_renderpass2or Version 1.2- API Interactions
- Interacts with VK_VERSION_1_3
- Interacts with VK_KHR_dynamic_rendering
- Interacts with VK_KHR_format_feature_flags2
- SPIR-V Dependencies
- Contact
- Tobias Hector tobski
- Extension Proposal
- VK_KHR_fragment_shading_rate
Other Extension Metadata
- Last Modified Date
- 2021-09-30
- Interactions and External Dependencies
- This extension provides API support for
GL_EXT_fragment_shading_rate
- This extension provides API support for
- Contributors
- Tobias Hector, AMD
- Guennadi Riguer, AMD
- Matthaeus Chajdas, AMD
- Pat Brown, Nvidia
- Matthew Netsch, Qualcomm
- Slawomir Grajewski, Intel
- Jan-Harald Fredriksen, Arm
- Jeff Bolz, Nvidia
- Arseny Kapoulkine, Roblox
- Contributors to the VK_NV_shading_rate_image specification
- Contributors to the VK_EXT_fragment_density_map specification
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intExtendsVkAccessFlagBits.static final intExtendsVkDynamicState.static final longExtendsVkFormatFeatureFlagBits2.static final intExtendsVkFormatFeatureFlagBits.static final intVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedstatic final intVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedstatic final intVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedstatic final intVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedstatic final intVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedstatic final intExtendsVkImageLayout.static final intExtendsVkImageUsageFlagBits.static final StringThe extension name.static final intThe extension specification version.static final intExtendsVkPipelineCreateFlagBits.static final intExtendsVkPipelineCreateFlagBits.static final intExtendsVkPipelineStageFlagBits.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidnvkCmdSetFragmentShadingRateKHR(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, long pFragmentSize, long combinerOps) Unsafe version of:CmdSetFragmentShadingRateKHRstatic intnvkGetPhysicalDeviceFragmentShadingRatesKHR(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice, long pFragmentShadingRateCount, long pFragmentShadingRates) Unsafe version of:GetPhysicalDeviceFragmentShadingRatesKHRstatic voidvkCmdSetFragmentShadingRateKHR(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, VkExtent2D pFragmentSize, int[] combinerOps) Array version of:CmdSetFragmentShadingRateKHRstatic voidvkCmdSetFragmentShadingRateKHR(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, VkExtent2D pFragmentSize, IntBuffer combinerOps) Set pipeline fragment shading rate and combiner operation dynamically for a command buffer.static intvkGetPhysicalDeviceFragmentShadingRatesKHR(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice, int[] pFragmentShadingRateCount, @Nullable VkPhysicalDeviceFragmentShadingRateKHR.Buffer pFragmentShadingRates) Array version of:GetPhysicalDeviceFragmentShadingRatesKHRstatic intvkGetPhysicalDeviceFragmentShadingRatesKHR(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice, IntBuffer pFragmentShadingRateCount, @Nullable VkPhysicalDeviceFragmentShadingRateKHR.Buffer pFragmentShadingRates) Get available shading rates for a physical device.
-
Field Details
-
VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION
public static final int VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME
The extension name.- See Also:
-
VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
public static final int VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHRExtendsVkImageLayout.- See Also:
-
VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
public static final int VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRExtendsVkDynamicState.- See Also:
-
VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
public static final int VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHRExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHRSTRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
- See Also:
-
VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR
public static final int VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHRExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHRSTRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHRExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHRSTRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHRExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHRSTRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHRExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHRSTRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
- See Also:
-
VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
public static final int VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHRExtendsVkAccessFlagBits.- See Also:
-
VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
public static final int VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRExtendsVkImageUsageFlagBits.- See Also:
-
VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
public static final int VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRExtendsVkPipelineStageFlagBits.- See Also:
-
VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
public static final int VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRExtendsVkFormatFeatureFlagBits.- See Also:
-
VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
public static final long VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRExtendsVkFormatFeatureFlagBits2.- See Also:
-
VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
public static final int VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHRExtendsVkStructureType.- See Also:
-
VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
public static final int VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRExtendsVkPipelineCreateFlagBits.Enum values:
- See Also:
-
VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
public static final int VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRExtendsVkPipelineCreateFlagBits.Enum values:
- See Also:
-
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedDescription
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Bxy.FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = min(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = max(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy*Bxy.
where
combine(Axy,Bxy)is the combine operation, andAxyandBxyare the inputs to the operation.If
fragmentShadingRateStrictMultiplyCombinerisFALSE, usingFRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRwith values of 1 for both A and B in the same dimension results in the value 2 being produced for that dimension. See the definition offragmentShadingRateStrictMultiplyCombinerfor more information.These operations are performed in a component-wise fashion.
See Also
VkPipelineFragmentShadingRateEnumStateCreateInfoNV,VkPipelineFragmentShadingRateStateCreateInfoKHR,CmdSetFragmentShadingRateEnumNV,CmdSetFragmentShadingRateKHR- See Also:
-
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHRVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedDescription
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Bxy.FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = min(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = max(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy*Bxy.
where
combine(Axy,Bxy)is the combine operation, andAxyandBxyare the inputs to the operation.If
fragmentShadingRateStrictMultiplyCombinerisFALSE, usingFRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRwith values of 1 for both A and B in the same dimension results in the value 2 being produced for that dimension. See the definition offragmentShadingRateStrictMultiplyCombinerfor more information.These operations are performed in a component-wise fashion.
See Also
VkPipelineFragmentShadingRateEnumStateCreateInfoNV,VkPipelineFragmentShadingRateStateCreateInfoKHR,CmdSetFragmentShadingRateEnumNV,CmdSetFragmentShadingRateKHR- See Also:
-
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR
public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHRVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedDescription
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Bxy.FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = min(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = max(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy*Bxy.
where
combine(Axy,Bxy)is the combine operation, andAxyandBxyare the inputs to the operation.If
fragmentShadingRateStrictMultiplyCombinerisFALSE, usingFRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRwith values of 1 for both A and B in the same dimension results in the value 2 being produced for that dimension. See the definition offragmentShadingRateStrictMultiplyCombinerfor more information.These operations are performed in a component-wise fashion.
See Also
VkPipelineFragmentShadingRateEnumStateCreateInfoNV,VkPipelineFragmentShadingRateStateCreateInfoKHR,CmdSetFragmentShadingRateEnumNV,CmdSetFragmentShadingRateKHR- See Also:
-
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR
public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHRVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedDescription
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Bxy.FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = min(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = max(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy*Bxy.
where
combine(Axy,Bxy)is the combine operation, andAxyandBxyare the inputs to the operation.If
fragmentShadingRateStrictMultiplyCombinerisFALSE, usingFRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRwith values of 1 for both A and B in the same dimension results in the value 2 being produced for that dimension. See the definition offragmentShadingRateStrictMultiplyCombinerfor more information.These operations are performed in a component-wise fashion.
See Also
VkPipelineFragmentShadingRateEnumStateCreateInfoNV,VkPipelineFragmentShadingRateStateCreateInfoKHR,CmdSetFragmentShadingRateEnumNV,CmdSetFragmentShadingRateKHR- See Also:
-
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR
public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combinedDescription
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Bxy.FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = min(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = max(Axy,Bxy).FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRspecifies a combiner operation ofcombine(Axy,Bxy) = Axy*Bxy.
where
combine(Axy,Bxy)is the combine operation, andAxyandBxyare the inputs to the operation.If
fragmentShadingRateStrictMultiplyCombinerisFALSE, usingFRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHRwith values of 1 for both A and B in the same dimension results in the value 2 being produced for that dimension. See the definition offragmentShadingRateStrictMultiplyCombinerfor more information.These operations are performed in a component-wise fashion.
See Also
VkPipelineFragmentShadingRateEnumStateCreateInfoNV,VkPipelineFragmentShadingRateStateCreateInfoKHR,CmdSetFragmentShadingRateEnumNV,CmdSetFragmentShadingRateKHR- See Also:
-
-
Method Details
-
nvkGetPhysicalDeviceFragmentShadingRatesKHR
public static int nvkGetPhysicalDeviceFragmentShadingRatesKHR(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice, long pFragmentShadingRateCount, long pFragmentShadingRates) Unsafe version of:GetPhysicalDeviceFragmentShadingRatesKHR- Parameters:
pFragmentShadingRateCount- a pointer to an integer related to the number of fragment shading rates available or queried, as described below.
-
vkGetPhysicalDeviceFragmentShadingRatesKHR
public static int vkGetPhysicalDeviceFragmentShadingRatesKHR(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice, IntBuffer pFragmentShadingRateCount, @Nullable VkPhysicalDeviceFragmentShadingRateKHR.Buffer pFragmentShadingRates) Get available shading rates for a physical device.C Specification
To query available shading rates, call:
VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR( VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);Description
If
pFragmentShadingRatesisNULL, then the number of fragment shading rates available is returned inpFragmentShadingRateCount. Otherwise,pFragmentShadingRateCountmust point to a variable set by the application to the number of elements in thepFragmentShadingRatesarray, and on return the variable is overwritten with the number of structures actually written topFragmentShadingRates. IfpFragmentShadingRateCountis less than the number of fragment shading rates available, at mostpFragmentShadingRateCountstructures will be written, andINCOMPLETEwill be returned instead ofSUCCESS, to indicate that not all the available fragment shading rates were returned.The returned array of fragment shading rates must be ordered from largest
fragmentSize.widthvalue to smallest, and each set of fragment shading rates with the samefragmentSize.widthvalue must be ordered from largestfragmentSize.heightto smallest. Any two entries in the array must not have the samefragmentSizevalues.For any entry in the array, the following rules also apply:
- The value of
fragmentSize.widthmust be less than or equal tomaxFragmentSize.width. - The value of
fragmentSize.widthmust be greater than or equal to 1. - The value of
fragmentSize.widthmust be a power-of-two. - The value of
fragmentSize.heightmust be less than or equal tomaxFragmentSize.height. - The value of
fragmentSize.heightmust be greater than or equal to 1. - The value of
fragmentSize.heightmust be a power-of-two. - The highest sample count in
sampleCountsmust be less than or equal tomaxFragmentShadingRateRasterizationSamples. - The product of
fragmentSize.width,fragmentSize.height, and the highest sample count insampleCountsmust be less than or equal tomaxFragmentShadingRateCoverageSamples.
Implementations must support at least the following shading rates:
sampleCountsfragmentSizeSAMPLE_COUNT_1_BIT|SAMPLE_COUNT_4_BIT{2,2} SAMPLE_COUNT_1_BIT|SAMPLE_COUNT_4_BIT{2,1} ~0 {1,1} If
framebufferColorSampleCounts, includesSAMPLE_COUNT_2_BIT, the required rates must also includeSAMPLE_COUNT_2_BIT.Note
Including the {1,1} fragment size is done for completeness; it has no actual effect on the support of rendering without setting the fragment size. All sample counts and render pass transforms are supported for this rate.
The returned set of fragment shading rates must be returned in the native (rotated) coordinate system. For rasterization using render pass
transformnot equal toSURFACE_TRANSFORM_IDENTITY_BIT_KHR, the application must transform the returned fragment shading rates into the current (unrotated) coordinate system to get the supported rates for that transform.Note
For example, consider an implementation returning support for 4x2, but not 2x4 in the set of supported fragment shading rates. This means that for transforms
SURFACE_TRANSFORM_ROTATE_90_BIT_KHRandSURFACE_TRANSFORM_ROTATE_270_BIT_KHR, 2x4 is a supported rate, but 4x2 is an unsupported rate.Valid Usage (Implicit)
physicalDevicemust be a validVkPhysicalDevicehandlepFragmentShadingRateCountmust be a valid pointer to auint32_tvalue- If the value referenced by
pFragmentShadingRateCountis not 0, andpFragmentShadingRatesis notNULL,pFragmentShadingRatesmust be a valid pointer to an array ofpFragmentShadingRateCountVkPhysicalDeviceFragmentShadingRateKHRstructures
Return Codes
- On success, this command returns
- On failure, this command returns
See Also
- Parameters:
physicalDevice- the handle to the physical device whose properties will be queried.pFragmentShadingRateCount- a pointer to an integer related to the number of fragment shading rates available or queried, as described below.pFragmentShadingRates- eitherNULLor a pointer to an array ofVkPhysicalDeviceFragmentShadingRateKHRstructures.
- The value of
-
nvkCmdSetFragmentShadingRateKHR
public static void nvkCmdSetFragmentShadingRateKHR(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, long pFragmentSize, long combinerOps) Unsafe version of:CmdSetFragmentShadingRateKHR -
vkCmdSetFragmentShadingRateKHR
public static void vkCmdSetFragmentShadingRateKHR(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, VkExtent2D pFragmentSize, IntBuffer combinerOps) Set pipeline fragment shading rate and combiner operation dynamically for a command buffer.C Specification
To dynamically set the pipeline fragment shading rate and combiner operation, call:
void vkCmdSetFragmentShadingRateKHR( VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);Description
This command sets the pipeline fragment shading rate and combiner operation for subsequent drawing commands when drawing using shader objects, or when the graphics pipeline is created with
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRset inVkPipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by theVkPipelineFragmentShadingRateStateCreateInfoKHRvalues used to create the currently active pipeline.Valid Usage
- If the
pipelineFragmentShadingRatefeature is not enabled,pFragmentSize→widthmust be 1 - If the
pipelineFragmentShadingRatefeature is not enabled,pFragmentSize→heightmust be 1 - One of the
pipelineFragmentShadingRate,primitiveFragmentShadingRate, orattachmentFragmentShadingRatefeatures must be enabled - If the
primitiveFragmentShadingRatefeature is not enabled,combinerOps[0] must beFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR - If the
attachmentFragmentShadingRatefeature is not enabled,combinerOps[1] must beFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR - If the
fragmentSizeNonTrivialCombinerOpslimit is not supported, elements ofcombinerOpsmust be eitherFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRorFRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR pFragmentSize→widthmust be greater than or equal to 1pFragmentSize→heightmust be greater than or equal to 1pFragmentSize→widthmust be a power-of-two valuepFragmentSize→heightmust be a power-of-two valuepFragmentSize→widthmust be less than or equal to 4pFragmentSize→heightmust be less than or equal to 4
Valid Usage (Implicit)
commandBuffermust be a validVkCommandBufferhandlepFragmentSizemust be a valid pointer to a validVkExtent2Dstructure- Each element of
combinerOpsmust be a validVkFragmentShadingRateCombinerOpKHRvalue commandBuffermust be in the recording state- The
VkCommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
Command Buffer Levels Render Pass Scope Video Coding Scope Supported Queue Types Command Type Primary Secondary Both Outside Graphics State See Also
- Parameters:
commandBuffer- the command buffer into which the command will be recorded.pFragmentSize- specifies the pipeline fragment shading rate for subsequent drawing commands.combinerOps- specifies aVkFragmentShadingRateCombinerOpKHRdetermining how the pipeline, primitive, and attachment shading rates are combined for fragments generated by subsequent drawing commands.
- If the
-
vkGetPhysicalDeviceFragmentShadingRatesKHR
public static int vkGetPhysicalDeviceFragmentShadingRatesKHR(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice, int[] pFragmentShadingRateCount, @Nullable VkPhysicalDeviceFragmentShadingRateKHR.Buffer pFragmentShadingRates) Array version of:GetPhysicalDeviceFragmentShadingRatesKHR -
vkCmdSetFragmentShadingRateKHR
public static void vkCmdSetFragmentShadingRateKHR(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, VkExtent2D pFragmentSize, int[] combinerOps) Array version of:CmdSetFragmentShadingRateKHR
-