Direct GLX, IGLX, AIGLX, DRI2 and DRISW. Which is/can do what ?

Emil Velikov emil.l.velikov at gmail.com
Fri Sep 2 10:08:18 UTC 2016


On 2 September 2016 at 00:10, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> On 1 September 2016 at 17:46, Adam Jackson <ajax at nwnk.net> wrote:
>> On Thu, 2016-09-01 at 11:12 +0100, Emil Velikov wrote:
>>> Hi all,
>>>
>>> I had a quick look recently in  the area and some things came a bit odd.
>>>
>>> Afaict DRISW is not considered AIGLX (while DRI2 is) based on libglx's
>>> glxSetup(). At the same time both feature direct and indirect GLX.
>>>
>>> Yet the current glxSetup considers that DRI2 is wired only in the AIGLX case.
>>>
>>> At the same time, the earlier work by Ajax making libglx modular and allowing
>>> one too have the direct GLX w/o IGLX) goes further against the current glxSetup
>>> code.
>>>
>>> So... is the above is about right and we currently have a bug in glxSetup() ?
>>> Or perhaps there's some subtlety that I'm missing ?
>>
>> I'm not really sure what you're asking. Perhaps it would help to
>> remember that the "A" means "accelerated"? A software renderer can't
>> really be said to be accelerated, no matter how jitty and multithready
>> it might be.
>>
> Had a feeling that the question will be confusing. Let's try dropping
> DRISW all together for a second.
>
> Now a silly question:
> IGLX encapsulates AIGLX, correct ?
>
> Currently the glx/dri2 code is only used when AIGLX is enabled.
>
> In your earlier work you went through the dri2 code and factored out
> large part of the code with ifdef IGLX.
>
> Thus in the case of having glx/dri2 without IGLX (therefore without
> AIGLX, right ?), there will still be some code around. When/under what
> conditions will that code get executed ?
>
Or looking from another angle:

glx/dri2 code contains both the direct GLX and indirect (be that
accelerated or not) GLX parts needed, correct ?
At the same time the code is compiled only when AIGLX is selected at
configure time.
Similarly at run-time - the direct GLX code cannot be reached if AIGLX
is disabled.

Combining the above (whist ignoring what any of the *GLX mean) one could say:

"The direct GLX can only work when AIGLX is enabled" ... which as we
recall what they mean causes a FTW moment.

So I'm either loosing it and (accelerated) indirect GLX somehow is a
requirement for direct GLX to operate or there's been a bug (set of
bugs) for a loong time that nobody has noticed.

The AIGLX references in glx/drisw (both directly and indirect via
dricommon) makes for even more head scratching moments. Although in
all honesty these are just typos.

Thanks again.
Emil


More information about the xorg-devel mailing list