summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
diff options
context:
space:
mode:
authordegasus <wickmarkus@web.de>2014-01-23 00:47:49 +0100
committerdegasus <wickmarkus@web.de>2014-01-23 15:12:31 +0100
commit128fcdac26a9f7b6eb5174b88483c7ca023f210b (patch)
treef26c550d4be4198991cec77d212f8e3a0f9ceae0 /Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
parentbe1fee6d7476459a4c1fa09e1cb5b42dc005da54 (diff)
OpenGL: refactor all of our StreamBuffers
The old way was to use big switch/case statements based on a type of buffer. The new one is to use inheritance. This change prohibits us to change the buffer type while running, but I doubt we'll ever do so. Performance should also be a bit better. Also a nice cleanup. Added some comments about this different kind of buffers.
Diffstat (limited to 'Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
index 8f3a545261..000398c787 100644
--- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
+++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
@@ -193,18 +193,18 @@ void ProgramShaderCache::UploadConstants()
{
if(PixelShaderManager::dirty || VertexShaderManager::dirty)
{
- u8* buffer = s_buffer->Map(s_ubo_buffer_size, s_ubo_align);
+ auto buffer = s_buffer->Map(s_ubo_buffer_size, s_ubo_align);
- memcpy(buffer,
+ memcpy(buffer.first,
&PixelShaderManager::constants, sizeof(PixelShaderConstants));
- memcpy(buffer + ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align),
+ memcpy(buffer.first + ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align),
&VertexShaderManager::constants, sizeof(VertexShaderConstants));
- size_t offset = s_buffer->Unmap(s_ubo_buffer_size);
- glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_buffer->getBuffer(), offset,
+ s_buffer->Unmap(s_ubo_buffer_size);
+ glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_buffer->m_buffer, buffer.second,
sizeof(PixelShaderConstants));
- glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_buffer->getBuffer(), offset + ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align),
+ glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_buffer->m_buffer, buffer.second + ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align),
sizeof(VertexShaderConstants));
PixelShaderManager::dirty = false;
@@ -471,7 +471,7 @@ void ProgramShaderCache::Init(void)
// We multiply by *4*4 because we need to get down to basic machine units.
// So multiply by four to get how many floats we have from vec4s
// Then once more to get bytes
- s_buffer = new StreamBuffer(GL_UNIFORM_BUFFER, UBO_LENGTH);
+ s_buffer = StreamBuffer::Create(GL_UNIFORM_BUFFER, UBO_LENGTH);
}
// Read our shader cache, only if supported