diff --git a/renderdoc/driver/gl/gl_manager.h b/renderdoc/driver/gl/gl_manager.h index fa0382c61..4525cd922 100644 --- a/renderdoc/driver/gl/gl_manager.h +++ b/renderdoc/driver/gl/gl_manager.h @@ -178,6 +178,13 @@ class GLResourceManager : public ResourceManager return ResourceManager::MarkDirtyResource(GetID(res)); } + using ResourceManager::MarkCleanResource; + + void MarkCleanResource(GLResource res) + { + return ResourceManager::MarkCleanResource(GetID(res)); + } + void RegisterSync(void *ctx, GLsync sync, GLuint &name, ResourceId &id) { name = (GLuint)Atomic::Inc64(&m_SyncName); diff --git a/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp index 5fcb11fce..dbfee5c1b 100644 --- a/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp @@ -1675,6 +1675,7 @@ void WrappedOpenGL::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) GLResource res = FeedbackRes(GetCtx(), ids[i]); if(GetResourceManager()->HasCurrentResource(res)) { + GetResourceManager()->MarkCleanResource(res); if(GetResourceManager()->HasResourceRecord(res)) GetResourceManager()->GetResourceRecord(res)->Delete(GetResourceManager()); GetResourceManager()->UnregisterResource(res); @@ -2992,6 +2993,7 @@ void WrappedOpenGL::glDeleteBuffers(GLsizei n, const GLuint *buffers) GLResource res = BufferRes(GetCtx(), buffers[i]); if(GetResourceManager()->HasCurrentResource(res)) { + GetResourceManager()->MarkCleanResource(res); if(GetResourceManager()->HasResourceRecord(res)) GetResourceManager()->GetResourceRecord(res)->Delete(GetResourceManager()); GetResourceManager()->UnregisterResource(res); @@ -3008,6 +3010,7 @@ void WrappedOpenGL::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) GLResource res = VertexArrayRes(GetCtx(), arrays[i]); if(GetResourceManager()->HasCurrentResource(res)) { + GetResourceManager()->MarkCleanResource(res); if(GetResourceManager()->HasResourceRecord(res)) GetResourceManager()->GetResourceRecord(res)->Delete(GetResourceManager()); GetResourceManager()->UnregisterResource(res); diff --git a/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp index 30b012362..106b31366 100644 --- a/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp @@ -1041,6 +1041,7 @@ void WrappedOpenGL::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) GLResource res = FramebufferRes(GetCtx(), framebuffers[i]); if(GetResourceManager()->HasCurrentResource(res)) { + GetResourceManager()->MarkCleanResource(res); if(GetResourceManager()->HasResourceRecord(res)) GetResourceManager()->GetResourceRecord(res)->Delete(GetResourceManager()); GetResourceManager()->UnregisterResource(res); @@ -1121,6 +1122,7 @@ void WrappedOpenGL::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers GLResource res = RenderbufferRes(GetCtx(), renderbuffers[i]); if(GetResourceManager()->HasCurrentResource(res)) { + GetResourceManager()->MarkCleanResource(res); if(GetResourceManager()->HasResourceRecord(res)) GetResourceManager()->GetResourceRecord(res)->Delete(GetResourceManager()); GetResourceManager()->UnregisterResource(res); diff --git a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp index 67f38a23b..a17b2f5e9 100644 --- a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp @@ -762,6 +762,7 @@ void WrappedOpenGL::glDeleteProgram(GLuint program) GLResource res = ProgramRes(GetCtx(), program); if(GetResourceManager()->HasCurrentResource(res)) { + GetResourceManager()->MarkCleanResource(res); if(GetResourceManager()->HasResourceRecord(res)) GetResourceManager()->GetResourceRecord(res)->Delete(GetResourceManager()); GetResourceManager()->UnregisterResource(res); diff --git a/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp index 5e9b98101..b0856502a 100644 --- a/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp @@ -88,6 +88,7 @@ void WrappedOpenGL::glDeleteTextures(GLsizei n, const GLuint *textures) GLResource res = TextureRes(GetCtx(), textures[i]); if(GetResourceManager()->HasCurrentResource(res)) { + GetResourceManager()->MarkCleanResource(res); if(GetResourceManager()->HasResourceRecord(res)) GetResourceManager()->GetResourceRecord(res)->Delete(GetResourceManager()); GetResourceManager()->UnregisterResource(res);