|
@@ -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);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|