summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexManagerBase.cpp
diff options
context:
space:
mode:
authorScott Mansell <phiren@gmail.com>2023-01-31 00:46:10 +1300
committerScott Mansell <phiren@gmail.com>2023-01-31 19:41:24 +1300
commit0da69055d9f41d838bdf94b66805540c746eaa7d (patch)
tree74363fda70c41594e6a24d64d8e62bc78d26685f /Source/Core/VideoCommon/VertexManagerBase.cpp
parent2a18b34a73f4f1bc798dab0a5eec46c222ec7429 (diff)
Split out everying remaining from Swap
Diffstat (limited to 'Source/Core/VideoCommon/VertexManagerBase.cpp')
-rw-r--r--Source/Core/VideoCommon/VertexManagerBase.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp
index 34fe374d25..895ddb1372 100644
--- a/Source/Core/VideoCommon/VertexManagerBase.cpp
+++ b/Source/Core/VideoCommon/VertexManagerBase.cpp
@@ -105,6 +105,7 @@ VertexManagerBase::~VertexManagerBase() = default;
bool VertexManagerBase::Initialize()
{
+ m_frame_end_event = AfterFrameEvent::Register([this] { OnEndFrame();}, "VertexManagerBase");
m_index_generator.Init();
m_cpu_cull.Init();
return true;
@@ -996,4 +997,10 @@ void VertexManagerBase::OnEndFrame()
#endif
m_cpu_accesses_this_frame.clear();
+
+ // We invalidate the pipeline object at the start of the frame.
+ // This is for the rare case where only a single pipeline configuration is used,
+ // and hybrid ubershaders have compiled the specialized shader, but without any
+ // state changes the specialized shader will not take over.
+ InvalidatePipelineObject();
}