[Mesa-dev] [PATCH] direct-to-native-GL for GLX clients on Cygwin ("Windows-DRI")
Emil Velikov
emil.l.velikov at gmail.com
Thu Sep 15 13:34:16 UTC 2016
On 18 July 2016 at 15:43, Jon Turney <jon.turney at dronecode.org.uk> 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 <jon.turney at dronecode.org.uk>
> ---
> 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 <emil.l.velikov at gmail.com>
-Emil
More information about the mesa-dev
mailing list