[video_core] Revert 4490 and 4531 (#4584)

- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions).
- [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md).
- [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability.

-------------------
Reverting NCE Invalidation readbacks. Me and Maran had discussed the risk of this be costly without alternative before.
After 2 or 3 weeks, a new regression has shown up: Pavel's device gets slow as fuck in DKCR.

I've prolly tackled that one too, but i don't like the solution anymore.
I had to infiltrate so much stuff that the weight of be working on the symptom instead of the root cause has grown way too much.

I'm reverting so we can get a clean base, then i will research deeper so we can maybe find a more surgical yet wider fix.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4584
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Reviewed-by: Pavel Barabanov <pavelbarabanov94@gmail.com>
This commit is contained in:
xbzk 2026-10-30 03:26:33 +01:00 • committed by crueter
parent 0731f40f4d
commit b4d5760014
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
6 changed files with 5 additions and 36 deletions

View file

@ -226,19 +226,7 @@ struct GPU::Impl {
}
/// Notify rasterizer that any caches of the specified region should be invalidated
void InvalidateRegion(DAddr addr, u64 size, bool preserve_gpu_writes) {
if (preserve_gpu_writes) {
VideoCore::RasterizerInterface* rasterizer = renderer->ReadRasterizer();
if (!rasterizer->TryCacheInvalidation(addr, size)) {
const u64 fence = RequestSyncOperation([rasterizer, addr, size] {
rasterizer->FlushRegion(addr, size, VideoCommon::CacheType::BufferCache);
rasterizer->OnCacheInvalidation(addr, size);
});
gpu_thread.TickGPU(is_async);
WaitForSyncOperation(fence);
}
return;
}
void InvalidateRegion(DAddr addr, u64 size) {
gpu_thread.InvalidateRegion(addr, size);
}
@ -530,8 +518,8 @@ void GPU::FlushRegion(DAddr addr, u64 size) {
impl->FlushRegion(addr, size);
}
void GPU::InvalidateRegion(DAddr addr, u64 size, bool preserve_gpu_writes) {
impl->InvalidateRegion(addr, size, preserve_gpu_writes);
void GPU::InvalidateRegion(DAddr addr, u64 size) {
impl->InvalidateRegion(addr, size);
}
bool GPU::OnCPUWrite(DAddr addr, u64 size) {