[Mesa-dev] RFC - libglvnd and GLXVND vendor enumeration to facilitate GLX multi-vendor PRIME GPU offload

Michel Dänzer michel at daenzer.net
Tue Feb 12 08:58:04 UTC 2019


On 2019-02-11 5:18 p.m., Andy Ritger wrote:
> On Mon, Feb 11, 2019 at 12:09:26PM +0100, Michel Dänzer wrote:
>> On 2019-02-08 11:43 p.m., Kyle Brenneman wrote:
>>>
>>> Also, is Mesa the only client-side vendor library that works with the
>>> Xorg GLX module? I vaguely remember that there was at least one other
>>> driver that did, but I don't remember the details anymore.
>>
>> AFAIK, the amdgpu-pro OpenGL driver can work with the Xorg GLX module
>> (or its own forked version of it).
> 
> Maybe the amdgpu-pro OpenGL driver uses a fork of the Xorg GLX module
> (or sets the "GlxVendorLibrary" X configuration option?), but it doesn't
> look to me like the in-tree Xorg GLX module could report anything other
> than "mesa" for GLX_VENDOR_NAMES_EXT, without custom user configuration.
> 
> GLX_VENDOR_NAMES_EXT, which client-side glvnd uses to pick the
> libGLX_${vendor}.so to load, is implemented in the Xorg GLX module
> with this:
> 
>   xserver/glx/glxcmds.c:__glXDisp_QueryServerString():
> 
>     case GLX_VENDOR_NAMES_EXT:
>         if (pGlxScreen->glvnd) {
>             ptr = pGlxScreen->glvnd;
>             break;
>         }
> 
> pGlxScreen->glvnd appears to be assigned here, defaulting to "mesa", 
> though allowing an xorg.conf override via the "GlxVendorLibrary" option:
> 
>   xserver/glx/glxdri2.c:__glXDRIscreenProbe():
> 
>     xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, options);
>     glvnd = xf86GetOptValString(options, GLXOPT_VENDOR_LIBRARY);
>     if (glvnd)
>         screen->base.glvnd = xnfstrdup(glvnd);
>     free(options);
> 
>     if (!screen->base.glvnd)
>         screen->base.glvnd = strdup("mesa");
> 
> And swrast unconditionally sets pGlxScreen->glvnd to "mesa":
> 
>   xserver/glx/glxdriswrast.c:__glXDRIscreenProbe():
> 
>     screen->base.glvnd = strdup("mesa");
> 
> Is there more to this that I'm missing?

I don't think so, I suspect we were just assuming slightly different
definitions of "works". :)


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the xorg-devel mailing list