DRI (Was Re: [Xquartz-dev] Google Summer of Code 2008 query)
Jeremy Huddleston
jeremyhu at apple.com
Fri Mar 28 10:50:54 PDT 2008
On Mar 28, 2008, at 00:38, Pelle Johansson wrote:
> Well, as for planning how it should be done, once an understanding
> is grasped of the source tree, I think it should go something like
> this.
>
> 1) Separate out the tight dependency of the drm library from the
> XF86Dri protocol, from xserver and mesa.
>
> That would be the optimal solution, but requires cooperation with
> the linux/bsd X developers. It they object to this, the alternative
> is to make a fake drm library for OS X, even though the architecture
> is completely different.
I'm pretty sure there should be little to no resistance here from the
community. I think the tight dependency on drm was just because it
was quicker than putting in the abstraction and they didn't see anyone
needing it at the time. Still, if you look at Pelle's patch, you'll
see the integration hasn't turned into spaghetti quite yet.
> 2) Implement the server side dri driver.
>
> If I'm correct (Jeremy might fill in here), OS X does not need much
> server side support for DRI. This would be a file implementing the
> same protocol as xserver/hw/xfree86/dri/dri.c, probably based on
> xserver/hw/xquartz/xpr/dri.c.
Yep. Pretty much. In fact, xpr/dri.c was originally based on the
original xfree86/dri/dri.c ... so it's highly probable that copying in
the "new" xfree86 dri.c and cherry-picking code out of our existing
xpr dri.c might be all that's involved here. Note that we also will
no longer need to build xserver/GL/apple
> 3) Do the client side driver.
>
> Here I'm getting less knowledgeable at the specifics, someone else
> might que in. But it should be implementing the mesa driver
> interface, and call the functions in OpenGL.framework.
The DRI driver itself should be the interface itself that both Xquartz
and libGL.dylib use to ask the hardware to do some OpenGL rendering.
When we use AIGLX (X server side OpenGL rendering), libGL packs up the
GL command is packed up in an X protocol request, sent to the server,
unpacked, and the X server then uses the DRI driver to ask hardware
(OpenGL.framework) to render into a particular context.
When we use client-side DRI, libGL uses the DRI driver to ask hardware
(OpenGL.framework) to render into a particular context.
When server == client, client-side DRI is faster. When client ==
lightweight and server == massive 3D hardware, the X protocol overhead
becomes minimal compared to the increased rendering speed and it
becomes advantageous to do AIGLX over local rendering.
But in both cases (using Xquartz as the server and using a Mac OSX
client), our DRI driver should be the same, so we don't need to manage
two separate dispatch tables as we are now.
--Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3221 bytes
Desc: not available
Url : http://lists.macosforge.org/pipermail/xquartz-dev/attachments/20080328/6e2bd6fd/smime-0001.bin
More information about the Xquartz-dev
mailing list