[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