diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-05 05:01:38 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-30 04:00:15 +0100 |
commit | 9f803299de3a9c512939ede48654fab838343a8a (patch) | |
tree | 4ba30f0ad404bd4120dd5b2e4f21193bf03952fd /src/video_core/renderer_opengl/gl_shader_cache.cpp | |
parent | shader_decode: Implement LDG and basic cbuf tracking (diff) | |
download | yuzu-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 '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 18 |
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; } |