summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_cache.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-01-05 05:01:38 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-01-30 04:00:15 +0100
commit9f803299de3a9c512939ede48654fab838343a8a (patch)
tree4ba30f0ad404bd4120dd5b2e4f21193bf03952fd /src/video_core/renderer_opengl/gl_shader_cache.cpp
parentshader_decode: Implement LDG and basic cbuf tracking (diff)
downloadyuzu-9f803299de3a9c512939ede48654fab838343a8a.tar
yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.gz
yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.bz2
yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.lz
yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.xz
yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.zst
yuzu-9f803299de3a9c512939ede48654fab838343a8a.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_shader_cache.cpp')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.cpp18
1 files changed, 15 insertions, 3 deletions
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;
}