Browse Source

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.
nce_cpp
ReinUsesLisp 6 years ago
parent
commit
25fcf5704b
  1. 5
      src/video_core/buffer_cache/buffer_cache.h

5
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();

Loading…
Cancel
Save