brian.paul at tungstengraphics.com
Mon Aug 22 09:52:36 PDT 2005
Matthias Hopf wrote:
> On Aug 21, 05 20:53:34 -0400, Adam Jackson wrote:
>>If you are direct rendering, then you need some cooperation over the protocol:
>>the server needs to tell the client to render offscreen rather than to the
>>front buffer, and the client needs to inform the server of the offscreen
>>buffer's location. The only challenge is deciding what channel to do that
>>over, SAREA or DRI protocol or maybe GLX protocol + DRM interface.
> The even more crucial problem is that one process would like to render
> into this buffer (the application, direct rendering), and another
> process would like to bind this buffer to a texture (composition
> manager, when using direct rendering, or the Xserver, when using
> indirect rendering for composition or no composition at all). Currently
> there is no OpenGL extension for sharing offscreen buffers (or anything
> else!) between processes, there is only a notion for sharing between
> contextes of the same process.
That's not really correct. PBuffers, for example, are named with an
XID. That basically means that any process that has access to the ID
can render to it (ignoring security), just like X windows.
That's something you can't do with the new GL_EXT_framebuffer_object
so you can't really share frame/render buffers between processes.
>>>definitely see this being solvable via vendor specific extensions, but I
>>>think this will be tricky to do in a vendor neutral way. Maybe something
>>>like sharing framebuffer objects between the server and clients (is that
>>>possible with just GL_EXT_framebuffer_object?), but we're still quite a
>>>way from supporting fbos at all in the free drivers...
> Even the NVidia drivers don't have it completely right ;^)
> FBOs don't seem that easy to implement...
>>>I'm not sure it's that simple. E.g., using GL directly also gives you
>>>direct rendering, which while probably not crucial for most
>>>applications, may be for some, e.g. the compositing manager.
> I don't think that many composition managers wil need direct rendering,
> most of them will only render few polygons. Direct rendering is only
> necessary for applications that move huge amounts of data to the
> graphics driver. The offscreen buffers do not have to be filled by the
> composition manager.
More information about the xorg