VK_EXT_extended_dynamic_state3(3)

# VK_EXT_extended_dynamic_state3(3) Manual Page

## Name

VK_EXT_extended_dynamic_state3 - device extension

Loading… please wait.

## Registered Extension Number

456

## Revision

2

## Extension and Version Dependencies

VK_KHR_get_physical_device_properties2

## Contact

- Piers Daniell pdaniell-nv

## Extension Proposal

VK_EXT_extended_dynamic_state3

## Other Extension Metadata

Last Modified Date

  2022-09-02

IP Status

  No known IP claims.

Contributors

  - Daniel Story, Nintendo

  - Jamie Madill, Google

  - Jan-Harald Fredriksen, Arm

  - Faith Ekstrand, Collabora

  - Mike Blumenkrantz, Valve

  - Ricardo Garcia, Igalia

  - Samuel Pitoiset, Valve

  - Shahbaz Youssefi, Google

  - Stu Smith, AMD

  - Tapani Pälli, Intel

## Description

This extension adds almost all of the remaining pipeline state as dynamic state to help applications further reduce the number of monolithic pipelines they need to create and bind.

## New Commands

- vkCmdSetAlphaToCoverageEnableEXT

- vkCmdSetAlphaToOneEnableEXT

- vkCmdSetColorBlendAdvancedEXT

- vkCmdSetColorBlendEnableEXT

- vkCmdSetColorBlendEquationEXT

- vkCmdSetColorWriteMaskEXT

- vkCmdSetConservativeRasterizationModeEXT

- vkCmdSetCoverageModulationModeNV

- vkCmdSetCoverageModulationTableEnableNV

- vkCmdSetCoverageModulationTableNV

- vkCmdSetCoverageReductionModeNV

- vkCmdSetCoverageToColorEnableNV

- vkCmdSetCoverageToColorLocationNV

- vkCmdSetDepthClampEnableEXT

- vkCmdSetDepthClipEnableEXT

- vkCmdSetDepthClipNegativeOneToOneEXT

- vkCmdSetExtraPrimitiveOverestimationSizeEXT

- vkCmdSetLineRasterizationModeEXT

- vkCmdSetLineStippleEnableEXT

- vkCmdSetLogicOpEnableEXT

- vkCmdSetPolygonModeEXT

- vkCmdSetProvokingVertexModeEXT

- vkCmdSetRasterizationSamplesEXT

- vkCmdSetRasterizationStreamEXT

- vkCmdSetRepresentativeFragmentTestEnableNV

- vkCmdSetSampleLocationsEnableEXT

- vkCmdSetSampleMaskEXT

- vkCmdSetShadingRateImageEnableNV

- vkCmdSetTessellationDomainOriginEXT

- vkCmdSetViewportSwizzleNV

- vkCmdSetViewportWScalingEnableNV

## New Structures

- VkColorBlendAdvancedEXT

- VkColorBlendEquationEXT

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceExtendedDynamicState3FeaturesEXT

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceExtendedDynamicState3PropertiesEXT

## New Enum Constants

- `VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME`

- `VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION`

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT`

  - `VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT`

  - `VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT`

  - `VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT`

  - `VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV`

  - `VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV`

  - `VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV`

  - `VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV`

  - `VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV`

  - `VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV`

  - `VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT`

  - `VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT`

  - `VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT`

  - `VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_POLYGON_MODE_EXT`

  - `VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT`

  - `VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT`

  - `VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT`

  - `VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV`

  - `VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_SAMPLE_MASK_EXT`

  - `VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV`

  - `VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT`

  - `VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV`

  - `VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT`

## Issues

1) What about the VkPipelineMultisampleStateCreateInfo state `sampleShadingEnable` and `minSampleShading`?

UNRESOLVED

  - `sampleShadingEnable` and `minSampleShading` are required when compiling the fragment shader, and it is not meaningful to set them dynamically since they always need to match the fragment shader state, so this hardware state may as well just come from the pipeline with the fragment shader.

## Version History

- Revision 2, 2022-07-18 (Piers Daniell)

  - Added rasterizationSamples

- Revision 1, 2022-05-18 (Piers Daniell)

  - Internal revisions

## See Also

VkColorBlendAdvancedEXT, VkColorBlendEquationEXT, VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, vkCmdSetAlphaToCoverageEnableEXT, vkCmdSetAlphaToOneEnableEXT, vkCmdSetColorBlendAdvancedEXT, vkCmdSetColorBlendEnableEXT, vkCmdSetColorBlendEquationEXT, vkCmdSetColorWriteMaskEXT, vkCmdSetConservativeRasterizationModeEXT, vkCmdSetCoverageModulationModeNV, vkCmdSetCoverageModulationTableEnableNV, vkCmdSetCoverageModulationTableNV, vkCmdSetCoverageReductionModeNV, vkCmdSetCoverageToColorEnableNV, vkCmdSetCoverageToColorLocationNV, vkCmdSetDepthClampEnableEXT, vkCmdSetDepthClipEnableEXT, vkCmdSetDepthClipNegativeOneToOneEXT, vkCmdSetExtraPrimitiveOverestimationSizeEXT, vkCmdSetLineRasterizationModeEXT, vkCmdSetLineStippleEnableEXT, vkCmdSetLogicOpEnableEXT, vkCmdSetPolygonModeEXT, vkCmdSetProvokingVertexModeEXT, vkCmdSetRasterizationSamplesEXT, vkCmdSetRasterizationStreamEXT, vkCmdSetRepresentativeFragmentTestEnableNV, vkCmdSetSampleLocationsEnableEXT, vkCmdSetSampleMaskEXT, vkCmdSetShadingRateImageEnableNV, vkCmdSetTessellationDomainOriginEXT, vkCmdSetViewportSwizzleNV, vkCmdSetViewportWScalingEnableNV

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0