|
|
|
@ -60,23 +60,6 @@ public: |
|
|
|
buffer_cache.AccumulateFlushes(); |
|
|
|
} |
|
|
|
|
|
|
|
void SignalReference() { |
|
|
|
// Only sync references on High |
|
|
|
if (Settings::values.gpu_accuracy.GetValue() != Settings::GPUAccuracy::High) { |
|
|
|
return; |
|
|
|
} |
|
|
|
TryReleasePendingFences(); |
|
|
|
const bool should_flush = ShouldFlush(); |
|
|
|
CommitAsyncFlushes(); |
|
|
|
TFence new_fence = CreateFence(0, 0, !should_flush); |
|
|
|
fences.push(new_fence); |
|
|
|
QueueFence(new_fence); |
|
|
|
if (should_flush) { |
|
|
|
rasterizer.FlushCommands(); |
|
|
|
} |
|
|
|
rasterizer.SyncGuestHost(); |
|
|
|
} |
|
|
|
|
|
|
|
void SignalSemaphore(GPUVAddr addr, u32 value) { |
|
|
|
TryReleasePendingFences(); |
|
|
|
const bool should_flush = ShouldFlush(); |
|
|
|
@ -111,10 +94,8 @@ public: |
|
|
|
} |
|
|
|
PopAsyncFlushes(); |
|
|
|
if (current_fence->IsSemaphore()) { |
|
|
|
if (current_fence->GetAddress() != 0) { |
|
|
|
gpu_memory.template Write<u32>(current_fence->GetAddress(), |
|
|
|
current_fence->GetPayload()); |
|
|
|
} |
|
|
|
gpu_memory.template Write<u32>(current_fence->GetAddress(), |
|
|
|
current_fence->GetPayload()); |
|
|
|
} else { |
|
|
|
gpu.IncrementSyncPoint(current_fence->GetPayload()); |
|
|
|
} |
|
|
|
|