|
|
|
@ -208,9 +208,9 @@ public:
|
|
|
|
|
private:
|
|
|
|
|
/// Flushes a memory range to guest memory and removes it from the cache.
|
|
|
|
|
void FlushAndRemoveRegion(VAddr addr, std::size_t size) {
|
|
|
|
|
const u64 addr_begin = static_cast<u64>(addr);
|
|
|
|
|
const u64 addr_end = addr_begin + static_cast<u64>(size);
|
|
|
|
|
const auto in_range = [addr_begin, addr_end](CachedQuery& query) {
|
|
|
|
|
const u64 addr_begin = addr;
|
|
|
|
|
const u64 addr_end = addr_begin + size;
|
|
|
|
|
const auto in_range = [addr_begin, addr_end](const CachedQuery& query) {
|
|
|
|
|
const u64 cache_begin = query.GetCpuAddr();
|
|
|
|
|
const u64 cache_end = cache_begin + query.SizeInBytes();
|
|
|
|
|
return cache_begin < addr_end && addr_begin < cache_end;
|
|
|
|
@ -230,8 +230,7 @@ private:
|
|
|
|
|
rasterizer.UpdatePagesCachedCount(query.GetCpuAddr(), query.SizeInBytes(), -1);
|
|
|
|
|
query.Flush();
|
|
|
|
|
}
|
|
|
|
|
contents.erase(std::remove_if(std::begin(contents), std::end(contents), in_range),
|
|
|
|
|
std::end(contents));
|
|
|
|
|
std::erase_if(contents, in_range);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|