From b9be6a70e329938721f1a34b1d4c99dea38bf828 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Fri, 29 Dec 2017 23:39:22 -0400 Subject: [PATCH] gl: Fix initial data preparation on wrong context. --- renderdoc/driver/gl/gl_driver.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index e9eeecd10..1b00bf614 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -1125,12 +1125,18 @@ void WrappedOpenGL::ActivateContext(GLWindowingData winData) // For now we assume we'll only get GL commands from a single thread QueuedInitialStateFetch fetch; fetch.res.Context = winData.ctx; + size_t before = m_QueuedInitialFetches.size(); auto it = std::lower_bound(m_QueuedInitialFetches.begin(), m_QueuedInitialFetches.end(), fetch); - for(; it != m_QueuedInitialFetches.end();) + for(; it->res.Context == winData.ctx && it != m_QueuedInitialFetches.end();) { GetResourceManager()->ContextPrepare_InitialState(it->res); it = m_QueuedInitialFetches.erase(it); } + size_t after = m_QueuedInitialFetches.size(); + + (void)before; + (void)after; + RDCDEBUG("Prepared %zu resources on context %p, %zu left", before - after, winData.ctx, after); USE_SCRATCH_SERIALISER(); SCOPED_SERIALISE_CHUNK(GLChunk::MakeContextCurrent);