Separate per-client vendor mappings for GLXVND
This is an alternative to !179 (closed). This MR provides the same basic functionality, but doesn't make any breaking changes to the GLXVND ABI.
The first part is the same: It adds a separate (screen -> vendor) mapping for each client. It defaults to using the existing global mapping, and there's a new function in GlxServerExports
that lets a driver change the mapping for a particular client.
To dispatch a request based on a normal window XID (the only XID's that GLX has to deal with but aren't defined through GLX requests), it'll still use the vendor mapping from the client that sent the request. Since GlxServerExports::getXIDMap
doesn't take a ClientPtr argument, though, it has to store the ClientPtr in a global variable instead.
This also doesn't include a new GLX extension, so any driver that wants to use this would need to define its own protocol.