[PATCH xserver 4/7] glx: Use vnd layer for dispatch (v2)

Kyle Brenneman kyle.brenneman at gmail.com
Wed Jan 10 21:03:32 UTC 2018


On 01/10/2018 01:57 PM, Kyle Brenneman wrote:
> On 01/10/2018 11:05 AM, Adam Jackson wrote:
>> The big change here is MakeCurrent and context tag tracking. We now
>> delegate context tags entirely to the vnd layer, and simply store a
>> pointer to the context state as the tag data. If a context is deleted
>> while it's current, we allocate a fake ID for the context and move the
>> context state there, so the tag data still points to a real context. As
>> a result we can stop trying so hard to detach the client from contexts
>> at disconnect time and just let resource destruction handle it.
>>
>> Since vnd handles all the MakeCurrent protocol now, our request handlers
>> for it can just be return BadImplementation.
>>
>> We also remove a bunch of LEGAL_NEW_RESOURCE, because now by the time
>> we're called vnd has already allocated its tracking resource on that
>> XID. Note that we only do this for core GLX requests, for vendor private
>> requests we still need to call LEGAL_NEW_RESOURCE and in addition need
>> to call up to addXIDMap and friends.
>>
>> v2: Update to match v2 of the vnd import, and remove more redundant work
>> like request length checks.
>>
>> Signed-off-by: Adam Jackson <ajax at redhat.com>
>> ---
>>   configure.ac                   |   2 +-
>>   glx/createcontext.c            |   2 -
>>   glx/glxcmds.c                  | 275 
>> ++++++++++++----------------------
>>   glx/glxcmdsswap.c              |  98 +-----------
>>   glx/glxext.c                   | 329 
>> ++++++++++++++++++++++++++++-------------
>>   glx/glxext.h                   |   4 +
>>   glx/glxscreens.h               |   1 +
>>   glx/glxserver.h                |   5 -
>>   glx/xfont.c                    |   2 -
>>   hw/kdrive/ephyr/ephyr.c        |   2 +-
>>   hw/kdrive/ephyr/meson.build    |   1 +
>>   hw/kdrive/src/kdrive.c         |   3 +
>>   hw/vfb/InitOutput.c            |   2 +
>>   hw/vfb/meson.build             |   3 +-
>>   hw/xfree86/Makefile.am         |   5 +
>>   hw/xfree86/common/xf86Init.c   |   2 +-
>>   hw/xfree86/dixmods/glxmodule.c |   1 +
>>   hw/xfree86/meson.build         |   1 +
>>   hw/xquartz/darwin.c            |   4 +-
>>   hw/xwayland/Makefile.am        |   1 +
>>   hw/xwayland/meson.build        |   1 +
>>   hw/xwayland/xwayland.c         |   2 +
>>   include/glx_extinit.h          |   5 +-
>>   23 files changed, 359 insertions(+), 392 deletions(-)
>>
>>
>
> xorgGlxThunkRequest should be calling addXIDMap and removeXIDMap, not 
> the internal handlers. The default branch there may need some 
> additional attention if it would handle any requests that create or 
> destroy resources.
>
> And, in answer to the question next to xorgGlxThunkRequest, those 
> could indeed be generated. The generate_dispatch_stubs.py script in 
> the libglvnd repo only generates the core GLX requests, but it should 
> be able to handle of those GLXVendorPrivate requests as well.
>
> -Kyle
>

You've still got the xorgVendorInitClosure struct left over in glxext.c, 
too. I don't think anything uses it now.


More information about the xorg-devel mailing list