You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For context, I've been working on an analysis tool that needs to link graphics pipeline libraries into a complete graphics pipeline.
Currently, the only information on how dynamic states interact with pipeline libraries is the following (from #1902 I think):
Dynamic state values set via pDynamicStatemust be ignored if the state they correspond to is not otherwise statically set by one of the state subsets used to create the pipeline. Additionally, setting dynamic state values must not modify whether state in a linked library is static or dynamic; this is set and unchangeable when the library is created. For example, if a pipeline only included pre-rasterization shader state, then any dynamic state value corresponding to depth or stencil testing has no effect. Any linked library that has dynamic state enabled that same dynamic state must also be enabled in all the other linked libraries to which that dynamic state applies.
There doesn't seem to be any validation unit for the last sentence (and it also seems to have a grammatical error).
This does seem to beimplemented in XGL here and here (The comment mentions VK_DYNAMIC_STATE_DEPTH_CLAMP_CONTROL_EXT but that's presumably a typo for VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT), and in VK-GL-CTS and Vulkan-ValidationLayers, though implementations differ slightly. Here are the disagreements I spotted (which hopefully is exhaustive, but there's a chance I missed or misread something):
VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT, VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT, and VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV aren't listed in any state subset in VK-GL-CTS (though they are used elsewhere); they are all listed as pre-rasterization shader state in Vulkan-ValidationLayers. XGL doesn't implement any of these.
VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT is only listed as a fragment output state in VK-GL-CTS, while it's listed as pre-rasterization shader state, fragment shader state, and fragment output state in Vulkan-ValidationLayers. XGL doesn't implement this.
VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is listed as pre-rasterization shader state, fragment shader state, and fragment output state in VK-GL-CTS, while Vulkan-ValidationLayers considers it to only be pre-rasterization shader state and fragment shader state and XGL considers it to only be fragment shader state and fragment output state.
VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV is listed as both fragment shader state and fragment output state by VK-GL-CTS, while Vulkan-ValidationLayers only considers it to be fragment shader state.
As far as I can tell, XGL, VK-GL-CTS, and Vulkan-ValidationLayers agree about all other states (ignoring the ones not listed anywhere in XGL, e.g. NV extensions), including that these multisample states belong to both the fragment shader state and fragment output state.
The text was updated successfully, but these errors were encountered:
Basically you can have all the dynamic state set at pipeline creation time and layers/drivers should ignore if they are not used. Some dynamic state like VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT will be used for multiple library types
For context, I've been working on an analysis tool that needs to link graphics pipeline libraries into a complete graphics pipeline.
Currently, the only information on how dynamic states interact with pipeline libraries is the following (from #1902 I think):
As far as I can tell, this requires cross-referencing all of the
VkDynamicState
descriptions with the graphics pipeline subsets, which seems fairly error-prone.There doesn't seem to be any validation unit for the last sentence (and it also seems to have a grammatical error).
This does seem to beimplemented in XGL here and here (The comment mentions
VK_DYNAMIC_STATE_DEPTH_CLAMP_CONTROL_EXT
but that's presumably a typo forVK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT
), and in VK-GL-CTS and Vulkan-ValidationLayers, though implementations differ slightly. Here are the disagreements I spotted (which hopefully is exhaustive, but there's a chance I missed or misread something):VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT
,VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT
, andVK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
aren't listed in any state subset in VK-GL-CTS (though they are used elsewhere); they are all listed as pre-rasterization shader state in Vulkan-ValidationLayers. XGL doesn't implement any of these.VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
is only listed as a fragment output state in VK-GL-CTS, while it's listed as pre-rasterization shader state, fragment shader state, and fragment output state in Vulkan-ValidationLayers. XGL doesn't implement this.VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is listed as pre-rasterization shader state, fragment shader state, and fragment output state in VK-GL-CTS, while Vulkan-ValidationLayers considers it to only be pre-rasterization shader state and fragment shader state and XGL considers it to only be fragment shader state and fragment output state.VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
is listed as both fragment shader state and fragment output state by VK-GL-CTS, while Vulkan-ValidationLayers only considers it to be fragment shader state.As far as I can tell, XGL, VK-GL-CTS, and Vulkan-ValidationLayers agree about all other states (ignoring the ones not listed anywhere in XGL, e.g. NV extensions), including that these multisample states belong to both the fragment shader state and fragment output state.
The text was updated successfully, but these errors were encountered: