From 2ed1e59557e5f777eb00a06f7f5fab30f7c194a8 Mon Sep 17 00:00:00 2001 From: spencer-lunarg Date: Thu, 19 Mar 2026 15:50:29 -0400 Subject: [PATCH] scripts: Move DynamicState into XML --- .../vulkan/generated/dynamic_state_helper.cpp | 6 +- scripts/generators/dynamic_state_generator.py | 545 ++---------------- 2 files changed, 58 insertions(+), 493 deletions(-) diff --git a/layers/vulkan/generated/dynamic_state_helper.cpp b/layers/vulkan/generated/dynamic_state_helper.cpp index 37efbae2dcf..d18736bcf92 100644 --- a/layers/vulkan/generated/dynamic_state_helper.cpp +++ b/layers/vulkan/generated/dynamic_state_helper.cpp @@ -580,12 +580,12 @@ std::string DescribeDynamicStateCommand(CBDynamicState dynamic_state) { case CB_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT: func = vvl::Func::vkCmdSetAttachmentFeedbackLoopEnableEXT; break; - case CB_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR: - func = vvl::Func::vkCmdSetRayTracingPipelineStackSizeKHR; - break; case CB_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT: func = vvl::Func::vkCmdSetDepthClampRangeEXT; break; + case CB_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR: + func = vvl::Func::vkCmdSetRayTracingPipelineStackSizeKHR; + break; default: ss << "(Unknown Dynamic State) "; } diff --git a/scripts/generators/dynamic_state_generator.py b/scripts/generators/dynamic_state_generator.py index e0b70842502..f36e82a7ca2 100644 --- a/scripts/generators/dynamic_state_generator.py +++ b/scripts/generators/dynamic_state_generator.py @@ -19,487 +19,52 @@ # TODO - Get in vk.xml # This is a representation of all the dynamic state information -dynamic_state_map = { - "VK_DYNAMIC_STATE_VIEWPORT" : { - "command" : ["vkCmdSetViewport"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportStateCreateInfo", - }, - "VK_DYNAMIC_STATE_SCISSOR" : { - "command" : ["vkCmdSetScissor"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportStateCreateInfo", - }, - "VK_DYNAMIC_STATE_LINE_WIDTH" : { - "command" : ["vkCmdSetLineWidth"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_DEPTH_BIAS" : { - "command" : ["vkCmdSetDepthBias", "vkCmdSetDepthBias2EXT"], - "dependency" : ["rasterizerDiscardEnable", "depthBiasEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_BLEND_CONSTANTS" : { - "command" : ["vkCmdSetBlendConstants"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentOutput"], - "pipeline" : "VkPipelineColorBlendStateCreateInfo", - }, - "VK_DYNAMIC_STATE_DEPTH_BOUNDS" : { - "command" : ["vkCmdSetDepthBounds"], - "dependency" : ["rasterizerDiscardEnable", "depthBoundsTestEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK" : { - "command" : ["vkCmdSetStencilCompareMask"], - "dependency" : ["rasterizerDiscardEnable", "stencilTestEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK" : { - "command" : ["vkCmdSetStencilWriteMask"], - "dependency" : ["rasterizerDiscardEnable", "stencilTestEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_STENCIL_REFERENCE" : { - "command" : ["vkCmdSetStencilReference"], - "dependency" : ["rasterizerDiscardEnable", "stencilTestEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_CULL_MODE" : { - "command" : ["vkCmdSetCullMode"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_FRONT_FACE" : { - "command" : ["vkCmdSetFrontFace"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY" : { - "command" : ["vkCmdSetPrimitiveTopology"], - "stage" : "VK_SHADER_STAGE_VERTEX_BIT", - "gpl" : ["VertexInput"], - "pipeline" : "VkPipelineInputAssemblyStateCreateInfo", - }, - "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT" : { - "command" : ["vkCmdSetViewportWithCount"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportStateCreateInfo", - }, - "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT" : { - "command" : ["vkCmdSetScissorWithCount"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportStateCreateInfo", - }, - "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE" : { - "command" : ["vkCmdBindVertexBuffers2"], - "stage" : "VK_SHADER_STAGE_VERTEX_BIT", - "gpl" : ["VertexInput"], - "pipeline" : "VkPipelineVertexInputStateCreateInfo", - }, - "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE" : { - "command" : ["vkCmdSetDepthTestEnable"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE" : { - "command" : ["vkCmdSetDepthWriteEnable"], - "dependency" : ["rasterizerDiscardEnable", "depthTestEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP" : { - "command" : ["vkCmdSetDepthCompareOp"], - "dependency" : ["rasterizerDiscardEnable", "depthTestEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE" : { - "command" : ["vkCmdSetDepthBoundsTestEnable"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE" : { - "command" : ["vkCmdSetStencilTestEnable"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_STENCIL_OP" : { - "command" : ["vkCmdSetStencilOp"], - "dependency" : ["rasterizerDiscardEnable", "stencilTestEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineDepthStencilStateCreateInfo", - }, - "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE" : { - "command" : ["vkCmdSetRasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE" : { - "command" : ["vkCmdSetDepthBiasEnable"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE" : { - "command" : ["vkCmdSetPrimitiveRestartEnable"], - "stage" : "VK_SHADER_STAGE_VERTEX_BIT", - "gpl" : ["VertexInput"], - "pipeline" : "VkPipelineInputAssemblyStateCreateInfo", - }, - "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV" : { - "command" : ["vkCmdSetViewportWScalingNV"], - "dependency" : ["viewportWScalingEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportWScalingStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT" : { - "command" : ["vkCmdSetDiscardRectangleEXT"], - "dependency" : ["rasterizerDiscardEnable", "discardRectangleEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineDiscardRectangleStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT" : { - "command" : ["vkCmdSetDiscardRectangleEnableEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineDiscardRectangleStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT" : { - "command" : ["vkCmdSetDiscardRectangleModeEXT"], - "dependency" : ["rasterizerDiscardEnable", "discardRectangleEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineDiscardRectangleStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT" : { - "command" : ["vkCmdSetSampleLocationsEXT"], - "dependency" : ["rasterizerDiscardEnable", "sampleLocationsEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineSampleLocationsStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV" : { - "command" : ["vkCmdSetViewportShadingRatePaletteNV"], - "dependency" : ["rasterizerDiscardEnable", "shadingRateImageEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportShadingRateImageStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV" : { - "command" : ["vkCmdSetCoarseSampleOrderNV"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV" : { - "command" : ["vkCmdSetExclusiveScissorEnableNV"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportExclusiveScissorStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV" : { - "command" : ["vkCmdSetExclusiveScissorNV"], - "dependency" : ["pExclusiveScissorEnables"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportExclusiveScissorStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR" : { - "command" : ["vkCmdSetFragmentShadingRateKHR"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization", "FragmentShader"], - "pipeline" : "VkPipelineFragmentShadingRateStateCreateInfoKHR", - }, - "VK_DYNAMIC_STATE_LINE_STIPPLE" : { - "command" : ["vkCmdSetLineStipple"], - "dependency" : ["rasterizerDiscardEnable", "stippledLineEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationLineStateCreateInfoKHR", - }, - "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT" : { - "command" : ["vkCmdSetVertexInputEXT"], - "stage" : "VK_SHADER_STAGE_VERTEX_BIT", - "gpl" : ["VertexInput"], - "pipeline" : "VkPipelineVertexInputStateCreateInfo", - }, - "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT" : { - "command" : ["vkCmdSetPatchControlPointsEXT"], - "stage" : "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineTessellationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_LOGIC_OP_EXT" : { - "command" : ["vkCmdSetLogicOpEXT"], - "dependency" : ["rasterizerDiscardEnable", "logicOpEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentOutput"], - "pipeline" : "VkPipelineColorBlendStateCreateInfo", - }, - "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT" : { - "command" : ["vkCmdSetColorWriteEnableEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentOutput"], - "pipeline" : "VkPipelineColorWriteCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT" : { - "command" : ["vkCmdSetTessellationDomainOriginEXT"], - "stage" : "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineTessellationDomainOriginStateCreateInfo", - }, - "VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT" : { - "command" : ["vkCmdSetDepthClampEnableEXT"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_POLYGON_MODE_EXT" : { - "command" : ["vkCmdSetPolygonModeEXT"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateCreateInfo", - }, - "VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT" : { - "command" : ["vkCmdSetRasterizationSamplesEXT"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineMultisampleStateCreateInfo", - }, - "VK_DYNAMIC_STATE_SAMPLE_MASK_EXT" : { - "command" : ["vkCmdSetSampleMaskEXT"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineMultisampleStateCreateInfo", - }, - "VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT" : { - "command" : ["vkCmdSetAlphaToCoverageEnableEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineMultisampleStateCreateInfo", - }, - "VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT" : { - "command" : ["vkCmdSetAlphaToOneEnableEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineMultisampleStateCreateInfo", - }, - "VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT" : { - "command" : ["vkCmdSetLogicOpEnableEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentOutput"], - "pipeline" : "VkPipelineColorBlendStateCreateInfo", - }, - "VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT" : { - "command" : ["vkCmdSetColorBlendEnableEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentOutput"], - "pipeline" : "VkPipelineColorBlendAttachmentState", - }, - "VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT" : { - "command" : ["vkCmdSetColorBlendEquationEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentOutput"], - "pipeline" : "VkPipelineColorBlendAttachmentState", - }, - "VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT" : { - "command" : ["vkCmdSetColorWriteMaskEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentOutput"], - "pipeline" : "VkPipelineColorBlendAttachmentState", - }, - "VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT" : { - "command" : ["vkCmdSetRasterizationStreamEXT"], - "stage" : "VK_SHADER_STAGE_GEOMETRY_BIT", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationStateStreamCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT" : { - "command" : ["vkCmdSetConservativeRasterizationModeEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationConservativeStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT" : { - "command" : ["vkCmdSetExtraPrimitiveOverestimationSizeEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationConservativeStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT" : { - "command" : ["vkCmdSetDepthClipEnableEXT"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationDepthClipStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT" : { - "command" : ["vkCmdSetSampleLocationsEnableEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineSampleLocationsStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT" : { - "command" : ["vkCmdSetColorBlendAdvancedEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentOutput"], - "pipeline" : "VkPipelineColorBlendAdvancedStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT" : { - "command" : ["vkCmdSetProvokingVertexModeEXT"], - "stage" : "VK_SHADER_STAGE_VERTEX_BIT", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationProvokingVertexStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT" : { - "command" : ["vkCmdSetLineRasterizationModeEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_VERTEX_BIT", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationLineStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT" : { - "command" : ["vkCmdSetLineStippleEnableEXT"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_VERTEX_BIT", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineRasterizationLineStateCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT" : { - "command" : ["vkCmdSetDepthClipNegativeOneToOneEXT"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportDepthClipControlCreateInfoEXT", - }, - "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV" : { - "command" : ["vkCmdSetViewportWScalingEnableNV"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportWScalingStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV" : { - "command" : ["vkCmdSetViewportSwizzleNV"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportSwizzleStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV" : { - "command" : ["vkCmdSetCoverageToColorEnableNV"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineCoverageToColorStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV" : { - "command" : ["vkCmdSetCoverageToColorLocationNV"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineCoverageToColorStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV" : { - "command" : ["vkCmdSetCoverageModulationModeNV"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineCoverageModulationStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV" : { - "command" : ["vkCmdSetCoverageModulationTableEnableNV"], - "dependency" : ["rasterizerDiscardEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineCoverageModulationStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV" : { - "command" : ["vkCmdSetCoverageModulationTableNV"], - "dependency" : ["rasterizerDiscardEnable", "coverageModulationTableEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineCoverageModulationStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV" : { - "command" : ["vkCmdSetShadingRateImageEnableNV"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportShadingRateImageStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV" : { - "command" : ["vkCmdSetRepresentativeFragmentTestEnableNV"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader"], - "pipeline" : "VkPipelineRepresentativeFragmentTestStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV" : { - "command" : ["vkCmdSetCoverageReductionModeNV"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["FragmentShader", "FragmentOutput"], - "pipeline" : "VkPipelineCoverageReductionStateCreateInfoNV", - }, - "VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT" : { - "command" : ["vkCmdSetAttachmentFeedbackLoopEnableEXT"], - "stage" : "VK_SHADER_STAGE_FRAGMENT_BIT", - "gpl" : ["PreRasterization", "FragmentShader", "FragmentOutput"], - }, - "VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR" : { - "command" : ["vkCmdSetRayTracingPipelineStackSizeKHR"], - "stage" : "VK_SHADER_STAGE_ALL", - }, - "VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT" : { - "command" : ["vkCmdSetDepthClampRangeEXT"], - "dependency" : ["depthClampEnable"], - "stage" : "VK_SHADER_STAGE_ALL", - "gpl" : ["PreRasterization"], - "pipeline" : "VkPipelineViewportDepthClampControlCreateInfoEXT" - }, +dependency_map = { + "VK_DYNAMIC_STATE_DEPTH_BIAS" : ["rasterizerDiscardEnable", "depthBiasEnable"], + "VK_DYNAMIC_STATE_BLEND_CONSTANTS" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_DEPTH_BOUNDS" : ["rasterizerDiscardEnable", "depthBoundsTestEnable"], + "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK" : ["rasterizerDiscardEnable", "stencilTestEnable"], + "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK" : ["rasterizerDiscardEnable", "stencilTestEnable"], + "VK_DYNAMIC_STATE_STENCIL_REFERENCE" : ["rasterizerDiscardEnable", "stencilTestEnable"], + "VK_DYNAMIC_STATE_CULL_MODE" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_FRONT_FACE" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE" : ["rasterizerDiscardEnable", "depthTestEnable"], + "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP" : ["rasterizerDiscardEnable", "depthTestEnable"], + "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_STENCIL_OP" : ["rasterizerDiscardEnable", "stencilTestEnable"], + "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV" : ["viewportWScalingEnable"], + "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT" : ["rasterizerDiscardEnable", "discardRectangleEnable"], + "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT" : ["rasterizerDiscardEnable", "discardRectangleEnable"], + "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT" : ["rasterizerDiscardEnable", "sampleLocationsEnable"], + "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV" : ["rasterizerDiscardEnable", "shadingRateImageEnable"], + "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV" : ["pExclusiveScissorEnables"], + "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_LINE_STIPPLE" : ["rasterizerDiscardEnable", "stippledLineEnable"], + "VK_DYNAMIC_STATE_LOGIC_OP_EXT" : ["rasterizerDiscardEnable", "logicOpEnable"], + "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV" : ["rasterizerDiscardEnable"], + "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV" : ["rasterizerDiscardEnable", "coverageModulationTableEnable"], + "VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT" : ["depthClampEnable"], } # @@ -588,8 +153,8 @@ class Pipeline; "VK_SHADER_STAGE_GEOMETRY_BIT" : "kGeometryDynamicState", } stage_map = dict() - for key, value in dynamic_state_map.items(): - stage_map.setdefault(value["stage"], []).append(key) + for dynamicState in self.vk.dynamicStates.values(): + stage_map.setdefault(dynamicState.shaderStage, []).append(dynamicState.name) # sort so each OS generates same order here for stage, states in sorted(stage_map.items()): @@ -679,9 +244,9 @@ def generateSource(self): vvl::Func func = vvl::Func::Empty; switch (dynamic_state) { ''') - for key, value in dynamic_state_map.items(): - out.append(f'case CB_{key[3:]}:\n') - out.append(f' func = vvl::Func::{value["command"][0]};\n') + for dynamicState in self.vk.dynamicStates.values(): + out.append(f'case CB_{dynamicState.name[3:]}:\n') + out.append(f' func = vvl::Func::{dynamicState.commands[0]};\n') out.append(' break;') out.append(''' default: @@ -710,12 +275,12 @@ def generateSource(self): std::ostringstream ss; switch (dynamic_state) { ''') - for key, value in dynamic_state_map.items(): - if 'dependency' not in value: + for dynamicState in self.vk.dynamicStates.values(): + if dynamicState.name not in dependency_map: continue - out.append(f'case CB_{key[3:]}:') + out.append(f'case CB_{dynamicState.name[3:]}:') - dependency = value['dependency'] + dependency = dependency_map[dynamicState.name] # TODO - Use XML to generate this if 'rasterizerDiscardEnable' in dependency: out.append('''