Skip to content

gl/bufferpool: add configuration to extend buffer lifetime before reuse

Fixes a potential GPU stall if an immediately freed texture/buffer is attempted to be reused immediately by the CPU, e.g. when uploading.

Problematic scenario is this:

  1. element does GPU processing reading from texture
  2. frees the buffer back to the pool
  3. pool acquire returns the just released buffer
  4. GPU processing then has to wait for the previous GPU operation to complete causing a stall

If there was a reliable way to know whether a buffer had been finished with across all GPU drivers, we would use it. However as that does not exist, this workaround is to keep the released buffer unusable until the next released buffer.

This is the same approach as is used in the qml (Qt5) elements.

Merge request reports