vkCmdSetFragmentShadingRateKHR
To dynamically set the pipeline fragment shading rate and combiner operation, call:
void vkCmdSetFragmentShadingRateKHR(
VkCommandBuffer commandBuffer,
const VkExtent2D* pFragmentSize,
const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
commandBufferis the command buffer into which the command will be recorded.pFragmentSizespecifies the pipeline fragment shading rate for subsequent drawing commands.combinerOpsspecifies a VkFragmentShadingRateCombinerOpKHR determining how the pipeline, primitive, and attachment shading rates are combined for fragments generated by subsequent drawing commands.
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
VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR set in
VkPipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
VkPipelineFragmentShadingRateStateCreateInfoKHR values used to create
the currently active pipeline.
Valid Usage
VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507
If the pipelineFragmentShadingRate feature is not enabled,
pFragmentSize→width must be 1
VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508
If the pipelineFragmentShadingRate feature is not enabled,
pFragmentSize→height must be 1
VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509
One of the pipelineFragmentShadingRate,
primitiveFragmentShadingRate, or
attachmentFragmentShadingRate features must be enabled
VUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510
If the primitiveFragmentShadingRate feature is not enabled,
combinerOps[0] must be
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
VUID-vkCmdSetFragmentShadingRateKHR-attachmentFragmentShadingRate-04511
If the attachmentFragmentShadingRate feature is not enabled,
combinerOps[1] must be
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
VUID-vkCmdSetFragmentShadingRateKHR-fragmentSizeNonTrivialCombinerOps-04512
If the fragmentSizeNonTrivialCombinerOps limit is not supported,
elements of combinerOps must be either
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR or
VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04513
pFragmentSize→width must be greater than or equal to 1
VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04514
pFragmentSize→height must be greater than or equal to 1
VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04515
pFragmentSize→width must be a power-of-two value
VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04516
pFragmentSize→height must be a power-of-two value
VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04517
pFragmentSize→width must be less than or equal to 4
VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04518
pFragmentSize→height must be less than or equal to 4
Valid Usage (Implicit)
VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-parameter
pFragmentSize must be a valid pointer to a valid VkExtent2D structure
VUID-vkCmdSetFragmentShadingRateKHR-combinerOps-parameter
Each element of combinerOps must be a valid VkFragmentShadingRateCombinerOpKHR value
VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-recording
commandBuffer must be in the recording state
VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support graphics operations
VUID-vkCmdSetFragmentShadingRateKHR-videocoding
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 ::