Fixed false-positive image reuploads (#1557)

* Fixed false-positive image reuploads

* Fixed userfaultfd path, removed dead code, simplified calculations

* oopsie

* track potentially dirty images and hash them

* untrack only first page of the image in case of head access

* rebase, initialize hash, fix bounds check

* include image tail in the calculations
This commit is contained in:
Vladislav Mikhalin
2024-11-26 23:45:15 +03:00
committed by GitHub
parent 3f1be5a4ce
commit 18a36c5daa
9 changed files with 196 additions and 40 deletions

View File

@@ -792,9 +792,9 @@ u32 Rasterizer::ReadDataFromGds(u32 gds_offset) {
return value;
}
void Rasterizer::InvalidateMemory(VAddr addr, u64 size) {
buffer_cache.InvalidateMemory(addr, size);
texture_cache.InvalidateMemory(addr, size);
void Rasterizer::InvalidateMemory(VAddr addr, VAddr addr_aligned, u64 size) {
buffer_cache.InvalidateMemory(addr_aligned, size);
texture_cache.InvalidateMemory(addr, addr_aligned, size);
}
void Rasterizer::MapMemory(VAddr addr, u64 size) {

View File

@@ -46,7 +46,7 @@ public:
void InlineData(VAddr address, const void* value, u32 num_bytes, bool is_gds);
u32 ReadDataFromGds(u32 gsd_offset);
void InvalidateMemory(VAddr addr, u64 size);
void InvalidateMemory(VAddr addr, VAddr addr_aligned, u64 size);
void MapMemory(VAddr addr, u64 size);
void UnmapMemory(VAddr addr, u64 size);