From ef587d4cdc259f3f156eecee6065af19892b2e5e Mon Sep 17 00:00:00 2001 From: msuih Date: Fri, 31 May 2019 17:41:33 +0300 Subject: [PATCH] Limit shaderlog writing behind log_programs setting --- rpcs3/Emu/RSX/D3D12/D3D12PipelineState.h | 7 ++++--- rpcs3/Emu/RSX/GL/GLHelpers.h | 3 ++- rpcs3/Emu/RSX/GL/GLVertexProgram.cpp | 3 ++- rpcs3/Emu/RSX/VK/VKFragmentProgram.cpp | 3 ++- rpcs3/Emu/RSX/VK/VKVertexProgram.cpp | 3 ++- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/rpcs3/Emu/RSX/D3D12/D3D12PipelineState.h b/rpcs3/Emu/RSX/D3D12/D3D12PipelineState.h index f015c2011b..cfdf95eba8 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12PipelineState.h +++ b/rpcs3/Emu/RSX/D3D12/D3D12PipelineState.h @@ -129,8 +129,8 @@ struct D3D12Traits fragmentProgramData.FragmentConstantOffsetCache.push_back(offset); } } - - fs::file(fs::get_cache_dir() + "shaderlog/FragmentProgram" + std::to_string(ID) + ".hlsl", fs::rewrite).write(shader); + if (g_cfg.video.log_programs) + fs::file(fs::get_cache_dir() + "shaderlog/FragmentProgram" + std::to_string(ID) + ".hlsl", fs::rewrite).write(shader); fragmentProgramData.id = (u32)ID; } @@ -141,7 +141,8 @@ struct D3D12Traits std::string shaderCode = VS.Decompile(); vertexProgramData.Compile(shaderCode, Shader::SHADER_TYPE::SHADER_TYPE_VERTEX); vertexProgramData.vertex_shader_input_count = RSXVP.rsx_vertex_inputs.size(); - fs::file(fs::get_cache_dir() + "shaderlog/VertexProgram" + std::to_string(ID) + ".hlsl", fs::rewrite).write(shaderCode); + if (g_cfg.video.log_programs) + fs::file(fs::get_cache_dir() + "shaderlog/VertexProgram" + std::to_string(ID) + ".hlsl", fs::rewrite).write(shaderCode); vertexProgramData.id = (u32)ID; } diff --git a/rpcs3/Emu/RSX/GL/GLHelpers.h b/rpcs3/Emu/RSX/GL/GLHelpers.h index 80c65127ea..cd10e895f4 100644 --- a/rpcs3/Emu/RSX/GL/GLHelpers.h +++ b/rpcs3/Emu/RSX/GL/GLHelpers.h @@ -12,6 +12,7 @@ #include "../GCM.h" #include "../Common/TextureUtils.h" +#include "Emu/System.h" #include "Utilities/geometry.h" #define GL_FRAGMENT_TEXTURES_START 0 @@ -2421,7 +2422,7 @@ public: { const char* str = src.c_str(); const GLint length = (GLint)src.length(); - + if (g_cfg.video.log_programs) { std::string base_name; switch (shader_type) diff --git a/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp b/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp index c4a9c0a353..9d2cb5b076 100644 --- a/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp +++ b/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp @@ -358,7 +358,8 @@ void GLVertexProgram::Compile() const char* str = shader.c_str(); const int strlen = ::narrow(shader.length()); - fs::file(fs::get_cache_dir() + "shaderlog/VertexProgram" + std::to_string(id) + ".glsl", fs::rewrite).write(str); + if (g_cfg.video.log_programs) + fs::file(fs::get_cache_dir() + "shaderlog/VertexProgram" + std::to_string(id) + ".glsl", fs::rewrite).write(str); glShaderSource(id, 1, &str, &strlen); glCompileShader(id); diff --git a/rpcs3/Emu/RSX/VK/VKFragmentProgram.cpp b/rpcs3/Emu/RSX/VK/VKFragmentProgram.cpp index 8b2582a2cb..de28c8c044 100644 --- a/rpcs3/Emu/RSX/VK/VKFragmentProgram.cpp +++ b/rpcs3/Emu/RSX/VK/VKFragmentProgram.cpp @@ -455,7 +455,8 @@ void VKFragmentProgram::Decompile(const RSXFragmentProgram& prog) void VKFragmentProgram::Compile() { - fs::file(fs::get_cache_dir() + "shaderlog/FragmentProgram" + std::to_string(id) + ".spirv", fs::rewrite).write(shader.get_source()); + if (g_cfg.video.log_programs) + fs::file(fs::get_cache_dir() + "shaderlog/FragmentProgram" + std::to_string(id) + ".spirv", fs::rewrite).write(shader.get_source()); handle = shader.compile(); } diff --git a/rpcs3/Emu/RSX/VK/VKVertexProgram.cpp b/rpcs3/Emu/RSX/VK/VKVertexProgram.cpp index 96beb21b16..f02ea17134 100644 --- a/rpcs3/Emu/RSX/VK/VKVertexProgram.cpp +++ b/rpcs3/Emu/RSX/VK/VKVertexProgram.cpp @@ -365,7 +365,8 @@ void VKVertexProgram::Decompile(const RSXVertexProgram& prog) void VKVertexProgram::Compile() { - fs::file(fs::get_cache_dir() + "shaderlog/VertexProgram" + std::to_string(id) + ".spirv", fs::rewrite).write(shader.get_source()); + if (g_cfg.video.log_programs) + fs::file(fs::get_cache_dir() + "shaderlog/VertexProgram" + std::to_string(id) + ".spirv", fs::rewrite).write(shader.get_source()); handle = shader.compile(); }