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:
If VK_EXT_conservative_rasterization is supported:
If VK_EXT_depth_clip_control is supported:
If VK_EXT_depth_clip_enable is supported:
If VK_EXT_line_rasterization is supported:
If VK_EXT_provoking_vertex is supported:
If VK_EXT_sample_locations is supported:
If VK_EXT_transform_feedback is supported:
If VK_KHR_maintenance2 or Vulkan Version 1.1 is supported:
If VK_NV_clip_space_w_scaling is supported:
If VK_NV_coverage_reduction_mode is supported:
If VK_NV_fragment_coverage_to_color is supported:
If VK_NV_framebuffer_mixed_samples is supported:
- vkCmdSetCoverageModulationModeNV
- vkCmdSetCoverageModulationTableEnableNV
- vkCmdSetCoverageModulationTableNV
If VK_NV_representative_fragment_test is supported:
If VK_NV_shading_rate_image is supported:
If VK_NV_viewport_swizzle is supported:
New Structures
- VkColorBlendAdvancedEXT
- VkColorBlendEquationEXT
- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
- Extending VkPhysicalDeviceProperties2:
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
andminSampleShading
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