Function Prototype

vkCmdSetFragmentShadingRateEnumNV

Set pipeline fragment shading rate dynamically for a command buffer using enums
primary / secondary
both
graphics
state

To dynamically set the pipeline fragment shading rate and combiner operation, call:

void vkCmdSetFragmentShadingRateEnumNV(
    VkCommandBuffer           commandBuffer,
    VkFragmentShadingRateNV                     shadingRate,
    const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);

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 VkPipelineFragmentShadingRateEnumStateCreateInfoNV values used to create the currently active pipeline.

This command allows specifying additional shading rates beyond those supported by vkCmdSetFragmentShadingRateKHR. For more information, refer to the VK_NV_fragment_shading_rate_enums appendix.

Valid Usage

VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04576

If pipelineFragmentShadingRate is not enabled, shadingRatemust be VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV

VUID-vkCmdSetFragmentShadingRateEnumNV-supersampleFragmentShadingRates-04577

If supersampleFragmentShadingRates is not enabled, shadingRate must not be VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV, VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV, VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV, or VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV

VUID-vkCmdSetFragmentShadingRateEnumNV-noInvocationFragmentShadingRates-04578

If noInvocationFragmentShadingRates is not enabled, shadingRate must not be VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV

VUID-vkCmdSetFragmentShadingRateEnumNV-primitiveFragmentShadingRate-04581

If the primitiveFragmentShadingRate feature is not enabled, combinerOps[0] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR

VUID-vkCmdSetFragmentShadingRateEnumNV-attachmentFragmentShadingRate-04582

If the attachmentFragmentShadingRate feature is not enabled, combinerOps[1] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR

VUID-vkCmdSetFragmentShadingRateEnumNV-fragmentSizeNonTrivialCombinerOps-04583

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

Valid Usage (Implicit)

VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support graphics operations

VUID-vkCmdSetFragmentShadingRateEnumNV-videocoding

This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized ::