Multiple EGL implementations

Keith Whitwell keith at tungstengraphics.com
Mon Jul 4 09:26:09 PDT 2005


Adam Jackson wrote:
> On Monday 04 July 2005 08:57, Dave Airlie wrote:
> 
>>This is partly "our" fault the current libGL suffers from a lack of
>>vendor extensibility ... Ian has been doing some serious work on
>>making sure this doesn't happen for 6.9/7.0, and I believe ATI have
>>been in contact with him to avoid their having to ship a separate
>>libGL in the future..
>>
>>Then we'll just have to convince nvidia that they are being silly
>>using their own one :-)
> 
> 
> There's four issues, in my count.
> 
> Within the GL part of the interface, the dispatch table into the driver is 
> probably not consistent.  The DRI-based drivers all use the Mesa dispatch 
> table, but nVidia and Matrox appear not to (iirc).  Ian's work has been on 
> making the Mesa dispatch more amenable to vendor extension.  That should make 
> it general enough for the other vendors too.  The GL API is stable enough 
> that there's really only a few ways to do this, and most of the issues would 
> have to do with structure ordering.
> 
> Within the GLX part, some functions have different dispatch paths depending on 
> whether it's a direct or indirect current context.   The DRI drivers have a 
> fairly consistent interface for this (with a few vendor extensions to get 
> features that aren't in the base libGL yet); the nVidia and Matrox interfaces 
> here are a bit of a mystery.  We'd either need to standardize how we do GLX 
> dispatch into the drivers, or have multiple paths for loading various types.
> 
> Implicit in the above is that all drivers have to agree what a GLX context 
> structure looks like, and probably for drawables and one or two other types 
> too.  Again, the DRI drivers have this pretty uniform, but who the hell knows 
> what's going on with the other two.
> 
> And finally, all the code needs to be moved to the new design, which takes 
> time and requires some buy-in from the vendors that we've gotten it right.
> 
> This is nothing new or hard, as a code matter it's just defining a driver 
> interface with sufficient extensibility, and exposing the versioning 
> properly.  It's work that needs to happen, because right now the situation 
> with libGL is exactly the situation the X server was in in the 3.x days.
> 

I believe nvidia manage to squeeze a few optimizations out of dispatch 
as well, which would either have to be matched/duplicated if they are 
clean enough or they'd have to be convinced to give up.  I don't know 
how significant they are.

Keith


More information about the dri-egl mailing list