Просмотр исходного кода

buffer_cache: Delay buffer destructions

Delay buffer destruction some extra frames to avoid destroying buffers
that are still being used from older frames. This happens on Nvidia's
driver with mailbox.
ReinUsesLisp 6 лет назад
Родитель
Сommit
b35449c85d
1 измененных файлов с 4 добавлено и 1 удалено
  1. 4 1
      src/video_core/buffer_cache/buffer_cache.h

+ 4 - 1
src/video_core/buffer_cache/buffer_cache.h

@@ -101,7 +101,10 @@ public:
     void TickFrame() {
         ++epoch;
         while (!pending_destruction.empty()) {
-            if (pending_destruction.front()->GetEpoch() + 1 > epoch) {
+            // Delay at least 4 frames before destruction.
+            // This is due to triple buffering happening on some drivers.
+            static constexpr u64 epochs_to_destroy = 5;
+            if (pending_destruction.front()->GetEpoch() + epochs_to_destroy > epoch) {
                 break;
             }
             pending_destruction.pop_front();