Hi Carlos,

On 9 February 2018 at 08:33, Carlos Rafael Giani <d...@pseudoterminal.org> 
> I want to implement triple buffering instead of double buffering for a
> program that uses EGL on GBM on a KMS-enabled platform. So far, I used
> kmscube as an example.
> However, I do not see where I can specify that I want to have 3 buffers
> allocated instead of 2. From what I saw, I could try to call
> gbm_dri_surface_lock_front_buffer() to produce 3 BOs over time, but there's
> a chance that gbm_dri_surface_has_free_buffers() will return 0 after getting
> 2 BOs already.

You're correct that there is no explicit control available. On the
other hand, having three buffers is pretty much guaranteed for GBM:
since your last buffer won't be released until after vblank, only
having double buffering is likely to give you very badly reduced
performance. (In practice, Mesa makes four buffers available.)

> And, does gbm_dri_surface_lock_front_buffer() internally allocate the buffer
> itself too (not just the BO structure)? Or are the flippable pages
> preallocated by the implementation?

This is an implementation detail. Usually buffer allocation is
deferred to the first draw call of a frame: if there are no buffers
available, then the implementation will allocate a new one.

mesa-dev mailing list

Reply via email to