From 98c267cee6c0beed9c7cd555d6e360eda4cd360a Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 22 Dec 2017 16:00:34 +0000 Subject: [PATCH] Delete old sync objects before re-syncing in glFenceSync --- renderdoc/driver/gl/wrappers/gl_query_funcs.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/renderdoc/driver/gl/wrappers/gl_query_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_query_funcs.cpp index 39ef62730..7295ec904 100644 --- a/renderdoc/driver/gl/wrappers/gl_query_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_query_funcs.cpp @@ -59,6 +59,18 @@ bool WrappedOpenGL::Serialise_glFenceSync(SerialiserType &ser, GLsync real, GLen if(IsReplayingAndReading()) { + // if we've already sync'd, delete the old one + if(GetResourceManager()->HasLiveResource(sync)) + { + GLResource res = GetResourceManager()->GetLiveResource(sync); + GLsync oldSyncObj = GetResourceManager()->GetSync(res.name); + + m_Real.glDeleteSync(oldSyncObj); + + GetResourceManager()->UnregisterResource(res); + GetResourceManager()->EraseLiveResource(sync); + } + real = m_Real.glFenceSync(condition, flags); GLuint name = 0;