On 18 July 2016 at 15:43, Jon Turney <[email protected]> wrote: > Structurally, this is very similar to the existing Apple-DRI code, except I > have chosen to implement this using the __GLXDRIdisplay, etc. vtables (as > suggested originally in [1]), rather than a maze of ifdefs. This also means > that LIBGL_ALWAYS_SOFTWARE and LIBGL_ALWAYS_INDIRECT work as expected. > > [1] https://lists.freedesktop.org/archives/mesa-dev/2010-May/000756.html > > This adds: > > * the Windows-DRI extension protocol headers and the windowsdriproto.pc > file, for use in building the Windows-DRI extension for the X server > > * a Windows-DRI extension helper client library > > * a Windows-specific DRI implementation for GLX clients > > The server is queried for Windows-DRI extension support on the screen before > using it (to detect the case where WGL is disabled or can't be activated). > > The server is queried for fbconfigID to pixelformatindex mapping, which is > used to augment glx_config. > > The server is queried for a native handle for the drawable (which is of a > different type for windows, pixmaps and pbuffers), which is used to augment > __GLXDRIdrawable. > > Various GLX extensions are enabled depending on if the equivalent WGL > extension is available. > > Signed-off-by: Jon Turney <[email protected]> > --- > configure.ac | 10 +- > src/glx/Makefile.am | 14 + > src/glx/driwindows_glx.c | 609 > ++++++++++++++++++++++++++++++++++ > src/glx/glxclient.h | 11 +- > src/glx/glxext.c | 19 ++ > src/glx/windows/Makefile.am | 31 ++ > src/glx/windows/wgl.c | 108 ++++++ > src/glx/windows/wgl.h | 44 +++ > src/glx/windows/windows_drawable.c | 192 +++++++++++ > src/glx/windows/windowsdriconst.h | 45 +++ > src/glx/windows/windowsdriproto.pc.in | 9 + > src/glx/windows/windowsdristr.h | 152 +++++++++ > src/glx/windows/windowsgl.c | 403 ++++++++++++++++++++++ > src/glx/windows/windowsgl.h | 52 +++ > src/glx/windows/windowsgl_internal.h | 67 ++++ > src/glx/windows/xwindowsdri.c | 237 +++++++++++++ > src/glx/windows/xwindowsdri.h | 59 ++++ > src/mapi/Makefile.am | 3 + > src/mapi/glapi/gen/Makefile.am | 3 + > src/mapi/glapi/glapi.h | 2 +- > 20 files changed, 2066 insertions(+), 4 deletions(-) > create mode 100644 src/glx/driwindows_glx.c > create mode 100644 src/glx/windows/Makefile.am > create mode 100644 src/glx/windows/wgl.c > create mode 100644 src/glx/windows/wgl.h > create mode 100644 src/glx/windows/windows_drawable.c > create mode 100644 src/glx/windows/windowsdriconst.h > create mode 100644 src/glx/windows/windowsdriproto.pc.in > create mode 100644 src/glx/windows/windowsdristr.h > create mode 100644 src/glx/windows/windowsgl.c > create mode 100644 src/glx/windows/windowsgl.h > create mode 100644 src/glx/windows/windowsgl_internal.h > create mode 100644 src/glx/windows/xwindowsdri.c > create mode 100644 src/glx/windows/xwindowsdri.h > > diff --git a/configure.ac b/configure.ac > index 54416b4..9cefc28 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -1114,7 +1114,9 @@ fi > case "$host_os" in > darwin*) > dri_platform='apple' ;; > -gnu*|cygwin*) > +cygwin*) > + dri_platform='windows' ;; > +gnu*) > dri_platform='none' ;; > *) > dri_platform='drm' ;; > @@ -1130,6 +1132,7 @@ AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" > = xyes ) > AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = > xdrm -a "x$have_libdrm" = xyes ) > AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = > xdrm -a "x$have_libdrm" = xyes ) > AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" > = xapple ) > +AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a > "x$dri_platform" = xwindows ) > > AC_ARG_ENABLE([shared-glapi], > [AS_HELP_STRING([--enable-shared-glapi], > @@ -1394,6 +1397,9 @@ xdri) > if test x"$dri_platform" = xapple ; then > DEFINES="$DEFINES -DGLX_USE_APPLEGL" > fi > + if test x"$dri_platform" = xwindows ; then > + DEFINES="$DEFINES -DGLX_USE_WINDOWSGL" > + fi > fi > > # add xf86vidmode if available > @@ -2744,6 +2750,8 @@ AC_CONFIG_FILES([Makefile > src/glx/Makefile > src/glx/apple/Makefile > src/glx/tests/Makefile > + src/glx/windows/Makefile > + src/glx/windows/windowsdriproto.pc So this is where windowsdriproto is. Can I suggest moving that into separate package/repo analogous to xf86driproto/dri2proto/dri3proto. Having it in ~jturney/ would be fine as a start, until an admin creates a repo in xorg/proto/
Other than that, the coding style seems a bit inconsistent. But considering this is based/copied from the dri codebase (dri1 by the looks of it) that's expected. With the separate windowsdriproto (or even without it really) I think it's perfectly fine to land this sooner rather than later in mesa. I'm sure that you/others will follow with any bugfixes/polish as needed. Fwiw the patch is Acked-by: Emil Velikov <[email protected]> -Emil _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
