diff options
| author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-06-01 04:49:35 -0300 |
|---|---|---|
| committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-06-08 05:01:00 -0300 |
| commit | 3c2ae53b4c574deb4f9afe3104c7d022c53c5281 (patch) | |
| tree | a66e762e1fadaebdd05b7f13a6dade2ed5129aa6 /src/video_core/texture_cache/texture_cache.h | |
| parent | c95c254f3eda75476ad221a4828033f4140a3470 (diff) | |
texture_cache: Handle 3D texture blits with one layer
Diffstat (limited to 'src/video_core/texture_cache/texture_cache.h')
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 4ee0d76b9..60b95a854 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -755,6 +755,8 @@ private: } TSurface new_surface = GetUncachedSurface(gpu_addr, params); + LoadSurface(new_surface); + bool modified = false; for (auto& surface : overlaps) { const SurfaceParams& src_params = surface->GetSurfaceParams(); @@ -763,7 +765,10 @@ private: src_params.block_height != params.block_height) { return std::nullopt; } - modified |= surface->IsModified(); + if (!surface->IsModified()) { + continue; + } + modified = true; const u32 offset = static_cast<u32>(surface->GetCpuAddr() - cpu_addr); const u32 slice = std::get<2>(params.GetBlockOffsetXYZ(offset)); |
