[Mesa-dev] [PATCH 2/3] mesa: fix pbuffers because internally they are front buffers

Marek Olšák maraeo at gmail.com
Tue Apr 30 00:35:40 UTC 2019


On Mon, Apr 29, 2019 at 12:28 PM Adam Jackson <ajax at redhat.com> wrote:

> On Fri, 2019-04-26 at 23:31 -0400, Marek Olšák wrote:
>
> I don't claim to know what this series is trying to fix, but:
>
> > +    * 2) Pbuffers are back buffers from the application point of view,
> > +    *    but they are front buffers from the Mesa point of view,
> > +    *    because they are always single buffered.
> > +    */
>
> The EGL spec (back to 1.0!) says:
>
> "The resulting pbuffer will contain color buffers and ancillary buffers
> as specified by config."
>
> This appears to be copied from GLX, which has something more elaborate:
>
> "The resulting pbuffer will contain color buffers and ancillary buffers
> as specified by config. It is possible to create a pbuffer with back
> buffers and to swap the front and back buffers by calling
> glXSwapBuffers. Note that pbuffers use framebuffer resources so
> applications should consider deallocating them when they are not in
> use."
>
> So I'm not convinced that pbuffers are "always single-buffered". The
> back buffer is definitely a color buffer, and at least under GLX it
> seems like it should be possible to draw red to back, swap, draw blue
> to back, glReadBuffer(GL_FRONT), and expect glReadPixels to return red.
>

Yeah that's possible. The thing is that a GL context can have a
doublebuffered config and begin with GL_BACK as the draw buffer, but
MakeCurrent can set a pbuffer with a singlebuffered config and then nothing
is rendered with Mesa because there is no back buffer. This case appears to
work on NVIDIA.

Marek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190429/84c12b49/attachment.html>


More information about the mesa-dev mailing list