# 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

## Ratification Status

Ratified

## Extension and Version Dependencies

VK_KHR_get_physical_device_properties2
or
Vulkan Version 1.1

## API Interactions

- Interacts with VK_VERSION_1_1

- Interacts with VK_EXT_blend_operation_advanced

- Interacts with VK_EXT_conservative_rasterization

- Interacts with VK_EXT_depth_clip_control

- Interacts with VK_EXT_depth_clip_enable

- Interacts with VK_EXT_line_rasterization

- Interacts with VK_EXT_provoking_vertex

- Interacts with VK_EXT_sample_locations

- Interacts with VK_EXT_transform_feedback

- Interacts with VK_KHR_maintenance2

- Interacts with VK_NV_clip_space_w_scaling

- Interacts with VK_NV_coverage_reduction_mode

- Interacts with VK_NV_fragment_coverage_to_color

- Interacts with VK_NV_framebuffer_mixed_samples

- Interacts with VK_NV_representative_fragment_test

- Interacts with VK_NV_shading_rate_image

- Interacts with VK_NV_viewport_swizzle

- Interacts with VkPhysicalDeviceExtendedDynamicState3FeaturesEXT::extendedDynamicState3AlphaToOneEnable

- Interacts with VkPhysicalDeviceExtendedDynamicState3FeaturesEXT::extendedDynamicState3DepthClampEnable

- Interacts with VkPhysicalDeviceExtendedDynamicState3FeaturesEXT::extendedDynamicState3LogicOpEnable

- Interacts with VkPhysicalDeviceExtendedDynamicState3FeaturesEXT::extendedDynamicState3PolygonMode

- Interacts with VkPhysicalDeviceExtendedDynamicState3FeaturesEXT::extendedDynamicState3RasterizationStream

- Interacts with VkPhysicalDeviceExtendedDynamicState3FeaturesEXT::extendedDynamicState3TessellationDomainOrigin

## Contact

- Piers Daniell [GitHub]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

- vkCmdSetColorBlendEnableEXT

- vkCmdSetColorBlendEquationEXT

- vkCmdSetColorWriteMaskEXT

- vkCmdSetDepthClampEnableEXT

- vkCmdSetLogicOpEnableEXT

- vkCmdSetPolygonModeEXT

- vkCmdSetRasterizationSamplesEXT

- vkCmdSetSampleMaskEXT

If VK_EXT_blend_operation_advanced is supported:

- vkCmdSetColorBlendAdvancedEXT

If VK_EXT_conservative_rasterization is supported:

- vkCmdSetConservativeRasterizationModeEXT

- vkCmdSetExtraPrimitiveOverestimationSizeEXT

If VK_EXT_depth_clip_control is supported:

- vkCmdSetDepthClipNegativeOneToOneEXT

If VK_EXT_depth_clip_enable is supported:

- vkCmdSetDepthClipEnableEXT

If VK_EXT_line_rasterization is supported:

- vkCmdSetLineRasterizationModeEXT

- vkCmdSetLineStippleEnableEXT

If VK_EXT_provoking_vertex is supported:

- vkCmdSetProvokingVertexModeEXT

If VK_EXT_sample_locations is supported:

- vkCmdSetSampleLocationsEnableEXT

If VK_EXT_transform_feedback is supported:

- vkCmdSetRasterizationStreamEXT

If VK_KHR_maintenance2 or Vulkan Version 1.1 is supported:

- vkCmdSetTessellationDomainOriginEXT

If VK_NV_clip_space_w_scaling is supported:

- vkCmdSetViewportWScalingEnableNV

If VK_NV_coverage_reduction_mode is supported:

- vkCmdSetCoverageReductionModeNV

If VK_NV_fragment_coverage_to_color is supported:

- vkCmdSetCoverageToColorEnableNV

- vkCmdSetCoverageToColorLocationNV

If VK_NV_framebuffer_mixed_samples is supported:

- vkCmdSetCoverageModulationModeNV

- vkCmdSetCoverageModulationTableEnableNV

- vkCmdSetCoverageModulationTableNV

If VK_NV_representative_fragment_test is supported:

- vkCmdSetRepresentativeFragmentTestEnableNV

If VK_NV_shading_rate_image is supported:

- vkCmdSetShadingRateImageEnableNV

If VK_NV_viewport_swizzle is supported:

- vkCmdSetViewportSwizzleNV

## 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_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT`

  - `VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT`

  - `VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT`

  - `VK_DYNAMIC_STATE_POLYGON_MODE_EXT`

  - `VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT`

  - `VK_DYNAMIC_STATE_SAMPLE_MASK_EXT`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT`

If VK_EXT_blend_operation_advanced is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT`

If VK_EXT_conservative_rasterization is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT`

  - `VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT`

If VK_EXT_depth_clip_control is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT`

If VK_EXT_depth_clip_enable is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT`

If VK_EXT_line_rasterization is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT`

  - `VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT`

If VK_EXT_provoking_vertex is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT`

If VK_EXT_sample_locations is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT`

If VK_EXT_transform_feedback is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT`

If VK_KHR_maintenance2 or Vulkan Version 1.1 is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT`

If VK_NV_clip_space_w_scaling is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV`

If VK_NV_coverage_reduction_mode is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV`

If VK_NV_fragment_coverage_to_color is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV`

  - `VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV`

If VK_NV_framebuffer_mixed_samples is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV`

  - `VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV`

  - `VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV`

If VK_NV_representative_fragment_test is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV`

If VK_NV_shading_rate_image is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV`

If VK_NV_viewport_swizzle is supported:

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV`

## 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

No cross-references are available

## 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-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0