mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-04-25 20:04:56 +02:00
[vulkan] Restore gatting flush operation on removed gpu accuracy to new gpu accuracy logic
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
||||||
@@ -92,7 +92,16 @@ void ThreadManager::InvalidateRegion(DAddr addr, u64 size) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ThreadManager::FlushAndInvalidateRegion(DAddr addr, u64 size) {
|
void ThreadManager::FlushAndInvalidateRegion(DAddr addr, u64 size) {
|
||||||
// Skip flush on asynch mode, as FlushAndInvalidateRegion is not used for anything too important
|
if (Settings::IsGPULevelHigh()) {
|
||||||
|
if (!is_async) {
|
||||||
|
PushCommand(FlushRegionCommand(addr, size));
|
||||||
|
} else {
|
||||||
|
auto& gpu = system.GPU();
|
||||||
|
const u64 fence = gpu.RequestFlush(addr, size);
|
||||||
|
TickGPU();
|
||||||
|
gpu.WaitForSyncOperation(fence);
|
||||||
|
}
|
||||||
|
}
|
||||||
rasterizer->OnCacheInvalidation(addr, size);
|
rasterizer->OnCacheInvalidation(addr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -629,6 +629,9 @@ void RasterizerOpenGL::ReleaseFences(bool force) {
|
|||||||
|
|
||||||
void RasterizerOpenGL::FlushAndInvalidateRegion(DAddr addr, u64 size,
|
void RasterizerOpenGL::FlushAndInvalidateRegion(DAddr addr, u64 size,
|
||||||
VideoCommon::CacheType which) {
|
VideoCommon::CacheType which) {
|
||||||
|
if (Settings::IsGPULevelHigh()) {
|
||||||
|
FlushRegion(addr, size, which);
|
||||||
|
}
|
||||||
InvalidateRegion(addr, size, which);
|
InvalidateRegion(addr, size, which);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -766,6 +766,9 @@ void RasterizerVulkan::ReleaseFences(bool force) {
|
|||||||
|
|
||||||
void RasterizerVulkan::FlushAndInvalidateRegion(DAddr addr, u64 size,
|
void RasterizerVulkan::FlushAndInvalidateRegion(DAddr addr, u64 size,
|
||||||
VideoCommon::CacheType which) {
|
VideoCommon::CacheType which) {
|
||||||
|
if (Settings::IsGPULevelHigh()) {
|
||||||
|
FlushRegion(addr, size, which);
|
||||||
|
}
|
||||||
InvalidateRegion(addr, size, which);
|
InvalidateRegion(addr, size, which);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user