mirror of
https://github.com/yuzu-emu/yuzu-android
synced 2025-08-03 15:52:26 -07:00
FenceManager: Implement should wait.
This commit is contained in:
@@ -53,7 +53,10 @@ public:
|
||||
void WaitPendingFences() {
|
||||
while (!fences.empty()) {
|
||||
TFence& current_fence = fences.front();
|
||||
WaitFence(current_fence);
|
||||
bool should_wait = texture_cache.ShouldWaitAsyncFlushes();
|
||||
if (should_wait) {
|
||||
WaitFence(current_fence);
|
||||
}
|
||||
texture_cache.PopAsyncFlushes();
|
||||
auto& gpu{system.GPU()};
|
||||
auto& memory_manager{gpu.MemoryManager()};
|
||||
@@ -80,7 +83,8 @@ private:
|
||||
void TryReleasePendingFences() {
|
||||
while (!fences.empty()) {
|
||||
TFence& current_fence = fences.front();
|
||||
if (!IsFenceSignaled(current_fence)) {
|
||||
bool should_wait = texture_cache.ShouldWaitAsyncFlushes();
|
||||
if (should_wait && !IsFenceSignaled(current_fence)) {
|
||||
return;
|
||||
}
|
||||
texture_cache.PopAsyncFlushes();
|
||||
|
@@ -322,6 +322,17 @@ public:
|
||||
uncommited_flushes.reset();
|
||||
}
|
||||
|
||||
bool ShouldWaitAsyncFlushes() {
|
||||
if (commited_flushes.empty()) {
|
||||
return false;
|
||||
}
|
||||
auto& flush_list = commited_flushes.front();
|
||||
if (!flush_list) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void PopAsyncFlushes() {
|
||||
if (commited_flushes.empty()) {
|
||||
return;
|
||||
|
Reference in New Issue
Block a user