[Mesa-dev] Mismatch between Mesas dispatch table and the one used by the X server

Ian Romanick idr at freedesktop.org
Tue Apr 16 10:33:32 PDT 2013


On 04/06/2013 11:36 AM, Stefan Brüns wrote:
> Am Freitag, 22. März 2013, 11:46:52 schrieben Sie:
>
>> To call glFoo, the xserver (or libGL) does
>>
>>       (dispatch_table[offset_of_glFoo])(...);
>>
>> To set the pointer for the glFoo function, the driver does
>>
>>       dispatch_table[remap_table[remap_offset_of_glFoo]] = driver_glFoo;
>
> Thanks for the clarification, after knowing what should happen finding the
> root cause was straigthforward:
>
> The population of dispatch_table is done using _glapi_add_dispatch(...). This
> function is defined by the XServer in glx/glapi.c, and it is defined in Mesas
> mapi/mapi/mapi_glapi.c
>
> Now, why is libGL and thus libglapi linked to the X server - the Intel driver
> optionally uses glamor, which uses libGL!
>
> Recompiling the intel driver whithout glamor resolves this problem.

Right... I don't think having two different loaders (libGL and the GLX 
extension) active in on process could ever work our dispatch 
architecture.  Nothing in the X server should *ever* link with libGL... 
it's like linking with two different libc implementations... what could 
possibly go wrong?

> Regards,
>
> Stefan



More information about the mesa-dev mailing list