forked from ShuriZma/suyu
Fence Manager: remove reference fencing.
This commit is contained in:
parent
2c8f4ed27f
commit
4a09517336
|
@ -60,23 +60,6 @@ public:
|
||||||
buffer_cache.AccumulateFlushes();
|
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) {
|
void SignalSemaphore(GPUVAddr addr, u32 value) {
|
||||||
TryReleasePendingFences();
|
TryReleasePendingFences();
|
||||||
const bool should_flush = ShouldFlush();
|
const bool should_flush = ShouldFlush();
|
||||||
|
@ -111,10 +94,8 @@ public:
|
||||||
}
|
}
|
||||||
PopAsyncFlushes();
|
PopAsyncFlushes();
|
||||||
if (current_fence->IsSemaphore()) {
|
if (current_fence->IsSemaphore()) {
|
||||||
if (current_fence->GetAddress() != 0) {
|
|
||||||
gpu_memory.template Write<u32>(current_fence->GetAddress(),
|
gpu_memory.template Write<u32>(current_fence->GetAddress(),
|
||||||
current_fence->GetPayload());
|
current_fence->GetPayload());
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
gpu.IncrementSyncPoint(current_fence->GetPayload());
|
gpu.IncrementSyncPoint(current_fence->GetPayload());
|
||||||
}
|
}
|
||||||
|
|
|
@ -638,7 +638,7 @@ void RasterizerOpenGL::SignalReference() {
|
||||||
if (!gpu.IsAsync()) {
|
if (!gpu.IsAsync()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fence_manager.SignalReference();
|
fence_manager.SignalOrdering();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerOpenGL::ReleaseFences() {
|
void RasterizerOpenGL::ReleaseFences() {
|
||||||
|
@ -657,10 +657,7 @@ void RasterizerOpenGL::FlushAndInvalidateRegion(VAddr addr, u64 size) {
|
||||||
|
|
||||||
void RasterizerOpenGL::WaitForIdle() {
|
void RasterizerOpenGL::WaitForIdle() {
|
||||||
glMemoryBarrier(GL_ALL_BARRIER_BITS);
|
glMemoryBarrier(GL_ALL_BARRIER_BITS);
|
||||||
if (!gpu.IsAsync()) {
|
SignalReference();
|
||||||
return;
|
|
||||||
}
|
|
||||||
fence_manager.SignalOrdering();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerOpenGL::FragmentBarrier() {
|
void RasterizerOpenGL::FragmentBarrier() {
|
||||||
|
|
|
@ -584,7 +584,7 @@ void RasterizerVulkan::SignalReference() {
|
||||||
if (!gpu.IsAsync()) {
|
if (!gpu.IsAsync()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fence_manager.SignalReference();
|
fence_manager.SignalOrdering();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerVulkan::ReleaseFences() {
|
void RasterizerVulkan::ReleaseFences() {
|
||||||
|
@ -619,10 +619,7 @@ void RasterizerVulkan::WaitForIdle() {
|
||||||
cmdbuf.SetEvent(event, flags);
|
cmdbuf.SetEvent(event, flags);
|
||||||
cmdbuf.WaitEvents(event, flags, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, {}, {}, {});
|
cmdbuf.WaitEvents(event, flags, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, {}, {}, {});
|
||||||
});
|
});
|
||||||
if (!gpu.IsAsync()) {
|
SignalReference();
|
||||||
return;
|
|
||||||
}
|
|
||||||
fence_manager.SignalOrdering();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerVulkan::FragmentBarrier() {
|
void RasterizerVulkan::FragmentBarrier() {
|
||||||
|
|
Loading…
Reference in New Issue