vk: Fix shader logging

- Do not overwrite logged programs
This commit is contained in:
kd-11 2017-11-06 02:06:16 +03:00
parent 4e9160104a
commit 541cb4062b
3 changed files with 4 additions and 8 deletions

View File

@ -454,7 +454,7 @@ void VKFragmentProgram::Decompile(const RSXFragmentProgram& prog)
void VKFragmentProgram::Compile()
{
fs::create_path(fs::get_config_dir() + "/shaderlog");
fs::file(fs::get_config_dir() + "shaderlog/FragmentProgram.spirv", fs::rewrite).write(shader);
fs::file(fs::get_config_dir() + "shaderlog/FragmentProgram" + std::to_string(id) + ".spirv", fs::rewrite).write(shader);
std::vector<u32> spir_v;
if (!vk::compile_glsl_to_spv(shader, glsl::glsl_fragment_program, spir_v))
@ -470,8 +470,6 @@ void VKFragmentProgram::Compile()
VkDevice dev = (VkDevice)*vk::get_current_renderer();
vkCreateShaderModule(dev, &fs_info, nullptr, &handle);
id = UINT32_MAX;
}
void VKFragmentProgram::Delete()

View File

@ -83,16 +83,16 @@ struct VKTraits
void recompile_fragment_program(const RSXFragmentProgram &RSXFP, fragment_program_type& fragmentProgramData, size_t ID)
{
fragmentProgramData.Decompile(RSXFP);
fragmentProgramData.Compile();
fragmentProgramData.id = static_cast<u32>(ID);
fragmentProgramData.Compile();
}
static
void recompile_vertex_program(const RSXVertexProgram &RSXVP, vertex_program_type& vertexProgramData, size_t ID)
{
vertexProgramData.Decompile(RSXVP);
vertexProgramData.Compile();
vertexProgramData.id = static_cast<u32>(ID);
vertexProgramData.Compile();
}
static

View File

@ -338,7 +338,7 @@ void VKVertexProgram::Decompile(const RSXVertexProgram& prog)
void VKVertexProgram::Compile()
{
fs::create_path(fs::get_config_dir() + "/shaderlog");
fs::file(fs::get_config_dir() + "shaderlog/VertexProgram.spirv", fs::rewrite).write(shader);
fs::file(fs::get_config_dir() + "shaderlog/VertexProgram" + std::to_string(id) + ".spirv", fs::rewrite).write(shader);
std::vector<u32> spir_v;
if (!vk::compile_glsl_to_spv(shader, glsl::glsl_vertex_program, spir_v))
@ -353,8 +353,6 @@ void VKVertexProgram::Compile()
VkDevice dev = (VkDevice)*vk::get_current_renderer();
vkCreateShaderModule(dev, &vs_info, nullptr, &handle);
id = UINT32_MAX;
}
void VKVertexProgram::Delete()