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.pull/3337/head
parent
b11aeced18
commit
b35449c85d
|
|
@ -101,7 +101,10 @@ public:
|
||||||
void TickFrame() {
|
void TickFrame() {
|
||||||
++epoch;
|
++epoch;
|
||||||
while (!pending_destruction.empty()) {
|
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;
|
break;
|
||||||
}
|
}
|
||||||
pending_destruction.pop_front();
|
pending_destruction.pop_front();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue