From 7aca4a8603c8eed356b1e7cc420a467ddb5973ef Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 9 Nov 2014 00:49:17 +0000 Subject: [PATCH] glBufferSubData applies to UpdateCount on high traffic resources --- .../driver/gl/wrappers/gl_buffer_funcs.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp index 9b8270803..d46a1efd8 100644 --- a/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_buffer_funcs.cpp @@ -439,16 +439,29 @@ void WrappedOpenGL::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr s GLResourceRecord *record = m_BufferRecord[BufferIdx(target)]; RDCASSERT(record); + GLResource res = GetResourceManager()->GetCurrentResource(record->GetResourceID()); + + if(m_HighTrafficResources.find(res) != m_HighTrafficResources.end() && m_State != WRITING_CAPFRAME) + return; + SCOPED_SERIALISE_CONTEXT(BUFFERSUBDATA); - Serialise_glNamedBufferSubDataEXT(GetResourceManager()->GetCurrentResource(record->GetResourceID()).name, - offset, size, data); + Serialise_glNamedBufferSubDataEXT(res.name, offset, size, data); Chunk *chunk = scope.Get(); if(m_State == WRITING_CAPFRAME) m_ContextRecord->AddChunk(chunk); else + { record->AddChunk(chunk); + record->UpdateCount++; + + if(record->UpdateCount > 60) + { + m_HighTrafficResources.insert(res); + GetResourceManager()->MarkDirtyResource(record->GetResourceID()); + } + } } }