summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_cache.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-01-04 02:56:30 +0100
committerGitHub <noreply@github.com>2022-01-04 02:56:30 +0100
commitc68a0d17fc30d9b91b8324b3899556e3ebfea8d5 (patch)
tree3ec6f215ab86e6a9baf181efc9839eaa8bf56cf4 /src/video_core/renderer_opengl/gl_shader_cache.cpp
parentMerge pull request #7668 from ameerj/fence-stop-token (diff)
parentShaderDecompiler: Add a debug option to dump the game's shaders. (diff)
downloadyuzu-c68a0d17fc30d9b91b8324b3899556e3ebfea8d5.tar
yuzu-c68a0d17fc30d9b91b8324b3899556e3ebfea8d5.tar.gz
yuzu-c68a0d17fc30d9b91b8324b3899556e3ebfea8d5.tar.bz2
yuzu-c68a0d17fc30d9b91b8324b3899556e3ebfea8d5.tar.lz
yuzu-c68a0d17fc30d9b91b8324b3899556e3ebfea8d5.tar.xz
yuzu-c68a0d17fc30d9b91b8324b3899556e3ebfea8d5.tar.zst
yuzu-c68a0d17fc30d9b91b8324b3899556e3ebfea8d5.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_shader_cache.cpp')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp
index ec558a9af..f71e01a34 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp
@@ -425,6 +425,11 @@ std::unique_ptr<GraphicsPipeline> ShaderCache::CreateGraphicsPipeline(
const u32 cfg_offset{static_cast<u32>(env.StartAddress() + sizeof(Shader::ProgramHeader))};
Shader::Maxwell::Flow::CFG cfg(env, pools.flow_block, cfg_offset, index == 0);
+
+ if (Settings::values.dump_shaders) {
+ env.Dump(key.unique_hashes[index]);
+ }
+
if (!uses_vertex_a || index != 1) {
// Normal path
programs[index] = TranslateProgram(pools.inst, pools.block, env, cfg, host_info);
@@ -511,8 +516,12 @@ std::unique_ptr<ComputePipeline> ShaderCache::CreateComputePipeline(
LOG_INFO(Render_OpenGL, "0x{:016x}", key.Hash());
Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()};
- auto program{TranslateProgram(pools.inst, pools.block, env, cfg, host_info)};
+ if (Settings::values.dump_shaders) {
+ env.Dump(key.Hash());
+ }
+
+ auto program{TranslateProgram(pools.inst, pools.block, env, cfg, host_info)};
const u32 num_storage_buffers{Shader::NumDescriptors(program.info.storage_buffers_descriptors)};
Shader::RuntimeInfo info;
info.glasm_use_storage_buffers = num_storage_buffers <= device.GetMaxGLASMStorageBufferBlocks();