Proprosed break in libGL / DRI driver ABI
Adam Jackson
ajax at nwnk.net
Tue Apr 5 13:09:08 PDT 2005
On Tuesday 05 April 2005 14:06, Ian Romanick wrote:
> For X.org 6.9 / 7.0 I would like to break the existing libGL / DRI
> driver interface. There is a *LOT* of crap hanging around in both libGL
> and in the DRI drivers that exists *only* to maintain backwards
> compatability with older versions of the interface. Since it's crap, I
> would very much like to flush it.
>
> I'd like to cut this stuff out for 7.0 for several main reasons:
>
> - A major release is a logical time to make breaks like this.
>
> - Bit rot. Sure, we /assume/ libGL and the DRI drivers still actually
> work with older versions, but how often does it actually get tested?
>
> - Code asthetics. Because of the backwards compatability mechanisms
> that are in place, especially in libGL, to code can be a bit hard to
> follow. Removing that code would, in a WAG estimate, eliminate at least
> a couple hundred lines of code. It would also eliminate a number of
> '#ifdef DRI_NEW_INTERFACE_ONLY' blocks.
>
> What I'm proposing goes a bit beyond '-DDRI_NEW_INTERFACE_ONLY=1", but
> that is a start. In include/GL/internal/dri_interface.h (in the Mesa
> tree) there are number of methods that get converted to 'void *' if
> DRI_NEW_INTERFACE_ONLY is defined. I propose that we completely remove
> them from the structures and rename some of the remaining methods. For
> example, __DRIcontextRec::bindContext and __DRIcontextRec::bindContext2
> would be removed, and __DRIcontextRec::bindContext3 would be renamed to
> __DRIcontextRec::bindContext.
>
> Additionally, there are a few libGL-private structures in
> src/glx/x11/glxclient.h that, due to binary compatability issues with
> older versions of the interface, can't be change. Eliminating support
> for those older interfaces would allow some significant cleaning in
> those structures. Basically, all of the stuff in glxclient.h with
> DEPRECATED in the name would be removed. Other, less important, changes
> could also be made to __GLXcontextRec.
I have another one: Hide all the functions that start with XF86DRI*, and
expose them to the driver through a function table or glXGetProcAddress
rather than by allowing the driver to call them directly. This will simplify
the case where the X server is itself linked against libGL.
Kevin tells me these functions were never intended to be public API anyway.
- ajax
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.x.org/archives/xorg-arch/attachments/20050405/cedb018b/attachment.pgp
More information about the xorg-arch
mailing list