mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-18 20:46:31 +00:00
Remove deleted objects from the GPU dirty resource list
This commit is contained in:
@@ -178,6 +178,13 @@ class GLResourceManager : public ResourceManager<GLResource, GLResourceRecord>
|
||||
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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user