mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-04 16:32:39 +00:00
buffer_cache: Prevent false image-to-buffer sync.
Lowering vertex fetch to formatted buffer surfaced an issue where a CPU modified range may be overwritten with stale GPU modified image data.
This commit is contained in:
parent
e7906f603e
commit
15a47d10ae
@ -608,7 +608,11 @@ bool BufferCache::SynchronizeBufferFromImage(Buffer& buffer, VAddr device_addr,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Image& image = texture_cache.GetImage(image_id);
|
Image& image = texture_cache.GetImage(image_id);
|
||||||
if (False(image.flags & ImageFlagBits::GpuModified)) {
|
// Only perform sync if image is:
|
||||||
|
// - GPU modified; otherwise there are no changes to synchronize.
|
||||||
|
// - Not CPU modified; otherwise we could overwrite CPU changes with stale GPU changes.
|
||||||
|
if (False(image.flags & ImageFlagBits::GpuModified) ||
|
||||||
|
True(image.flags & ImageFlagBits::CpuDirty)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ASSERT_MSG(device_addr == image.info.guest_address,
|
ASSERT_MSG(device_addr == image.info.guest_address,
|
||||||
|
Loading…
Reference in New Issue
Block a user