[PATCH xserver 3/5] glx: Import glxvnd server module
Kyle Brenneman
kbrenneman at nvidia.com
Wed Aug 30 19:42:06 UTC 2017
On 08/30/2017 12:58 PM, Adam Jackson wrote:
> From: Kyle Brenneman <kbrenneman at nvidia.com>
>
> This is based on an out-of-tree module written by Kyle:
>
> https://github.com/kbrenneman/libglvnd/tree/server-libglx
>
> I (ajax) did a bunch of cosmetic fixes, ported it off xfree86 API,
> added request length checks, and fixed a minor bug or two.
>
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
> glx/meson.build | 21 ++
> glx/vnd_dispatch_stubs.c | 510 +++++++++++++++++++++++++++++++++++++++++++++++
> glx/vndcmds.c | 479 ++++++++++++++++++++++++++++++++++++++++++++
> glx/vndext.c | 265 ++++++++++++++++++++++++
> glx/vndserver.h | 117 +++++++++++
> glx/vndservermapping.c | 196 ++++++++++++++++++
> glx/vndservervendor.c | 91 +++++++++
> glx/vndservervendor.h | 68 +++++++
> include/Makefile.am | 1 +
> include/glxvndabi.h | 279 ++++++++++++++++++++++++++
> include/meson.build | 1 +
> 11 files changed, 2028 insertions(+)
> create mode 100644 glx/vnd_dispatch_stubs.c
> create mode 100644 glx/vndcmds.c
> create mode 100644 glx/vndext.c
> create mode 100644 glx/vndserver.h
> create mode 100644 glx/vndservermapping.c
> create mode 100644 glx/vndservervendor.c
> create mode 100644 glx/vndservervendor.h
> create mode 100644 include/glxvndabi.h
Note that there's a few parts of that interface that I'm still working
on, so I wouldn't mind some feedback on what people think about it. Off
the top of my head:
The allocateServerImports and freeServerImports functions are there to
make it easier to extend the GlxServerImports struct later without
breaking backward compatibility. Would it be better/easier to just give
the expected size of the GlxServerImports struct and let the caller
allocate it?
The getVendorForScreen function takes a ClientPtr parameter. I included
that so that at some point in the future, it might be able to handle
different (screen -> vendor) mappings for different clients. But, that
means it doesn't match up with the setScreenVendor function. I'm not
sure what the best solution is here.
Passing the vendor-private pointer in and out of
GlxServerImports::makeCurrent as a pointer and pointer-to-pointer feels
awkward to me, but I haven't come up with anything better yet. It also
doesn't have any way to change the pointer before the next makeCurrent
call, though I don't know if that's likely to be needed.
Also worth noting is that in the libglvnd tree, I've got a script to
generate the dispatch stubs in vnd_dispatch_stubs.c.
-Kyle
More information about the xorg-devel
mailing list