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.
This commit is contained in:
Fernando Sahmkow 2019-05-22 12:30:53 -04:00 committed by ReinUsesLisp
parent ea1525dab1
commit 0966665fc2

View File

@ -342,12 +342,13 @@ private:
const SurfaceParams& params, const GPUVAddr gpu_addr, const SurfaceParams& params, const GPUVAddr gpu_addr,
const bool preserve_contents, const bool preserve_contents,
const bool untopological) { const bool untopological) {
const bool do_load = Settings::values.use_accurate_gpu_emulation && preserve_contents;
for (auto surface : overlaps) { for (auto surface : overlaps) {
Unregister(surface); Unregister(surface);
} }
switch (PickStrategy(overlaps, params, gpu_addr, untopological)) { switch (PickStrategy(overlaps, params, gpu_addr, untopological)) {
case RecycleStrategy::Ignore: { case RecycleStrategy::Ignore: {
return InitializeSurface(gpu_addr, params, preserve_contents); return InitializeSurface(gpu_addr, params, do_load);
} }
case RecycleStrategy::Flush: { case RecycleStrategy::Flush: {
std::sort(overlaps.begin(), overlaps.end(), std::sort(overlaps.begin(), overlaps.end(),
@ -361,7 +362,7 @@ private:
} }
default: { default: {
UNIMPLEMENTED_MSG("Unimplemented Texture Cache Recycling Strategy!"); UNIMPLEMENTED_MSG("Unimplemented Texture Cache Recycling Strategy!");
return InitializeSurface(gpu_addr, params, preserve_contents); return InitializeSurface(gpu_addr, params, do_load);
} }
} }
} }