[Mesa-dev] context sharing of framebuffer objects
Erik Faye-Lund
kusmabite at gmail.com
Mon Sep 30 05:33:38 PDT 2013
On Mon, Sep 30, 2013 at 11:01 AM, Henri Verbeet <hverbeet at gmail.com> wrote:
> On 30 September 2013 02:18, Dave Airlie <airlied at gmail.com> wrote:
>> So this led me to look at the spec and the mesa code, and I noticed it
>> appears at some point maybe around 3.1 that FBOs are no longer
>> considered shared objects at least in core profile, but mesa always
>> seems to share them, just wondering is someone can confirm I'm reading
>> things correctly, and if so I might try and do a piglit test and a
>> patch.
>>
> AFAIK the only FBOs that can be shared are ones create through
> EXT_fbo. (Specifically, see issue 10 in the ARB_fbo spec, and Appendix
> D in the GL 3.0 spec.)
This matches my reading of the spec as well, and kind of makes the
world horrible. From the ARB_framebuffer_object spec:
"Dependencies on EXT_framebuffer_object
Framebuffer objects created with the commands defined by the
GL_EXT_framebuffer_object extension are defined to be shared, while
FBOs created with commands defined by the OpenGL core or
GL_ARB_framebuffer_object extension are defined *not* to be shared.
Undefined behavior results when using FBOs created by EXT commands
through non-EXT interfaces, or vice-versa."
Yuck. Also see issue #10 in the spec:
" (10) Can ARB framebuffer objects be shared between contexts?
ARB_framebuffer_object is supposed to be compatible with
EXT_framebuffer_object, but also a subset of OpenGL 3.0.
EXT_framebuffer_object (rev. 120) explicitly allows sharing in
issue 76, but the 3.0 spec explicitly disallows it in Appendix D.
Resolved: No. ARB_framebuffer_object is intended to capture the
functionality that went into GL 3.0. Furthermore, given that the
entry points and tokens in this extension and the core are identical
there is no way that an implementation could differentiate FBOs
created with this extension from those created by core GL.
ADDITIONAL COMMENTS:
Undefined behavior results when using FBOs created by EXT
commands through non-EXT FBO interfaces, or vice-versa. See the
"Dependencies on EXT_framebuffer_object" section above."
It basically says the same thing, only with a bit more explanation.
More information about the mesa-dev
mailing list