diff options
author | Rodrigo Locatti <reinuseslisp@airmail.cc> | 2020-09-23 01:37:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-23 01:37:51 +0200 |
commit | 2b863c9aa34e388f6c64665a2e7d8c808d598c26 (patch) | |
tree | 288ff1cc4677d6511ed8cc7e1b0db20ce2d2590f /src/video_core/texture_cache/surface_base.cpp | |
parent | Merge pull request #4697 from lioncash/copy5 (diff) | |
parent | General: Make use of std::nullopt where applicable (diff) | |
download | yuzu-2b863c9aa34e388f6c64665a2e7d8c808d598c26.tar yuzu-2b863c9aa34e388f6c64665a2e7d8c808d598c26.tar.gz yuzu-2b863c9aa34e388f6c64665a2e7d8c808d598c26.tar.bz2 yuzu-2b863c9aa34e388f6c64665a2e7d8c808d598c26.tar.lz yuzu-2b863c9aa34e388f6c64665a2e7d8c808d598c26.tar.xz yuzu-2b863c9aa34e388f6c64665a2e7d8c808d598c26.tar.zst yuzu-2b863c9aa34e388f6c64665a2e7d8c808d598c26.zip |
Diffstat (limited to 'src/video_core/texture_cache/surface_base.cpp')
-rw-r--r-- | src/video_core/texture_cache/surface_base.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/video_core/texture_cache/surface_base.cpp b/src/video_core/texture_cache/surface_base.cpp index dfcf36e0b..b44c09d71 100644 --- a/src/video_core/texture_cache/surface_base.cpp +++ b/src/video_core/texture_cache/surface_base.cpp @@ -115,20 +115,24 @@ std::optional<std::pair<u32, u32>> SurfaceBaseImpl::GetLayerMipmap( if (gpu_addr == candidate_gpu_addr) { return {{0, 0}}; } + if (candidate_gpu_addr < gpu_addr) { - return {}; + return std::nullopt; } + const auto relative_address{static_cast<GPUVAddr>(candidate_gpu_addr - gpu_addr)}; const auto layer{static_cast<u32>(relative_address / layer_size)}; if (layer >= params.depth) { - return {}; + return std::nullopt; } + const GPUVAddr mipmap_address = relative_address - layer_size * layer; const auto mipmap_it = Common::BinaryFind(mipmap_offsets.begin(), mipmap_offsets.end(), mipmap_address); if (mipmap_it == mipmap_offsets.end()) { - return {}; + return std::nullopt; } + const auto level{static_cast<u32>(std::distance(mipmap_offsets.begin(), mipmap_it))}; return std::make_pair(layer, level); } |