mirror of
https://git.h3cjp.net/H3cJP/citra.git
synced 2024-12-29 06:36:41 +00:00
gl_shader_cache: Flip if condition in GetStageProgram to reduce indentation
This commit is contained in:
parent
e3608578e4
commit
838b6d2ff8
|
@ -547,17 +547,19 @@ std::unordered_map<u64, UnspecializedShader> ShaderCacheOpenGL::GenerateUnspecia
|
||||||
|
|
||||||
Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) {
|
Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) {
|
||||||
if (!Core::System::GetInstance().GPU().Maxwell3D().dirty_flags.shaders) {
|
if (!Core::System::GetInstance().GPU().Maxwell3D().dirty_flags.shaders) {
|
||||||
return last_shaders[static_cast<u32>(program)];
|
return last_shaders[static_cast<std::size_t>(program)];
|
||||||
}
|
}
|
||||||
|
|
||||||
auto& memory_manager{Core::System::GetInstance().GPU().MemoryManager()};
|
auto& memory_manager{Core::System::GetInstance().GPU().MemoryManager()};
|
||||||
const GPUVAddr program_addr{GetShaderAddress(program)};
|
const GPUVAddr program_addr{GetShaderAddress(program)};
|
||||||
|
|
||||||
// Look up shader in the cache based on address
|
// Look up shader in the cache based on address
|
||||||
const auto& host_ptr{memory_manager.GetPointer(program_addr)};
|
const auto host_ptr{memory_manager.GetPointer(program_addr)};
|
||||||
Shader shader{TryGet(host_ptr)};
|
Shader shader{TryGet(host_ptr)};
|
||||||
|
if (shader) {
|
||||||
|
return last_shaders[static_cast<std::size_t>(program)] = shader;
|
||||||
|
}
|
||||||
|
|
||||||
if (!shader) {
|
|
||||||
// No shader found - create a new one
|
// No shader found - create a new one
|
||||||
ProgramCode program_code{GetShaderCode(memory_manager, program_addr, host_ptr)};
|
ProgramCode program_code{GetShaderCode(memory_manager, program_addr, host_ptr)};
|
||||||
ProgramCode program_code_b;
|
ProgramCode program_code_b;
|
||||||
|
@ -566,12 +568,12 @@ Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) {
|
||||||
program_code_b = GetShaderCode(memory_manager, program_addr_b,
|
program_code_b = GetShaderCode(memory_manager, program_addr_b,
|
||||||
memory_manager.GetPointer(program_addr_b));
|
memory_manager.GetPointer(program_addr_b));
|
||||||
}
|
}
|
||||||
|
|
||||||
const u64 unique_identifier = GetUniqueIdentifier(program, program_code, program_code_b);
|
const u64 unique_identifier = GetUniqueIdentifier(program, program_code, program_code_b);
|
||||||
const VAddr cpu_addr{*memory_manager.GpuToCpuAddress(program_addr)};
|
const VAddr cpu_addr{*memory_manager.GpuToCpuAddress(program_addr)};
|
||||||
const auto found = precompiled_shaders.find(unique_identifier);
|
const auto found = precompiled_shaders.find(unique_identifier);
|
||||||
if (found != precompiled_shaders.end()) {
|
if (found != precompiled_shaders.end()) {
|
||||||
shader =
|
shader = std::make_shared<CachedShader>(cpu_addr, unique_identifier, program, disk_cache,
|
||||||
std::make_shared<CachedShader>(cpu_addr, unique_identifier, program, disk_cache,
|
|
||||||
precompiled_programs, found->second, host_ptr);
|
precompiled_programs, found->second, host_ptr);
|
||||||
} else {
|
} else {
|
||||||
shader = std::make_shared<CachedShader>(
|
shader = std::make_shared<CachedShader>(
|
||||||
|
@ -579,9 +581,8 @@ Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) {
|
||||||
std::move(program_code), std::move(program_code_b), host_ptr);
|
std::move(program_code), std::move(program_code_b), host_ptr);
|
||||||
}
|
}
|
||||||
Register(shader);
|
Register(shader);
|
||||||
}
|
|
||||||
|
|
||||||
return last_shaders[static_cast<u32>(program)] = shader;
|
return last_shaders[static_cast<std::size_t>(program)] = shader;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace OpenGL
|
} // namespace OpenGL
|
||||||
|
|
Loading…
Reference in a new issue