diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-01-24 15:44:34 +0100 |
---|---|---|
committer | FernandoS27 <fsahmkow27@gmail.com> | 2020-01-25 14:04:59 +0100 |
commit | bb8eb15d392d69693f8cda0427669d011e23db97 (patch) | |
tree | cebd080530de75e7b5400f46c25c307a80e3c222 /src/video_core/shader/decode.cpp | |
parent | Shader_IR: Change name of TrackSampler function so it does not confuse with the type. (diff) | |
download | yuzu-bb8eb15d392d69693f8cda0427669d011e23db97.tar yuzu-bb8eb15d392d69693f8cda0427669d011e23db97.tar.gz yuzu-bb8eb15d392d69693f8cda0427669d011e23db97.tar.bz2 yuzu-bb8eb15d392d69693f8cda0427669d011e23db97.tar.lz yuzu-bb8eb15d392d69693f8cda0427669d011e23db97.tar.xz yuzu-bb8eb15d392d69693f8cda0427669d011e23db97.tar.zst yuzu-bb8eb15d392d69693f8cda0427669d011e23db97.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/shader/decode.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/video_core/shader/decode.cpp b/src/video_core/shader/decode.cpp index d4a10eee5..6b697ed5d 100644 --- a/src/video_core/shader/decode.cpp +++ b/src/video_core/shader/decode.cpp @@ -35,9 +35,9 @@ constexpr bool IsSchedInstruction(u32 offset, u32 main_offset) { } void DeduceTextureHandlerSize(VideoCore::GuestDriverProfile* gpu_driver, - std::list<Sampler>& used_samplers) { + const std::list<Sampler>& used_samplers) { if (gpu_driver == nullptr) { - LOG_CRITICAL(HW_GPU, "GPU Driver profile has not been created yet"); + LOG_CRITICAL(HW_GPU, "GPU driver profile has not been created yet"); return; } if (gpu_driver->TextureHandlerSizeKnown() || used_samplers.size() <= 1) { @@ -57,9 +57,9 @@ void DeduceTextureHandlerSize(VideoCore::GuestDriverProfile* gpu_driver, } } -std::optional<u32> TryDeduceSamplerSize(Sampler& sampler_to_deduce, +std::optional<u32> TryDeduceSamplerSize(const Sampler& sampler_to_deduce, VideoCore::GuestDriverProfile* gpu_driver, - std::list<Sampler>& used_samplers) { + const std::list<Sampler>& used_samplers) { if (gpu_driver == nullptr) { LOG_CRITICAL(HW_GPU, "GPU Driver profile has not been created yet"); return std::nullopt; @@ -367,17 +367,18 @@ void ShaderIR::PostDecode() { auto gpu_driver = locker.AccessGuestDriverProfile(); DeduceTextureHandlerSize(gpu_driver, used_samplers); // Deduce Indexed Samplers - if (uses_indexed_samplers) { - for (auto& sampler : used_samplers) { - if (sampler.IsIndexed()) { - auto size = TryDeduceSamplerSize(sampler, gpu_driver, used_samplers); - if (size) { - sampler.SetSize(*size); - } else { - LOG_CRITICAL(HW_GPU, "Failed to deduce size of indexed sampler"); - sampler.SetSize(1); - } - } + if (!uses_indexed_samplers) { + return; + } + for (auto& sampler : used_samplers) { + if (!sampler.IsIndexed()) { + continue; + } + if (const auto size = TryDeduceSamplerSize(sampler, gpu_driver, used_samplers)) { + sampler.SetSize(*size); + } else { + LOG_CRITICAL(HW_GPU, "Failed to deduce size of indexed sampler"); + sampler.SetSize(1); } } } |