-
Notifications
You must be signed in to change notification settings - Fork 434
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 & VK_EXT_extended_dynamic_state3 #1739
Comments
I created a branch to support EXT_dynamic_state a long time ago (https://github.com/spnda/MoltenVK/tree/KHR_extended_dynamic_state). However, there's a couple of things we simply can't support with Metal, specifically the depth stuff I think. |
@spnda the depth stuff is optional? if yes, would be nice if a PR is done and eventually merged? |
@oscarbg As I understand it none of it is optional. Unless you can quote the spec where it says what is optional and what isn't. |
However, the Vulkan functions still allow to change the vertex input rate (per vertex, per instance, ...) which Metal still doesn't allow. |
Is there a way to partially enable some dynamic states from |
I've starting working on this.
@spnda Thanks. I've pulled your start in to save me some typing (and give you credit).
I noticed that in the Metal docs, too. Fortunate timing! |
This feature would be super useful for Godot on MacOS / iOS, even without the depth buffer / input stride support. |
PR #2036 implements |
PR #2066 implements |
Not all of the functionality of
VK_EXT_extended_dynamic_state
,VK_EXT_extended_dynamic_state2
&VK_EXT_extended_dynamic_state3
can be supported in Metal but the following dynamic state functionality can be supported:VK_EXT_extended_dynamic_state
:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE(unsupported)VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE(unsupported butVkPhysicalDeviceFeatures::depthBounds
disabled already)VK_EXT_extended_dynamic_state2
:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE(unsupported)VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE(unsupported)VK_DYNAMIC_STATE_LOGIC_OP_EXT(unsupported but can be disabled andVkPhysicalDeviceFeatures::logicOp
disabled already)VK_EXT_extended_dynamic_state3
(each unsupported dynamic state can be individually disabled):VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXTVK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXTVK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXTVK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXTVK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXTVK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NVVK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NVVK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NVVK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NVVK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NVVK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXTVK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXTVK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXTVK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXTVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTVK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXTVK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NVVK_DYNAMIC_STATE_SAMPLE_MASK_EXTVK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NVVK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NVVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NVThe text was updated successfully, but these errors were encountered: