From 9f803299de3a9c512939ede48654fab838343a8a Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Sat, 5 Jan 2019 01:01:38 -0300 Subject: gl_rasterizer: Implement global memory management --- src/video_core/renderer_opengl/gl_shader_cache.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/video_core/renderer_opengl/gl_shader_cache.cpp') diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index b3aca39af..54ec23f3a 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -108,11 +108,23 @@ CachedShader::CachedShader(VAddr addr, Maxwell::ShaderProgram program_type) } GLuint CachedShader::GetProgramResourceIndex(const GLShader::ConstBufferEntry& buffer) { - const auto search{resource_cache.find(buffer.GetHash())}; - if (search == resource_cache.end()) { + const auto search{cbuf_resource_cache.find(buffer.GetHash())}; + if (search == cbuf_resource_cache.end()) { const GLuint index{ glGetProgramResourceIndex(program.handle, GL_UNIFORM_BLOCK, buffer.GetName().c_str())}; - resource_cache[buffer.GetHash()] = index; + cbuf_resource_cache[buffer.GetHash()] = index; + return index; + } + + return search->second; +} + +GLuint CachedShader::GetProgramResourceIndex(const GLShader::GlobalMemoryEntry& global_mem) { + const auto search{gmem_resource_cache.find(global_mem.GetHash())}; + if (search == gmem_resource_cache.end()) { + const GLuint index{glGetProgramResourceIndex(program.handle, GL_SHADER_STORAGE_BLOCK, + global_mem.GetName().c_str())}; + gmem_resource_cache[global_mem.GetHash()] = index; return index; } -- cgit v1.2.3