[vulkan] BindVertexBuffers2EXT reset per pipeline configuration

This commit is contained in:
CamilleLaVey 2026-02-13 21:18:49 -04:00 committed by crueter
parent 47d6360038
commit a2d830e51b
2 changed files with 11 additions and 0 deletions

View File

@ -168,6 +168,10 @@ bool Scheduler::UpdateGraphicsPipeline(GraphicsPipeline* pipeline) {
return true; return true;
} }
if (pipeline->UsesExtendedDynamicState() && !pipeline->HasDynamicVertexInput()) {
state_tracker.InvalidateVertexBufferState();
}
if (!pipeline->UsesExtendedDynamicState()) { if (!pipeline->UsesExtendedDynamicState()) {
state.needs_state_enable_refresh = true; state.needs_state_enable_refresh = true;
} else if (state.needs_state_enable_refresh) { } else if (state.needs_state_enable_refresh) {

View File

@ -101,6 +101,13 @@ public:
(*flags)[Dirty::StateEnable] = true; (*flags)[Dirty::StateEnable] = true;
} }
void InvalidateVertexBufferState() {
(*flags)[Dirty::VertexBuffers] = true;
for (int index = Dirty::VertexBuffer0; index <= Dirty::VertexBuffer31; ++index) {
(*flags)[index] = true;
}
}
bool TouchViewports() { bool TouchViewports() {
const bool dirty_viewports = Exchange(Dirty::Viewports, false); const bool dirty_viewports = Exchange(Dirty::Viewports, false);
const bool rescale_viewports = Exchange(VideoCommon::Dirty::RescaleViewports, false); const bool rescale_viewports = Exchange(VideoCommon::Dirty::RescaleViewports, false);