diff options
author | bunnei <bunneidev@gmail.com> | 2020-04-17 03:12:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-17 03:12:33 +0200 |
commit | 79c1269f0fd25e8aaf090cd1f4640a52237a3fd3 (patch) | |
tree | cef3d04b0e14887bbcb6b021d42e2420ae1588a4 /src/video_core/shader/decode/image.cpp | |
parent | Merge pull request #3600 from ReinUsesLisp/no-pointer-buf-cache (diff) | |
parent | CMakeLists: Specify -Wextra on linux builds (diff) | |
download | yuzu-79c1269f0fd25e8aaf090cd1f4640a52237a3fd3.tar yuzu-79c1269f0fd25e8aaf090cd1f4640a52237a3fd3.tar.gz yuzu-79c1269f0fd25e8aaf090cd1f4640a52237a3fd3.tar.bz2 yuzu-79c1269f0fd25e8aaf090cd1f4640a52237a3fd3.tar.lz yuzu-79c1269f0fd25e8aaf090cd1f4640a52237a3fd3.tar.xz yuzu-79c1269f0fd25e8aaf090cd1f4640a52237a3fd3.tar.zst yuzu-79c1269f0fd25e8aaf090cd1f4640a52237a3fd3.zip |
Diffstat (limited to 'src/video_core/shader/decode/image.cpp')
-rw-r--r-- | src/video_core/shader/decode/image.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/video_core/shader/decode/image.cpp b/src/video_core/shader/decode/image.cpp index 0dd7a1196..85ee9aa5e 100644 --- a/src/video_core/shader/decode/image.cpp +++ b/src/video_core/shader/decode/image.cpp @@ -352,8 +352,10 @@ u32 ShaderIR::DecodeImage(NodeBlock& bb, u32 pc) { registry.ObtainBoundSampler(static_cast<u32>(instr.image.index.Value())); } else { const Node image_register = GetRegister(instr.gpr39); - const auto [base_image, buffer, offset] = TrackCbuf( - image_register, global_code, static_cast<s64>(global_code.size())); + const auto result = TrackCbuf(image_register, global_code, + static_cast<s64>(global_code.size())); + const auto buffer = std::get<1>(result); + const auto offset = std::get<2>(result); descriptor = registry.ObtainBindlessSampler(buffer, offset); } if (!descriptor) { @@ -497,9 +499,12 @@ Image& ShaderIR::GetImage(Tegra::Shader::Image image, Tegra::Shader::ImageType t Image& ShaderIR::GetBindlessImage(Tegra::Shader::Register reg, Tegra::Shader::ImageType type) { const Node image_register = GetRegister(reg); - const auto [base_image, buffer, offset] = + const auto result = TrackCbuf(image_register, global_code, static_cast<s64>(global_code.size())); + const auto buffer = std::get<1>(result); + const auto offset = std::get<2>(result); + const auto it = std::find_if(std::begin(used_images), std::end(used_images), [buffer = buffer, offset = offset](const Image& entry) { |