aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache/texture_cache.h
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2019-05-22 12:30:53 -0400
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-06-20 21:38:33 -0300
commitf13806a7aa5e659e7d209d2cfeb2c55ed284e02c (patch)
treef4f4f53d55e39ce0b37ad721e26f0f0609e37293 /src/video_core/texture_cache/texture_cache.h
parent76b68c74a75af7fa64b36ec327dab58555acdef6 (diff)
texture_cache: Only load on recycle with accurate GPU.
Testing so far has proven this to be quite safe as texture memory read added a 2-5ms load to the current cache.
Diffstat (limited to 'src/video_core/texture_cache/texture_cache.h')
-rw-r--r--src/video_core/texture_cache/texture_cache.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index ab4e094ea4..685bd28f46 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -342,12 +342,13 @@ private:
const SurfaceParams& params, const GPUVAddr gpu_addr,
const bool preserve_contents,
const bool untopological) {
+ const bool do_load = Settings::values.use_accurate_gpu_emulation && preserve_contents;
for (auto surface : overlaps) {
Unregister(surface);
}
switch (PickStrategy(overlaps, params, gpu_addr, untopological)) {
case RecycleStrategy::Ignore: {
- return InitializeSurface(gpu_addr, params, preserve_contents);
+ return InitializeSurface(gpu_addr, params, do_load);
}
case RecycleStrategy::Flush: {
std::sort(overlaps.begin(), overlaps.end(),
@@ -361,7 +362,7 @@ private:
}
default: {
UNIMPLEMENTED_MSG("Unimplemented Texture Cache Recycling Strategy!");
- return InitializeSurface(gpu_addr, params, preserve_contents);
+ return InitializeSurface(gpu_addr, params, do_load);
}
}
}