Update to 17.0.0-rc1
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
This commit is contained in:
parent
5e8f8f1e6b
commit
dbf4ade69d
@ -1,40 +1,64 @@
|
|||||||
From 06c325b36bd6563a41cbc0261a8f9dd4e00f5572 Mon Sep 17 00:00:00 2001
|
From 97b447ee480a09a744094562da36b019a3eeb10f Mon Sep 17 00:00:00 2001
|
||||||
From: Kyle Brenneman <kbrenneman@nvidia.com>
|
From: Kyle Brenneman <kbrenneman@nvidia.com>
|
||||||
Date: Fri, 8 Jul 2016 15:21:17 -0600
|
Date: Wed, 4 Jan 2017 11:31:58 -0700
|
||||||
Subject: [PATCH] egl: glvnd support
|
Subject: [PATCH 1/2] EGL: Implement the libglvnd interface for EGL (v2)
|
||||||
|
|
||||||
[hdegoede@redhat.com: Rebased on 13.0 branch]
|
Added separate --enable-libglvnd-glx and --enable-libglvnd-egl configure
|
||||||
|
options to enable libglvnd for GLX and EGL. The existing --enable-libglvnd
|
||||||
|
option will now enable both EGL and GLX.
|
||||||
|
|
||||||
|
The new interface mostly just sits on top of the existing library. The only
|
||||||
|
change to the existing EGL code is to split the client extension string into
|
||||||
|
platform extensions and everything else. On non-glvnd builds, eglQueryString
|
||||||
|
will just concatenate the two strings.
|
||||||
|
|
||||||
|
The EGL dispatch stubs are all generated. The script is based on the one used
|
||||||
|
to generate entrypoints in libglvnd itself.
|
||||||
|
|
||||||
|
v2:
|
||||||
|
|
||||||
|
Rebased against master.
|
||||||
|
|
||||||
|
Reworked the EGL makefile to use separate libtool targets instead of an
|
||||||
|
automake substitution "lib@EGL_LIB@_la_*" in the variable names. Using the
|
||||||
|
substitution broke automake's dependency tracking for "make dist".
|
||||||
|
|
||||||
|
Made the EGL code generation scripts work with Python 2 or 3.
|
||||||
|
|
||||||
|
Change gen_egl_dispatch.py to use argparse for the command line arguments.
|
||||||
|
|
||||||
|
Assorted formatting and style cleanup in the Python scripts.
|
||||||
---
|
---
|
||||||
configure.ac | 159 ++-
|
configure.ac | 154 ++-
|
||||||
src/egl/Makefile.am | 65 +-
|
src/egl/Makefile.am | 97 +-
|
||||||
src/egl/generate/egl.xml | 2412 ++++++++++++++++++++++++++++++++++
|
src/egl/generate/egl.xml | 2412 ++++++++++++++++++++++++++++++++++
|
||||||
src/egl/generate/eglFunctionList.py | 191 +++
|
src/egl/generate/eglFunctionList.py | 197 +++
|
||||||
src/egl/generate/egl_other.xml | 47 +
|
src/egl/generate/egl_other.xml | 47 +
|
||||||
src/egl/generate/genCommon.py | 223 ++++
|
src/egl/generate/genCommon.py | 223 ++++
|
||||||
src/egl/generate/gen_egl_dispatch.py | 223 ++++
|
src/egl/generate/gen_egl_dispatch.py | 250 ++++
|
||||||
src/egl/main/50_mesa.json.in | 6 +
|
src/egl/main/50_mesa.json | 6 +
|
||||||
src/egl/main/eglapi.c | 6 +-
|
src/egl/main/eglapi.c | 6 +-
|
||||||
src/egl/main/egldispatchstubs.c | 110 ++
|
src/egl/main/egldispatchstubs.c | 110 ++
|
||||||
src/egl/main/egldispatchstubs.h | 26 +
|
src/egl/main/egldispatchstubs.h | 26 +
|
||||||
src/egl/main/eglglobals.c | 42 +-
|
src/egl/main/eglglobals.c | 47 +-
|
||||||
src/egl/main/eglglobals.h | 13 +-
|
src/egl/main/eglglobals.h | 13 +-
|
||||||
src/egl/main/eglglvnd.c | 75 ++
|
src/egl/main/eglglvnd.c | 82 ++
|
||||||
14 files changed, 3512 insertions(+), 86 deletions(-)
|
14 files changed, 3576 insertions(+), 94 deletions(-)
|
||||||
create mode 100644 src/egl/generate/egl.xml
|
create mode 100755 src/egl/generate/egl.xml
|
||||||
create mode 100644 src/egl/generate/eglFunctionList.py
|
create mode 100644 src/egl/generate/eglFunctionList.py
|
||||||
create mode 100644 src/egl/generate/egl_other.xml
|
create mode 100644 src/egl/generate/egl_other.xml
|
||||||
create mode 100644 src/egl/generate/genCommon.py
|
create mode 100644 src/egl/generate/genCommon.py
|
||||||
create mode 100644 src/egl/generate/gen_egl_dispatch.py
|
create mode 100755 src/egl/generate/gen_egl_dispatch.py
|
||||||
create mode 100644 src/egl/main/50_mesa.json.in
|
create mode 100644 src/egl/main/50_mesa.json
|
||||||
create mode 100644 src/egl/main/egldispatchstubs.c
|
create mode 100644 src/egl/main/egldispatchstubs.c
|
||||||
create mode 100644 src/egl/main/egldispatchstubs.h
|
create mode 100644 src/egl/main/egldispatchstubs.h
|
||||||
create mode 100644 src/egl/main/eglglvnd.c
|
create mode 100644 src/egl/main/eglglvnd.c
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index d215b63..e49711d 100644
|
index de8af874ec..839b25c057 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -521,8 +521,6 @@ else
|
@@ -528,8 +528,6 @@ else
|
||||||
DEFINES="$DEFINES -DNDEBUG"
|
DEFINES="$DEFINES -DNDEBUG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -43,7 +67,7 @@ index d215b63..e49711d 100644
|
|||||||
dnl
|
dnl
|
||||||
dnl Check if linker supports -Bsymbolic
|
dnl Check if linker supports -Bsymbolic
|
||||||
dnl
|
dnl
|
||||||
@@ -620,23 +618,6 @@ esac
|
@@ -627,23 +625,6 @@ esac
|
||||||
|
|
||||||
AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
|
AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
|
||||||
|
|
||||||
@ -67,7 +91,7 @@ index d215b63..e49711d 100644
|
|||||||
dnl
|
dnl
|
||||||
dnl library names
|
dnl library names
|
||||||
dnl
|
dnl
|
||||||
@@ -670,36 +651,6 @@ esac
|
@@ -677,36 +658,6 @@ esac
|
||||||
|
|
||||||
AC_SUBST([LIB_EXT])
|
AC_SUBST([LIB_EXT])
|
||||||
|
|
||||||
@ -104,13 +128,12 @@ index d215b63..e49711d 100644
|
|||||||
dnl
|
dnl
|
||||||
dnl potentially-infringing-but-nobody-knows-for-sure stuff
|
dnl potentially-infringing-but-nobody-knows-for-sure stuff
|
||||||
dnl
|
dnl
|
||||||
@@ -1107,31 +1058,98 @@ AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
|
@@ -1335,31 +1286,94 @@ AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
|
||||||
dnl
|
dnl
|
||||||
dnl Libglvnd configuration
|
dnl Libglvnd configuration
|
||||||
dnl
|
dnl
|
||||||
+
|
+
|
||||||
+DEFAULT_GL_LIB_NAME=GL
|
+DEFAULT_GL_LIB_NAME=GL
|
||||||
+EGL_LIB=EGL
|
|
||||||
+
|
+
|
||||||
AC_ARG_ENABLE([libglvnd],
|
AC_ARG_ENABLE([libglvnd],
|
||||||
[AS_HELP_STRING([--enable-libglvnd],
|
[AS_HELP_STRING([--enable-libglvnd],
|
||||||
@ -160,7 +183,6 @@ index d215b63..e49711d 100644
|
|||||||
+ AC_MSG_ERROR([cannot build libglvnd without EGL])
|
+ AC_MSG_ERROR([cannot build libglvnd without EGL])
|
||||||
+ fi
|
+ fi
|
||||||
+ DEFINES="${DEFINES} -DUSE_LIBGLVND_EGL=1"
|
+ DEFINES="${DEFINES} -DUSE_LIBGLVND_EGL=1"
|
||||||
+ EGL_LIB=EGL_mesa
|
|
||||||
+ else
|
+ else
|
||||||
+ PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0)
|
+ PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0)
|
||||||
+ fi
|
+ fi
|
||||||
@ -185,8 +207,6 @@ index d215b63..e49711d 100644
|
|||||||
+ fi
|
+ fi
|
||||||
+fi
|
+fi
|
||||||
+
|
+
|
||||||
+AC_SUBST([EGL_LIB])
|
|
||||||
+
|
|
||||||
+AC_ARG_WITH([gl-lib-name],
|
+AC_ARG_WITH([gl-lib-name],
|
||||||
+ [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
|
+ [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
|
||||||
+ [specify GL library name @<:@default=GL@:>@])],
|
+ [specify GL library name @<:@default=GL@:>@])],
|
||||||
@ -222,15 +242,7 @@ index d215b63..e49711d 100644
|
|||||||
|
|
||||||
# Check for libdrm
|
# Check for libdrm
|
||||||
PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
|
PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
|
||||||
@@ -2685,6 +2703,7 @@ AC_CONFIG_FILES([Makefile
|
@@ -2759,11 +2773,15 @@ xgallium-xlib)
|
||||||
src/compiler/Makefile
|
|
||||||
src/egl/Makefile
|
|
||||||
src/egl/main/egl.pc
|
|
||||||
+ src/egl/main/50_mesa.json
|
|
||||||
src/egl/wayland/wayland-drm/Makefile
|
|
||||||
src/egl/wayland/wayland-egl/Makefile
|
|
||||||
src/egl/wayland/wayland-egl/wayland-egl.pc
|
|
||||||
@@ -2846,11 +2865,15 @@ xgallium-xlib)
|
|
||||||
echo " GLX: $enable_glx"
|
echo " GLX: $enable_glx"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -247,83 +259,51 @@ index d215b63..e49711d 100644
|
|||||||
|
|
||||||
egl_drivers=""
|
egl_drivers=""
|
||||||
diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am
|
diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am
|
||||||
index 304b0d3..1839155 100644
|
index 78cf525951..3bc62d550f 100644
|
||||||
--- a/src/egl/Makefile.am
|
--- a/src/egl/Makefile.am
|
||||||
+++ b/src/egl/Makefile.am
|
+++ b/src/egl/Makefile.am
|
||||||
@@ -32,16 +32,53 @@ AM_CFLAGS = \
|
@@ -32,19 +32,16 @@ AM_CFLAGS = \
|
||||||
$(EGL_CFLAGS) \
|
$(EGL_CFLAGS) \
|
||||||
-D_EGL_NATIVE_PLATFORM=$(EGL_NATIVE_PLATFORM)
|
-D_EGL_NATIVE_PLATFORM=$(EGL_NATIVE_PLATFORM)
|
||||||
|
|
||||||
-lib_LTLIBRARIES = libEGL.la
|
-lib_LTLIBRARIES = libEGL.la
|
||||||
+if USE_LIBGLVND_EGL
|
-
|
||||||
+AM_CFLAGS += \
|
|
||||||
+ $(GLVND_CFLAGS)
|
|
||||||
+
|
|
||||||
+LIBEGL_C_FILES += \
|
|
||||||
+ main/eglglvnd.c \
|
|
||||||
+ main/egldispatchstubs.h \
|
|
||||||
+ main/egldispatchstubs.c \
|
|
||||||
+ g_egldispatchstubs.c
|
|
||||||
+
|
|
||||||
+EGL_LIB_VERSION=0
|
|
||||||
+
|
|
||||||
+PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
|
|
||||||
+g_egldispatchstubs.c: generate/gen_egl_dispatch.py generate/egl.xml \
|
|
||||||
+ generate/eglFunctionList.py generate/genCommon.py
|
|
||||||
+ $(PYTHON_GEN) $(top_srcdir)/src/egl/generate/gen_egl_dispatch.py source \
|
|
||||||
+ $(top_srcdir)/src/egl/generate/eglFunctionList.py \
|
|
||||||
+ $(top_srcdir)/src/egl/generate/egl.xml \
|
|
||||||
+ $(top_srcdir)/src/egl/generate/egl_other.xml > $@
|
|
||||||
+
|
|
||||||
+g_egldispatchstubs.h: generate/gen_egl_dispatch.py generate/egl.xml \
|
|
||||||
+ generate/eglFunctionList.py generate/genCommon.py
|
|
||||||
+ $(PYTHON_GEN) $(top_srcdir)/src/egl/generate/gen_egl_dispatch.py header \
|
|
||||||
+ $(top_srcdir)/src/egl/generate/eglFunctionList.py \
|
|
||||||
+ $(top_srcdir)/src/egl/generate/egl.xml \
|
|
||||||
+ $(top_srcdir)/src/egl/generate/egl_other.xml > $@
|
|
||||||
+
|
|
||||||
+BUILT_SOURCES = g_egldispatchstubs.c g_egldispatchstubs.h
|
|
||||||
+CLEANFILES = $(BUILT_SOURCES)
|
|
||||||
+
|
|
||||||
+vendorjsondir = @LIBGLVND_DATADIR@/glvnd/egl_vendor.d
|
|
||||||
+vendorjson_DATA = main/50_mesa.json
|
|
||||||
+
|
|
||||||
+else
|
|
||||||
+EGL_LIB_VERSION=1:0
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+lib_LTLIBRARIES = lib@EGL_LIB@.la
|
|
||||||
|
|
||||||
-libEGL_la_SOURCES = \
|
-libEGL_la_SOURCES = \
|
||||||
+lib@EGL_LIB@_la_SOURCES = \
|
+# Depending on whether libglvnd is enabled, we'll build the EGL library as
|
||||||
|
+# either libEGL.so.1 or libEGL_mesa.so.0. Using an automake substitution
|
||||||
|
+# in the variable names breaks "make dist" target, so use a conenience library
|
||||||
|
+# instead.
|
||||||
|
+noinst_LTLIBRARIES = libEGL_common.la
|
||||||
|
+libEGL_common_la_SOURCES = \
|
||||||
$(LIBEGL_C_FILES)
|
$(LIBEGL_C_FILES)
|
||||||
|
|
||||||
-libEGL_la_LIBADD = \
|
-libEGL_la_LIBADD = \
|
||||||
+lib@EGL_LIB@_la_LIBADD = \
|
+libEGL_common_la_LIBADD = \
|
||||||
$(EGL_LIB_DEPS)
|
$(EGL_LIB_DEPS)
|
||||||
-libEGL_la_LDFLAGS = \
|
-libEGL_la_LDFLAGS = \
|
||||||
+lib@EGL_LIB@_la_LDFLAGS = \
|
- -no-undefined \
|
||||||
-no-undefined \
|
|
||||||
- -version-number 1:0 \
|
- -version-number 1:0 \
|
||||||
+ -version-number $(EGL_LIB_VERSION) \
|
- $(BSYMBOLIC) \
|
||||||
$(BSYMBOLIC) \
|
- $(GC_SECTIONS) \
|
||||||
$(GC_SECTIONS) \
|
- $(LD_NO_UNDEFINED)
|
||||||
$(LD_NO_UNDEFINED)
|
|
||||||
@@ -52,7 +89,7 @@ dri3_backend_FILES =
|
dri2_backend_FILES =
|
||||||
|
dri3_backend_FILES =
|
||||||
|
@@ -52,7 +49,7 @@ dri3_backend_FILES =
|
||||||
if HAVE_PLATFORM_X11
|
if HAVE_PLATFORM_X11
|
||||||
AM_CFLAGS += -DHAVE_X11_PLATFORM
|
AM_CFLAGS += -DHAVE_X11_PLATFORM
|
||||||
AM_CFLAGS += $(XCB_DRI2_CFLAGS)
|
AM_CFLAGS += $(XCB_DRI2_CFLAGS)
|
||||||
-libEGL_la_LIBADD += $(XCB_DRI2_LIBS)
|
-libEGL_la_LIBADD += $(XCB_DRI2_LIBS)
|
||||||
+lib@EGL_LIB@_la_LIBADD += $(XCB_DRI2_LIBS)
|
+libEGL_common_la_LIBADD += $(XCB_DRI2_LIBS)
|
||||||
dri2_backend_FILES += drivers/dri2/platform_x11.c
|
dri2_backend_FILES += drivers/dri2/platform_x11.c
|
||||||
|
|
||||||
if HAVE_DRI3
|
if HAVE_DRI3
|
||||||
@@ -60,22 +97,22 @@ dri3_backend_FILES += \
|
@@ -60,22 +57,22 @@ dri3_backend_FILES += \
|
||||||
drivers/dri2/platform_x11_dri3.c \
|
drivers/dri2/platform_x11_dri3.c \
|
||||||
drivers/dri2/platform_x11_dri3.h
|
drivers/dri2/platform_x11_dri3.h
|
||||||
|
|
||||||
-libEGL_la_LIBADD += $(top_builddir)/src/loader/libloader_dri3_helper.la
|
-libEGL_la_LIBADD += $(top_builddir)/src/loader/libloader_dri3_helper.la
|
||||||
+lib@EGL_LIB@_la_LIBADD += $(top_builddir)/src/loader/libloader_dri3_helper.la
|
+libEGL_common_la_LIBADD += $(top_builddir)/src/loader/libloader_dri3_helper.la
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -333,39 +313,112 @@ index 304b0d3..1839155 100644
|
|||||||
-libEGL_la_LIBADD += $(WAYLAND_LIBS)
|
-libEGL_la_LIBADD += $(WAYLAND_LIBS)
|
||||||
-libEGL_la_LIBADD += $(LIBDRM_LIBS)
|
-libEGL_la_LIBADD += $(LIBDRM_LIBS)
|
||||||
-libEGL_la_LIBADD += $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la
|
-libEGL_la_LIBADD += $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la
|
||||||
+lib@EGL_LIB@_la_LIBADD += $(WAYLAND_LIBS)
|
+libEGL_common_la_LIBADD += $(WAYLAND_LIBS)
|
||||||
+lib@EGL_LIB@_la_LIBADD += $(LIBDRM_LIBS)
|
+libEGL_common_la_LIBADD += $(LIBDRM_LIBS)
|
||||||
+lib@EGL_LIB@_la_LIBADD += $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la
|
+libEGL_common_la_LIBADD += $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la
|
||||||
dri2_backend_FILES += drivers/dri2/platform_wayland.c
|
dri2_backend_FILES += drivers/dri2/platform_wayland.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_EGL_PLATFORM_DRM
|
if HAVE_EGL_PLATFORM_DRM
|
||||||
AM_CFLAGS += -DHAVE_DRM_PLATFORM
|
AM_CFLAGS += -DHAVE_DRM_PLATFORM
|
||||||
-libEGL_la_LIBADD += $(top_builddir)/src/gbm/libgbm.la
|
-libEGL_la_LIBADD += $(top_builddir)/src/gbm/libgbm.la
|
||||||
+lib@EGL_LIB@_la_LIBADD += $(top_builddir)/src/gbm/libgbm.la
|
+libEGL_common_la_LIBADD += $(top_builddir)/src/gbm/libgbm.la
|
||||||
dri2_backend_FILES += drivers/dri2/platform_drm.c
|
dri2_backend_FILES += drivers/dri2/platform_drm.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -100,13 +137,13 @@ AM_CFLAGS += \
|
@@ -87,7 +84,7 @@ endif
|
||||||
|
if HAVE_EGL_PLATFORM_ANDROID
|
||||||
|
AM_CFLAGS += -DHAVE_ANDROID_PLATFORM
|
||||||
|
AM_CFLAGS += $(ANDROID_CFLAGS)
|
||||||
|
-libEGL_la_LIBADD += $(ANDROID_LIBS)
|
||||||
|
+libEGL_common_la_LIBADD += $(ANDROID_LIBS)
|
||||||
|
dri2_backend_FILES += drivers/dri2/platform_android.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
@@ -101,13 +98,68 @@ AM_CFLAGS += \
|
||||||
-DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" \
|
-DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" \
|
||||||
-D_EGL_BUILT_IN_DRIVER_DRI2
|
-D_EGL_BUILT_IN_DRIVER_DRI2
|
||||||
|
|
||||||
-libEGL_la_SOURCES += \
|
-libEGL_la_SOURCES += \
|
||||||
+lib@EGL_LIB@_la_SOURCES += \
|
+libEGL_common_la_SOURCES += \
|
||||||
$(dri2_backend_core_FILES) \
|
$(dri2_backend_core_FILES) \
|
||||||
$(dri2_backend_FILES) \
|
$(dri2_backend_FILES) \
|
||||||
$(dri3_backend_FILES)
|
$(dri3_backend_FILES)
|
||||||
|
|
||||||
-libEGL_la_LIBADD += $(top_builddir)/src/loader/libloader.la
|
-libEGL_la_LIBADD += $(top_builddir)/src/loader/libloader.la
|
||||||
-libEGL_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS) $(CLOCK_LIB)
|
-libEGL_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS) $(CLOCK_LIB)
|
||||||
+lib@EGL_LIB@_la_LIBADD += $(top_builddir)/src/loader/libloader.la
|
+libEGL_common_la_LIBADD += $(top_builddir)/src/loader/libloader.la
|
||||||
+lib@EGL_LIB@_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS) $(CLOCK_LIB)
|
+libEGL_common_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS) $(CLOCK_LIB)
|
||||||
endif
|
+
|
||||||
|
+GLVND_GEN_DEPS = generate/gen_egl_dispatch.py \
|
||||||
|
+ generate/egl.xml generate/eglFunctionList.py generate/genCommon.py \
|
||||||
|
+ generate/egl_other.xml
|
||||||
|
+
|
||||||
|
+PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
|
||||||
|
+g_egldispatchstubs.c: $(GLVND_GEN_DEPS)
|
||||||
|
+ $(PYTHON_GEN) $(top_srcdir)/src/egl/generate/gen_egl_dispatch.py source \
|
||||||
|
+ $(top_srcdir)/src/egl/generate/eglFunctionList.py \
|
||||||
|
+ $(top_srcdir)/src/egl/generate/egl.xml \
|
||||||
|
+ $(top_srcdir)/src/egl/generate/egl_other.xml > $@
|
||||||
|
+
|
||||||
|
+g_egldispatchstubs.h: $(GLVND_GEN_DEPS)
|
||||||
|
+ $(PYTHON_GEN) $(top_srcdir)/src/egl/generate/gen_egl_dispatch.py header \
|
||||||
|
+ $(top_srcdir)/src/egl/generate/eglFunctionList.py \
|
||||||
|
+ $(top_srcdir)/src/egl/generate/egl.xml \
|
||||||
|
+ $(top_srcdir)/src/egl/generate/egl_other.xml > $@
|
||||||
|
+
|
||||||
|
+BUILT_SOURCES = g_egldispatchstubs.c g_egldispatchstubs.h
|
||||||
|
+CLEANFILES = $(BUILT_SOURCES)
|
||||||
|
+
|
||||||
|
+if USE_LIBGLVND_EGL
|
||||||
|
+AM_CFLAGS += \
|
||||||
|
+ $(GLVND_CFLAGS)
|
||||||
|
+
|
||||||
|
+vendorjsondir = @LIBGLVND_DATADIR@/glvnd/egl_vendor.d
|
||||||
|
+vendorjson_DATA = main/50_mesa.json
|
||||||
|
+
|
||||||
|
+lib_LTLIBRARIES = libEGL_mesa.la
|
||||||
|
+libEGL_mesa_la_SOURCES = \
|
||||||
|
+ main/eglglvnd.c \
|
||||||
|
+ main/egldispatchstubs.h \
|
||||||
|
+ main/egldispatchstubs.c \
|
||||||
|
+ g_egldispatchstubs.c
|
||||||
|
+libEGL_mesa_la_LIBADD = libEGL_common.la
|
||||||
|
+libEGL_mesa_la_LDFLAGS = \
|
||||||
|
+ -no-undefined \
|
||||||
|
+ -version-number 0 \
|
||||||
|
+ $(BSYMBOLIC) \
|
||||||
|
+ $(GC_SECTIONS) \
|
||||||
|
+ $(LD_NO_UNDEFINED)
|
||||||
|
+
|
||||||
|
+else # USE_LIBGLVND_EGL
|
||||||
|
+
|
||||||
|
+lib_LTLIBRARIES = libEGL.la
|
||||||
|
+libEGL_la_SOURCES =
|
||||||
|
+libEGL_la_LIBADD = libEGL_common.la
|
||||||
|
+libEGL_la_LDFLAGS = \
|
||||||
|
+ -no-undefined \
|
||||||
|
+ -version-number 1:0 \
|
||||||
|
+ $(BSYMBOLIC) \
|
||||||
|
+ $(GC_SECTIONS) \
|
||||||
|
+ $(LD_NO_UNDEFINED)
|
||||||
|
+
|
||||||
|
+endif # USE_LIBGLVND_EGL
|
||||||
|
|
||||||
include $(top_srcdir)/install-lib-links.mk
|
include $(top_srcdir)/install-lib-links.mk
|
||||||
|
|
||||||
|
@@ -133,4 +185,7 @@ EXTRA_DIST = \
|
||||||
|
SConscript \
|
||||||
|
drivers/haiku \
|
||||||
|
main/egl.def \
|
||||||
|
- main/README.txt
|
||||||
|
+ main/README.txt \
|
||||||
|
+ $(GLVND_GEN_DEPS) \
|
||||||
|
+ main/50_mesa.json
|
||||||
|
+
|
||||||
diff --git a/src/egl/generate/egl.xml b/src/egl/generate/egl.xml
|
diff --git a/src/egl/generate/egl.xml b/src/egl/generate/egl.xml
|
||||||
new file mode 100644
|
new file mode 100755
|
||||||
index 0000000..f6dbbc0
|
index 0000000000..f6dbbc0f26
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/generate/egl.xml
|
+++ b/src/egl/generate/egl.xml
|
||||||
@@ -0,0 +1,2412 @@
|
@@ -0,0 +1,2412 @@
|
||||||
@ -2783,11 +2836,11 @@ index 0000000..f6dbbc0
|
|||||||
+</registry>
|
+</registry>
|
||||||
diff --git a/src/egl/generate/eglFunctionList.py b/src/egl/generate/eglFunctionList.py
|
diff --git a/src/egl/generate/eglFunctionList.py b/src/egl/generate/eglFunctionList.py
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..39d3dd5
|
index 0000000000..b19b5f7193
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/generate/eglFunctionList.py
|
+++ b/src/egl/generate/eglFunctionList.py
|
||||||
@@ -0,0 +1,191 @@
|
@@ -0,0 +1,197 @@
|
||||||
+#!/usr/bin/python
|
+#!/usr/bin/env python
|
||||||
+
|
+
|
||||||
+"""
|
+"""
|
||||||
+Contains a list of EGL functions to generate dispatch functions for.
|
+Contains a list of EGL functions to generate dispatch functions for.
|
||||||
@ -2846,7 +2899,7 @@ index 0000000..39d3dd5
|
|||||||
+ """
|
+ """
|
||||||
+ A convenience function to define an entry in the EGL function list.
|
+ A convenience function to define an entry in the EGL function list.
|
||||||
+ """
|
+ """
|
||||||
+ if (inheader == None):
|
+ if inheader is None:
|
||||||
+ inheader = (not public)
|
+ inheader = (not public)
|
||||||
+ values = {
|
+ values = {
|
||||||
+ "method" : method,
|
+ "method" : method,
|
||||||
@ -2927,6 +2980,9 @@ index 0000000..39d3dd5
|
|||||||
+ # EGL_EXT_swap_buffers_with_damage
|
+ # EGL_EXT_swap_buffers_with_damage
|
||||||
+ _eglFunc("eglSwapBuffersWithDamageEXT", "display"),
|
+ _eglFunc("eglSwapBuffersWithDamageEXT", "display"),
|
||||||
+
|
+
|
||||||
|
+ # KHR_EXT_swap_buffers_with_damage
|
||||||
|
+ _eglFunc("eglSwapBuffersWithDamageKHR", "display"),
|
||||||
|
+
|
||||||
+ # EGL_KHR_cl_event2
|
+ # EGL_KHR_cl_event2
|
||||||
+ _eglFunc("eglCreateSync64KHR", "display"),
|
+ _eglFunc("eglCreateSync64KHR", "display"),
|
||||||
+
|
+
|
||||||
@ -2976,11 +3032,14 @@ index 0000000..39d3dd5
|
|||||||
+
|
+
|
||||||
+ # EGL_CHROMIUM_get_sync_values
|
+ # EGL_CHROMIUM_get_sync_values
|
||||||
+ _eglFunc("eglGetSyncValuesCHROMIUM", "display"),
|
+ _eglFunc("eglGetSyncValuesCHROMIUM", "display"),
|
||||||
|
+
|
||||||
|
+ # EGL_ANDROID_native_fence_sync
|
||||||
|
+ _eglFunc("eglDupNativeFenceFDANDROID", "display"),
|
||||||
+)
|
+)
|
||||||
+
|
+
|
||||||
diff --git a/src/egl/generate/egl_other.xml b/src/egl/generate/egl_other.xml
|
diff --git a/src/egl/generate/egl_other.xml b/src/egl/generate/egl_other.xml
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..7fe3a9e
|
index 0000000000..7fe3a9e272
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/generate/egl_other.xml
|
+++ b/src/egl/generate/egl_other.xml
|
||||||
@@ -0,0 +1,47 @@
|
@@ -0,0 +1,47 @@
|
||||||
@ -3033,7 +3092,7 @@ index 0000000..7fe3a9e
|
|||||||
+
|
+
|
||||||
diff --git a/src/egl/generate/genCommon.py b/src/egl/generate/genCommon.py
|
diff --git a/src/egl/generate/genCommon.py b/src/egl/generate/genCommon.py
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..5781275
|
index 0000000000..d493d7bf29
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/generate/genCommon.py
|
+++ b/src/egl/generate/genCommon.py
|
||||||
@@ -0,0 +1,223 @@
|
@@ -0,0 +1,223 @@
|
||||||
@ -3064,9 +3123,9 @@ index 0000000..5781275
|
|||||||
+# Authors:
|
+# Authors:
|
||||||
+# Kyle Brenneman <kbrenneman@nvidia.com>
|
+# Kyle Brenneman <kbrenneman@nvidia.com>
|
||||||
+
|
+
|
||||||
+import sys
|
|
||||||
+import collections
|
+import collections
|
||||||
+import re
|
+import re
|
||||||
|
+import sys
|
||||||
+import xml.etree.cElementTree as etree
|
+import xml.etree.cElementTree as etree
|
||||||
+
|
+
|
||||||
+MAPI_TABLE_NUM_DYNAMIC = 4096
|
+MAPI_TABLE_NUM_DYNAMIC = 4096
|
||||||
@ -3110,7 +3169,7 @@ index 0000000..5781275
|
|||||||
+ # Assign a slot number to each function. This isn't strictly necessary,
|
+ # Assign a slot number to each function. This isn't strictly necessary,
|
||||||
+ # since you can just look at the index in the list, but it makes it easier
|
+ # since you can just look at the index in the list, but it makes it easier
|
||||||
+ # to include the slot when formatting output.
|
+ # to include the slot when formatting output.
|
||||||
+ for i in xrange(len(functions)):
|
+ for i in range(len(functions)):
|
||||||
+ functions[i] = functions[i]._replace(slot=i)
|
+ functions[i] = functions[i]._replace(slot=i)
|
||||||
+
|
+
|
||||||
+ return functions
|
+ return functions
|
||||||
@ -3124,17 +3183,17 @@ index 0000000..5781275
|
|||||||
+ "glesv2".
|
+ "glesv2".
|
||||||
+ """
|
+ """
|
||||||
+ featureNames = _LIBRARY_FEATURE_NAMES[target]
|
+ featureNames = _LIBRARY_FEATURE_NAMES[target]
|
||||||
+ if (featureNames == None):
|
+ if featureNames is None:
|
||||||
+ return set(func.name for func in getFunctionsFromRoots(roots))
|
+ return set(func.name for func in getFunctionsFromRoots(roots))
|
||||||
+
|
+
|
||||||
+ names = set()
|
+ names = set()
|
||||||
+ for root in roots:
|
+ for root in roots:
|
||||||
+ features = []
|
+ features = []
|
||||||
+ for featElem in root.findall("feature"):
|
+ for featElem in root.findall("feature"):
|
||||||
+ if (featElem.get("name") in featureNames):
|
+ if featElem.get("name") in featureNames:
|
||||||
+ features.append(featElem)
|
+ features.append(featElem)
|
||||||
+ for featElem in root.findall("extensions/extension"):
|
+ for featElem in root.findall("extensions/extension"):
|
||||||
+ if (featElem.get("name") in featureNames):
|
+ if featElem.get("name") in featureNames:
|
||||||
+ features.append(featElem)
|
+ features.append(featElem)
|
||||||
+ for featElem in features:
|
+ for featElem in features:
|
||||||
+ for commandElem in featElem.findall("require/command"):
|
+ for commandElem in featElem.findall("require/command"):
|
||||||
@ -3148,7 +3207,7 @@ index 0000000..5781275
|
|||||||
+ Returns a "TYPE NAME" string, suitable for a function prototype.
|
+ Returns a "TYPE NAME" string, suitable for a function prototype.
|
||||||
+ """
|
+ """
|
||||||
+ rv = str(self.type)
|
+ rv = str(self.type)
|
||||||
+ if(not rv.endswith("*")):
|
+ if not rv.endswith("*"):
|
||||||
+ rv += " "
|
+ rv += " "
|
||||||
+ rv += self.name
|
+ rv += self.name
|
||||||
+ return rv
|
+ return rv
|
||||||
@ -3166,7 +3225,7 @@ index 0000000..5781275
|
|||||||
+ Returns a string with the types and names of the arguments, as you
|
+ Returns a string with the types and names of the arguments, as you
|
||||||
+ would use in a function declaration.
|
+ would use in a function declaration.
|
||||||
+ """
|
+ """
|
||||||
+ if(len(self.args) == 0):
|
+ if not self.args:
|
||||||
+ return "void"
|
+ return "void"
|
||||||
+ else:
|
+ else:
|
||||||
+ return ", ".join(arg.dec for arg in self.args)
|
+ return ", ".join(arg.dec for arg in self.args)
|
||||||
@ -3181,7 +3240,7 @@ index 0000000..5781275
|
|||||||
+
|
+
|
||||||
+ @property
|
+ @property
|
||||||
+ def basename(self):
|
+ def basename(self):
|
||||||
+ assert(self.name.startswith("gl"))
|
+ assert self.name.startswith("gl")
|
||||||
+ return self.name[2:]
|
+ return self.name[2:]
|
||||||
+
|
+
|
||||||
+def _getFunctionList(root):
|
+def _getFunctionList(root):
|
||||||
@ -3205,10 +3264,10 @@ index 0000000..5781275
|
|||||||
+ text = _flattenText(elem)
|
+ text = _flattenText(elem)
|
||||||
+ text = text.strip()
|
+ text = text.strip()
|
||||||
+ m = re.match(r"^(.+)\b(\w+)(?:\s*\[\s*(\d*)\s*\])?$", text, re.S)
|
+ m = re.match(r"^(.+)\b(\w+)(?:\s*\[\s*(\d*)\s*\])?$", text, re.S)
|
||||||
+ if (m):
|
+ if m:
|
||||||
+ typename = _fixupTypeName(m.group(1))
|
+ typename = _fixupTypeName(m.group(1))
|
||||||
+ name = m.group(2)
|
+ name = m.group(2)
|
||||||
+ if (m.group(3)):
|
+ if m.group(3):
|
||||||
+ # HACK: glPathGlyphIndexRangeNV defines an argument like this:
|
+ # HACK: glPathGlyphIndexRangeNV defines an argument like this:
|
||||||
+ # GLuint baseAndCount[2]
|
+ # GLuint baseAndCount[2]
|
||||||
+ # Convert it to a pointer and hope for the best.
|
+ # Convert it to a pointer and hope for the best.
|
||||||
@ -3223,11 +3282,11 @@ index 0000000..5781275
|
|||||||
+ removed.
|
+ removed.
|
||||||
+ """
|
+ """
|
||||||
+ text = ""
|
+ text = ""
|
||||||
+ if(elem.text != None):
|
+ if elem.text is not None:
|
||||||
+ text = elem.text
|
+ text = elem.text
|
||||||
+ for ch in elem:
|
+ for ch in elem:
|
||||||
+ text += _flattenText(ch)
|
+ text += _flattenText(ch)
|
||||||
+ if(ch.tail != None):
|
+ if ch.tail is not None:
|
||||||
+ text += ch.tail
|
+ text += ch.tail
|
||||||
+ return text
|
+ return text
|
||||||
+
|
+
|
||||||
@ -3261,12 +3320,37 @@ index 0000000..5781275
|
|||||||
+ return rv
|
+ return rv
|
||||||
+
|
+
|
||||||
diff --git a/src/egl/generate/gen_egl_dispatch.py b/src/egl/generate/gen_egl_dispatch.py
|
diff --git a/src/egl/generate/gen_egl_dispatch.py b/src/egl/generate/gen_egl_dispatch.py
|
||||||
new file mode 100644
|
new file mode 100755
|
||||||
index 0000000..1e145aa
|
index 0000000000..eeb3f3f9a5
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/generate/gen_egl_dispatch.py
|
+++ b/src/egl/generate/gen_egl_dispatch.py
|
||||||
@@ -0,0 +1,223 @@
|
@@ -0,0 +1,250 @@
|
||||||
+#!/usr/bin/python
|
+#!/usr/bin/env python
|
||||||
|
+
|
||||||
|
+# (C) Copyright 2016, NVIDIA CORPORATION.
|
||||||
|
+# All Rights Reserved.
|
||||||
|
+#
|
||||||
|
+# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
+# copy of this software and associated documentation files (the "Software"),
|
||||||
|
+# to deal in the Software without restriction, including without limitation
|
||||||
|
+# on the rights to use, copy, modify, merge, publish, distribute, sub
|
||||||
|
+# license, and/or sell copies of the Software, and to permit persons to whom
|
||||||
|
+# the Software is furnished to do so, subject to the following conditions:
|
||||||
|
+#
|
||||||
|
+# The above copyright notice and this permission notice (including the next
|
||||||
|
+# paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
+# Software.
|
||||||
|
+#
|
||||||
|
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
+# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
+# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
+# IN THE SOFTWARE.
|
||||||
|
+#
|
||||||
|
+# Authors:
|
||||||
|
+# Kyle Brenneman <kbrenneman@nvidia.com>
|
||||||
+
|
+
|
||||||
+"""
|
+"""
|
||||||
+Generates dispatch functions for EGL.
|
+Generates dispatch functions for EGL.
|
||||||
@ -3275,26 +3359,28 @@ index 0000000..1e145aa
|
|||||||
+additional information defined in the module eglFunctionList.
|
+additional information defined in the module eglFunctionList.
|
||||||
+"""
|
+"""
|
||||||
+
|
+
|
||||||
+import sys
|
+import argparse
|
||||||
+import collections
|
+import collections
|
||||||
+import imp
|
+import imp
|
||||||
|
+import sys
|
||||||
|
+import textwrap
|
||||||
+
|
+
|
||||||
+import genCommon
|
+import genCommon
|
||||||
+
|
+
|
||||||
+def main():
|
+def main():
|
||||||
+ if (len(sys.argv) < 4):
|
+ parser = argparse.ArgumentParser()
|
||||||
+ print("Usage: %r source|header <function_list> <xml_file> [xml_file...]" % (sys.argv[0],))
|
+ parser.add_argument("target", choices=("header", "source"),
|
||||||
+ sys.exit(2)
|
+ help="Whether to build the source or header file.")
|
||||||
|
+ parser.add_argument("func_list_file", help="The function list .py file.")
|
||||||
|
+ parser.add_argument("xml_files", nargs="+", help="The XML files with the EGL function lists.")
|
||||||
+
|
+
|
||||||
+ target = sys.argv[1]
|
+ args = parser.parse_args()
|
||||||
+ funcListFile = sys.argv[2]
|
|
||||||
+ xmlFiles = sys.argv[3:]
|
|
||||||
+
|
+
|
||||||
+ # The function list is a Python module, but it's specified on the command
|
+ # The function list is a Python module, but it's specified on the command
|
||||||
+ # line.
|
+ # line.
|
||||||
+ eglFunctionList = imp.load_source("eglFunctionList", funcListFile)
|
+ eglFunctionList = imp.load_source("eglFunctionList", args.func_list_file)
|
||||||
+
|
+
|
||||||
+ xmlFunctions = genCommon.getFunctions(xmlFiles)
|
+ xmlFunctions = genCommon.getFunctions(args.xml_files)
|
||||||
+ xmlByName = dict((f.name, f) for f in xmlFunctions)
|
+ xmlByName = dict((f.name, f) for f in xmlFunctions)
|
||||||
+ functions = []
|
+ functions = []
|
||||||
+ for (name, eglFunc) in eglFunctionList.EGL_FUNCTIONS:
|
+ for (name, eglFunc) in eglFunctionList.EGL_FUNCTIONS:
|
||||||
@ -3305,49 +3391,47 @@ index 0000000..1e145aa
|
|||||||
+ # Sort the function list by name.
|
+ # Sort the function list by name.
|
||||||
+ functions = sorted(functions, key=lambda f: f[0].name)
|
+ functions = sorted(functions, key=lambda f: f[0].name)
|
||||||
+
|
+
|
||||||
+ if (target == "header"):
|
+ if args.target == "header":
|
||||||
+ text = generateHeader(functions)
|
+ text = generateHeader(functions)
|
||||||
+ elif (target == "source"):
|
+ elif args.target == "source":
|
||||||
+ text = generateSource(functions)
|
+ text = generateSource(functions)
|
||||||
+ else:
|
|
||||||
+ raise ValueError("Invalid target: %r" % (target,))
|
|
||||||
+ sys.stdout.write(text)
|
+ sys.stdout.write(text)
|
||||||
+
|
+
|
||||||
+def fixupEglFunc(func, eglFunc):
|
+def fixupEglFunc(func, eglFunc):
|
||||||
+ result = dict(eglFunc)
|
+ result = dict(eglFunc)
|
||||||
+ if (result.get("prefix") == None):
|
+ if result.get("prefix") is None:
|
||||||
+ result["prefix"] = ""
|
+ result["prefix"] = ""
|
||||||
+
|
+
|
||||||
+ if (result.get("extension") != None):
|
+ if result.get("extension") is not None:
|
||||||
+ text = "defined(" + result["extension"] + ")"
|
+ text = "defined(" + result["extension"] + ")"
|
||||||
+ result["extension"] = text
|
+ result["extension"] = text
|
||||||
+
|
+
|
||||||
+ if (result["method"] in ("none", "custom")):
|
+ if result["method"] in ("none", "custom"):
|
||||||
+ return result
|
+ return result
|
||||||
+
|
+
|
||||||
+ if (result["method"] not in ("display", "device", "current")):
|
+ if result["method"] not in ("display", "device", "current"):
|
||||||
+ raise ValueError("Invalid dispatch method %r for function %r" % (result["method"], func.name))
|
+ raise ValueError("Invalid dispatch method %r for function %r" % (result["method"], func.name))
|
||||||
+
|
+
|
||||||
+ if (func.hasReturn()):
|
+ if func.hasReturn():
|
||||||
+ if (result.get("retval") == None):
|
+ if result.get("retval") is None:
|
||||||
+ result["retval"] = getDefaultReturnValue(func.rt)
|
+ result["retval"] = getDefaultReturnValue(func.rt)
|
||||||
+
|
+
|
||||||
+ return result
|
+ return result
|
||||||
+
|
+
|
||||||
+def generateHeader(functions):
|
+def generateHeader(functions):
|
||||||
+ text = r"""
|
+ text = textwrap.dedent(r"""
|
||||||
+#ifndef G_EGLDISPATCH_STUBS_H
|
+ #ifndef G_EGLDISPATCH_STUBS_H
|
||||||
+#define G_EGLDISPATCH_STUBS_H
|
+ #define G_EGLDISPATCH_STUBS_H
|
||||||
+
|
+
|
||||||
+#ifdef __cplusplus
|
+ #ifdef __cplusplus
|
||||||
+extern "C" {
|
+ extern "C" {
|
||||||
+#endif
|
+ #endif
|
||||||
+
|
+
|
||||||
+#include <EGL/egl.h>
|
+ #include <EGL/egl.h>
|
||||||
+#include <EGL/eglext.h>
|
+ #include <EGL/eglext.h>
|
||||||
+#include "glvnd/libeglabi.h"
|
+ #include "glvnd/libeglabi.h"
|
||||||
+
|
+
|
||||||
+""".lstrip("\n")
|
+ """.lstrip("\n"))
|
||||||
+
|
+
|
||||||
+ text += "enum {\n"
|
+ text += "enum {\n"
|
||||||
+ for (func, eglFunc) in functions:
|
+ for (func, eglFunc) in functions:
|
||||||
@ -3358,17 +3442,17 @@ index 0000000..1e145aa
|
|||||||
+ text += "};\n"
|
+ text += "};\n"
|
||||||
+
|
+
|
||||||
+ for (func, eglFunc) in functions:
|
+ for (func, eglFunc) in functions:
|
||||||
+ if (eglFunc["inheader"]):
|
+ if eglFunc["inheader"]:
|
||||||
+ text += generateGuardBegin(func, eglFunc)
|
+ text += generateGuardBegin(func, eglFunc)
|
||||||
+ text += "{f.rt} EGLAPIENTRY {ex[prefix]}{f.name}({f.decArgs});\n".format(f=func, ex=eglFunc)
|
+ text += "{f.rt} EGLAPIENTRY {ex[prefix]}{f.name}({f.decArgs});\n".format(f=func, ex=eglFunc)
|
||||||
+ text += generateGuardEnd(func, eglFunc)
|
+ text += generateGuardEnd(func, eglFunc)
|
||||||
+
|
+
|
||||||
+ text += r"""
|
+ text += textwrap.dedent(r"""
|
||||||
+#ifdef __cplusplus
|
+ #ifdef __cplusplus
|
||||||
+}
|
+ }
|
||||||
+#endif
|
+ #endif
|
||||||
+#endif // G_EGLDISPATCH_STUBS_H
|
+ #endif // G_EGLDISPATCH_STUBS_H
|
||||||
+"""
|
+ """)
|
||||||
+ return text
|
+ return text
|
||||||
+
|
+
|
||||||
+def generateSource(functions):
|
+def generateSource(functions):
|
||||||
@ -3379,7 +3463,7 @@ index 0000000..1e145aa
|
|||||||
+ text += "\n"
|
+ text += "\n"
|
||||||
+
|
+
|
||||||
+ for (func, eglFunc) in functions:
|
+ for (func, eglFunc) in functions:
|
||||||
+ if (eglFunc["method"] not in ("custom", "none")):
|
+ if eglFunc["method"] not in ("custom", "none"):
|
||||||
+ text += generateGuardBegin(func, eglFunc)
|
+ text += generateGuardBegin(func, eglFunc)
|
||||||
+ text += generateDispatchFunc(func, eglFunc)
|
+ text += generateDispatchFunc(func, eglFunc)
|
||||||
+ text += generateGuardEnd(func, eglFunc)
|
+ text += generateGuardEnd(func, eglFunc)
|
||||||
@ -3396,7 +3480,7 @@ index 0000000..1e145aa
|
|||||||
+ text += "const __eglMustCastToProperFunctionPointerType __EGL_DISPATCH_FUNCS[__EGL_DISPATCH_COUNT + 1] = {\n"
|
+ text += "const __eglMustCastToProperFunctionPointerType __EGL_DISPATCH_FUNCS[__EGL_DISPATCH_COUNT + 1] = {\n"
|
||||||
+ for (func, eglFunc) in functions:
|
+ for (func, eglFunc) in functions:
|
||||||
+ text += generateGuardBegin(func, eglFunc)
|
+ text += generateGuardBegin(func, eglFunc)
|
||||||
+ if (eglFunc["method"] != "none"):
|
+ if eglFunc["method"] != "none":
|
||||||
+ text += " (__eglMustCastToProperFunctionPointerType) " + eglFunc.get("prefix", "") + func.name + ",\n"
|
+ text += " (__eglMustCastToProperFunctionPointerType) " + eglFunc.get("prefix", "") + func.name + ",\n"
|
||||||
+ else:
|
+ else:
|
||||||
+ text += " NULL, // " + func.name + "\n"
|
+ text += " NULL, // " + func.name + "\n"
|
||||||
@ -3408,13 +3492,13 @@ index 0000000..1e145aa
|
|||||||
+
|
+
|
||||||
+def generateGuardBegin(func, eglFunc):
|
+def generateGuardBegin(func, eglFunc):
|
||||||
+ ext = eglFunc.get("extension")
|
+ ext = eglFunc.get("extension")
|
||||||
+ if (ext != None):
|
+ if ext is not None:
|
||||||
+ return "#if " + ext + "\n"
|
+ return "#if " + ext + "\n"
|
||||||
+ else:
|
+ else:
|
||||||
+ return ""
|
+ return ""
|
||||||
+
|
+
|
||||||
+def generateGuardEnd(func, eglFunc):
|
+def generateGuardEnd(func, eglFunc):
|
||||||
+ if (eglFunc.get("extension") != None):
|
+ if eglFunc.get("extension") is not None:
|
||||||
+ return "#endif\n"
|
+ return "#endif\n"
|
||||||
+ else:
|
+ else:
|
||||||
+ return ""
|
+ return ""
|
||||||
@ -3422,37 +3506,39 @@ index 0000000..1e145aa
|
|||||||
+def generateDispatchFunc(func, eglFunc):
|
+def generateDispatchFunc(func, eglFunc):
|
||||||
+ text = ""
|
+ text = ""
|
||||||
+
|
+
|
||||||
+ if (eglFunc.get("static")):
|
+ if eglFunc.get("static"):
|
||||||
+ text += "static "
|
+ text += "static "
|
||||||
+ elif (eglFunc.get("public")):
|
+ elif eglFunc.get("public"):
|
||||||
+ text += "PUBLIC "
|
+ text += "PUBLIC "
|
||||||
+ text += r"""{f.rt} EGLAPIENTRY {ef[prefix]}{f.name}({f.decArgs})
|
+ text += textwrap.dedent(
|
||||||
+{{
|
+ r"""
|
||||||
+ typedef {f.rt} EGLAPIENTRY (* _pfn_{f.name})({f.decArgs});
|
+ {f.rt} EGLAPIENTRY {ef[prefix]}{f.name}({f.decArgs})
|
||||||
+""".format(f=func, ef=eglFunc)
|
+ {{
|
||||||
|
+ typedef {f.rt} EGLAPIENTRY (* _pfn_{f.name})({f.decArgs});
|
||||||
|
+ """).lstrip("\n").format(f=func, ef=eglFunc)
|
||||||
+
|
+
|
||||||
+ if (func.hasReturn()):
|
+ if func.hasReturn():
|
||||||
+ text += " {f.rt} _ret = {ef[retval]};\n".format(f=func, ef=eglFunc)
|
+ text += " {f.rt} _ret = {ef[retval]};\n".format(f=func, ef=eglFunc)
|
||||||
+
|
+
|
||||||
+ text += " _pfn_{f.name} _ptr_{f.name} = (_pfn_{f.name}) ".format(f=func)
|
+ text += " _pfn_{f.name} _ptr_{f.name} = (_pfn_{f.name}) ".format(f=func)
|
||||||
+ if (eglFunc["method"] == "current"):
|
+ if eglFunc["method"] == "current":
|
||||||
+ text += "__eglDispatchFetchByCurrent(__EGL_DISPATCH_{f.name});\n".format(f=func)
|
+ text += "__eglDispatchFetchByCurrent(__EGL_DISPATCH_{f.name});\n".format(f=func)
|
||||||
+
|
+
|
||||||
+ elif (eglFunc["method"] in ("display", "device")):
|
+ elif eglFunc["method"] in ("display", "device"):
|
||||||
+ if (eglFunc["method"] == "display"):
|
+ if eglFunc["method"] == "display":
|
||||||
+ lookupFunc = "__eglDispatchFetchByDisplay"
|
+ lookupFunc = "__eglDispatchFetchByDisplay"
|
||||||
+ lookupType = "EGLDisplay"
|
+ lookupType = "EGLDisplay"
|
||||||
+ else:
|
+ else:
|
||||||
+ assert(eglFunc["method"] == "device")
|
+ assert eglFunc["method"] == "device"
|
||||||
+ lookupFunc = "__eglDispatchFetchByDevice"
|
+ lookupFunc = "__eglDispatchFetchByDevice"
|
||||||
+ lookupType = "EGLDeviceEXT"
|
+ lookupType = "EGLDeviceEXT"
|
||||||
+
|
+
|
||||||
+ lookupArg = None
|
+ lookupArg = None
|
||||||
+ for arg in func.args:
|
+ for arg in func.args:
|
||||||
+ if (arg.type == lookupType):
|
+ if arg.type == lookupType:
|
||||||
+ lookupArg = arg.name
|
+ lookupArg = arg.name
|
||||||
+ break
|
+ break
|
||||||
+ if (lookupArg == None):
|
+ if lookupArg is None:
|
||||||
+ raise ValueError("Can't find %s argument for function %s" % (lookupType, func.name,))
|
+ raise ValueError("Can't find %s argument for function %s" % (lookupType, func.name,))
|
||||||
+
|
+
|
||||||
+ text += "{lookupFunc}({lookupArg}, __EGL_DISPATCH_{f.name});\n".format(
|
+ text += "{lookupFunc}({lookupArg}, __EGL_DISPATCH_{f.name});\n".format(
|
||||||
@ -3462,50 +3548,50 @@ index 0000000..1e145aa
|
|||||||
+
|
+
|
||||||
+ text += " if(_ptr_{f.name} != NULL) {{\n".format(f=func)
|
+ text += " if(_ptr_{f.name} != NULL) {{\n".format(f=func)
|
||||||
+ text += " "
|
+ text += " "
|
||||||
+ if (func.hasReturn()):
|
+ if func.hasReturn():
|
||||||
+ text += "_ret = "
|
+ text += "_ret = "
|
||||||
+ text += "_ptr_{f.name}({f.callArgs});\n".format(f=func)
|
+ text += "_ptr_{f.name}({f.callArgs});\n".format(f=func)
|
||||||
+ text += " }\n"
|
+ text += " }\n"
|
||||||
+
|
+
|
||||||
+ if (func.hasReturn()):
|
+ if func.hasReturn():
|
||||||
+ text += " return _ret;\n"
|
+ text += " return _ret;\n"
|
||||||
+ text += "}\n"
|
+ text += "}\n"
|
||||||
+ return text
|
+ return text
|
||||||
+
|
+
|
||||||
+def getDefaultReturnValue(typename):
|
+def getDefaultReturnValue(typename):
|
||||||
+ if (typename.endswith("*")):
|
+ if typename.endswith("*"):
|
||||||
+ return "NULL"
|
+ return "NULL"
|
||||||
+ elif (typename == "EGLDisplay"):
|
+ elif typename == "EGLDisplay":
|
||||||
+ return "EGL_NO_DISPLAY"
|
+ return "EGL_NO_DISPLAY"
|
||||||
+ elif (typename == "EGLContext"):
|
+ elif typename == "EGLContext":
|
||||||
+ return "EGL_NO_CONTEXT"
|
+ return "EGL_NO_CONTEXT"
|
||||||
+ elif (typename == "EGLSurface"):
|
+ elif typename == "EGLSurface":
|
||||||
+ return "EGL_NO_SURFACE"
|
+ return "EGL_NO_SURFACE"
|
||||||
+ elif (typename == "EGLBoolean"):
|
+ elif typename == "EGLBoolean":
|
||||||
+ return "EGL_FALSE";
|
+ return "EGL_FALSE";
|
||||||
+
|
+
|
||||||
+ return "0"
|
+ return "0"
|
||||||
+
|
+
|
||||||
+if (__name__ == "__main__"):
|
+if __name__ == "__main__":
|
||||||
+ main()
|
+ main()
|
||||||
+
|
+
|
||||||
diff --git a/src/egl/main/50_mesa.json.in b/src/egl/main/50_mesa.json.in
|
diff --git a/src/egl/main/50_mesa.json b/src/egl/main/50_mesa.json
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..58e2bd2
|
index 0000000000..8aaaa100ff
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/main/50_mesa.json.in
|
+++ b/src/egl/main/50_mesa.json
|
||||||
@@ -0,0 +1,6 @@
|
@@ -0,0 +1,6 @@
|
||||||
+{
|
+{
|
||||||
+ "file_format_version" : "1.0.0",
|
+ "file_format_version" : "1.0.0",
|
||||||
+ "ICD" : {
|
+ "ICD" : {
|
||||||
+ "library_path" : "lib@EGL_LIB@.so.0"
|
+ "library_path" : "libEGL_mesa.so.0"
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
|
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
|
||||||
index 471cf7e..7ee9d87 100644
|
index cab05c2301..5f21f3457d 100644
|
||||||
--- a/src/egl/main/eglapi.c
|
--- a/src/egl/main/eglapi.c
|
||||||
+++ b/src/egl/main/eglapi.c
|
+++ b/src/egl/main/eglapi.c
|
||||||
@@ -644,7 +644,11 @@ eglQueryString(EGLDisplay dpy, EGLint name)
|
@@ -651,7 +651,11 @@ eglQueryString(EGLDisplay dpy, EGLint name)
|
||||||
_EGLDriver *drv;
|
_EGLDriver *drv;
|
||||||
|
|
||||||
if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS) {
|
if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS) {
|
||||||
@ -3520,7 +3606,7 @@ index 471cf7e..7ee9d87 100644
|
|||||||
disp = _eglLockDisplay(dpy);
|
disp = _eglLockDisplay(dpy);
|
||||||
diff --git a/src/egl/main/egldispatchstubs.c b/src/egl/main/egldispatchstubs.c
|
diff --git a/src/egl/main/egldispatchstubs.c b/src/egl/main/egldispatchstubs.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..e02abd7
|
index 0000000000..e02abd7a9e
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/main/egldispatchstubs.c
|
+++ b/src/egl/main/egldispatchstubs.c
|
||||||
@@ -0,0 +1,110 @@
|
@@ -0,0 +1,110 @@
|
||||||
@ -3636,7 +3722,7 @@ index 0000000..e02abd7
|
|||||||
+
|
+
|
||||||
diff --git a/src/egl/main/egldispatchstubs.h b/src/egl/main/egldispatchstubs.h
|
diff --git a/src/egl/main/egldispatchstubs.h b/src/egl/main/egldispatchstubs.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..7861ea5
|
index 0000000000..7861ea5e61
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/main/egldispatchstubs.h
|
+++ b/src/egl/main/egldispatchstubs.h
|
||||||
@@ -0,0 +1,26 @@
|
@@ -0,0 +1,26 @@
|
||||||
@ -3667,7 +3753,7 @@ index 0000000..7861ea5
|
|||||||
+
|
+
|
||||||
+#endif // EGLDISPATCHSTUBS_H
|
+#endif // EGLDISPATCHSTUBS_H
|
||||||
diff --git a/src/egl/main/eglglobals.c b/src/egl/main/eglglobals.c
|
diff --git a/src/egl/main/eglglobals.c b/src/egl/main/eglglobals.c
|
||||||
index cb41063..e59e8f3 100644
|
index cb41063e32..baf96bb1ec 100644
|
||||||
--- a/src/egl/main/eglglobals.c
|
--- a/src/egl/main/eglglobals.c
|
||||||
+++ b/src/egl/main/eglglobals.c
|
+++ b/src/egl/main/eglglobals.c
|
||||||
@@ -29,6 +29,8 @@
|
@@ -29,6 +29,8 @@
|
||||||
@ -3679,32 +3765,34 @@ index cb41063..e59e8f3 100644
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "c11/threads.h"
|
#include "c11/threads.h"
|
||||||
|
|
||||||
@@ -50,8 +52,11 @@ struct _egl_global _eglGlobal =
|
@@ -50,9 +52,13 @@ struct _egl_global _eglGlobal =
|
||||||
_eglFiniDisplay
|
_eglFiniDisplay
|
||||||
},
|
},
|
||||||
|
|
||||||
- /* ClientExtensionString */
|
- /* ClientExtensionString */
|
||||||
+ /* ClientOnlyExtensionString */
|
+ /* ClientOnlyExtensionString */
|
||||||
"EGL_EXT_client_extensions"
|
"EGL_EXT_client_extensions"
|
||||||
+ " EGL_KHR_client_get_all_proc_addresses",
|
" EGL_EXT_platform_base"
|
||||||
|
+ " EGL_KHR_client_get_all_proc_addresses"
|
||||||
|
+ " EGL_KHR_debug",
|
||||||
+
|
+
|
||||||
+ /* PlatformExtensionString */
|
+ /* PlatformExtensionString */
|
||||||
" EGL_EXT_platform_base"
|
|
||||||
#ifdef HAVE_WAYLAND_PLATFORM
|
#ifdef HAVE_WAYLAND_PLATFORM
|
||||||
" EGL_EXT_platform_wayland"
|
" EGL_EXT_platform_wayland"
|
||||||
@@ -65,9 +70,10 @@ struct _egl_global _eglGlobal =
|
#endif
|
||||||
|
@@ -65,8 +71,9 @@ struct _egl_global _eglGlobal =
|
||||||
#ifdef HAVE_SURFACELESS_PLATFORM
|
#ifdef HAVE_SURFACELESS_PLATFORM
|
||||||
" EGL_MESA_platform_surfaceless"
|
" EGL_MESA_platform_surfaceless"
|
||||||
#endif
|
#endif
|
||||||
- " EGL_KHR_client_get_all_proc_addresses"
|
- " EGL_KHR_client_get_all_proc_addresses"
|
||||||
" EGL_KHR_debug",
|
- " EGL_KHR_debug",
|
||||||
|
+ "",
|
||||||
+ NULL, /* ClientExtensionsString */
|
|
||||||
+
|
+
|
||||||
|
+ NULL, /* ClientExtensionsString */
|
||||||
|
|
||||||
NULL, /* debugCallback */
|
NULL, /* debugCallback */
|
||||||
_EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR, /* debugTypesEnabled */
|
_EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR, /* debugTypesEnabled */
|
||||||
};
|
@@ -101,3 +108,37 @@ _eglAddAtExitCall(void (*func)(void))
|
||||||
@@ -101,3 +107,35 @@ _eglAddAtExitCall(void (*func)(void))
|
|
||||||
mtx_unlock(_eglGlobal.Mutex);
|
mtx_unlock(_eglGlobal.Mutex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3720,7 +3808,7 @@ index cb41063..e59e8f3 100644
|
|||||||
+ size_t clientLen = strlen(_eglGlobal.ClientOnlyExtensionString);
|
+ size_t clientLen = strlen(_eglGlobal.ClientOnlyExtensionString);
|
||||||
+ size_t platformLen = strlen(_eglGlobal.PlatformExtensionString);
|
+ size_t platformLen = strlen(_eglGlobal.PlatformExtensionString);
|
||||||
+
|
+
|
||||||
+ _eglGlobal.ClientExtensionString = (char *) malloc(clientLen + platformLen + 2);
|
+ _eglGlobal.ClientExtensionString = (char *) malloc(clientLen + platformLen + 1);
|
||||||
+ if (_eglGlobal.ClientExtensionString != NULL) {
|
+ if (_eglGlobal.ClientExtensionString != NULL) {
|
||||||
+ char *ptr = _eglGlobal.ClientExtensionString;
|
+ char *ptr = _eglGlobal.ClientExtensionString;
|
||||||
+
|
+
|
||||||
@ -3728,7 +3816,9 @@ index cb41063..e59e8f3 100644
|
|||||||
+ ptr += clientLen;
|
+ ptr += clientLen;
|
||||||
+
|
+
|
||||||
+ if (platformLen > 0) {
|
+ if (platformLen > 0) {
|
||||||
+ *ptr++ = ' ';
|
+ // Note that if PlatformExtensionString is not empty, then it will
|
||||||
|
+ // already have a leading space.
|
||||||
|
+ assert(_eglGlobal.PlatformExtensionString[0] == ' ');
|
||||||
+ memcpy(ptr, _eglGlobal.PlatformExtensionString, platformLen);
|
+ memcpy(ptr, _eglGlobal.PlatformExtensionString, platformLen);
|
||||||
+ ptr += platformLen;
|
+ ptr += platformLen;
|
||||||
+ }
|
+ }
|
||||||
@ -3741,10 +3831,10 @@ index cb41063..e59e8f3 100644
|
|||||||
+ return ret;
|
+ return ret;
|
||||||
+}
|
+}
|
||||||
diff --git a/src/egl/main/eglglobals.h b/src/egl/main/eglglobals.h
|
diff --git a/src/egl/main/eglglobals.h b/src/egl/main/eglglobals.h
|
||||||
index ec4f3d0..e3a7f58 100644
|
index ec4f3d04a3..c6ef59d482 100644
|
||||||
--- a/src/egl/main/eglglobals.h
|
--- a/src/egl/main/eglglobals.h
|
||||||
+++ b/src/egl/main/eglglobals.h
|
+++ b/src/egl/main/eglglobals.h
|
||||||
@@ -57,12 +57,23 @@ struct _egl_global
|
@@ -57,7 +57,15 @@ struct _egl_global
|
||||||
EGLint NumAtExitCalls;
|
EGLint NumAtExitCalls;
|
||||||
void (*AtExitCalls[10])(void);
|
void (*AtExitCalls[10])(void);
|
||||||
|
|
||||||
@ -3761,20 +3851,20 @@ index ec4f3d0..e3a7f58 100644
|
|||||||
|
|
||||||
EGLDEBUGPROCKHR debugCallback;
|
EGLDEBUGPROCKHR debugCallback;
|
||||||
unsigned int debugTypesEnabled;
|
unsigned int debugTypesEnabled;
|
||||||
};
|
@@ -76,4 +84,7 @@ static inline unsigned int DebugBitFromType(EGLenum type)
|
||||||
|
return (1 << (type - EGL_DEBUG_MSG_CRITICAL_KHR));
|
||||||
|
}
|
||||||
|
|
||||||
+extern const char *
|
+extern const char *
|
||||||
+_eglGetClientExtensionString(void);
|
+_eglGetClientExtensionString(void);
|
||||||
+
|
+
|
||||||
|
#endif /* EGLGLOBALS_INCLUDED */
|
||||||
extern struct _egl_global _eglGlobal;
|
|
||||||
|
|
||||||
diff --git a/src/egl/main/eglglvnd.c b/src/egl/main/eglglvnd.c
|
diff --git a/src/egl/main/eglglvnd.c b/src/egl/main/eglglvnd.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..81fdb45
|
index 0000000000..6b984ed6c2
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/egl/main/eglglvnd.c
|
+++ b/src/egl/main/eglglvnd.c
|
||||||
@@ -0,0 +1,75 @@
|
@@ -0,0 +1,82 @@
|
||||||
+#include <string.h>
|
+#include <string.h>
|
||||||
+#include <assert.h>
|
+#include <assert.h>
|
||||||
+
|
+
|
||||||
@ -3801,8 +3891,15 @@ index 0000000..81fdb45
|
|||||||
+static const char *
|
+static const char *
|
||||||
+__eglGLVNDGetVendorString(int name)
|
+__eglGLVNDGetVendorString(int name)
|
||||||
+{
|
+{
|
||||||
+ if (name == __EGL_VENDOR_STRING_PLATFORM_EXTENSIONS)
|
+ if (name == __EGL_VENDOR_STRING_PLATFORM_EXTENSIONS) {
|
||||||
+ return _eglGlobal.PlatformExtensionString;
|
+ const char *str = _eglGlobal.PlatformExtensionString;
|
||||||
|
+ // The platform extension string may have a leading space. If it does,
|
||||||
|
+ // then skip over it.
|
||||||
|
+ while (*str == ' ') {
|
||||||
|
+ str++;
|
||||||
|
+ }
|
||||||
|
+ return str;
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
+}
|
+}
|
||||||
@ -3851,5 +3948,5 @@ index 0000000..81fdb45
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
2.9.3
|
2.11.0
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
From 2d4094c2caad6cef2f5544b3966fcc37ceb32036 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kyle Brenneman <kbrenneman@nvidia.com>
|
||||||
|
Date: Thu, 5 Jan 2017 14:29:47 -0700
|
||||||
|
Subject: [PATCH 2/2] fixup! EGL: Implement the libglvnd interface for EGL (v2)
|
||||||
|
|
||||||
|
---
|
||||||
|
src/egl/generate/eglFunctionList.py | 6 ++++--
|
||||||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/egl/generate/eglFunctionList.py b/src/egl/generate/eglFunctionList.py
|
||||||
|
index b19b5f7193..80cb83437c 100644
|
||||||
|
--- a/src/egl/generate/eglFunctionList.py
|
||||||
|
+++ b/src/egl/generate/eglFunctionList.py
|
||||||
|
@@ -53,12 +53,14 @@ method values:
|
||||||
|
Select the vendor that owns the current context.
|
||||||
|
"""
|
||||||
|
|
||||||
|
-def _eglFunc(name, method, static=False, public=False, inheader=None, prefix="", extension=None, retval=None):
|
||||||
|
+def _eglFunc(name, method, static=None, public=False, inheader=None, prefix="dispatch_", extension=None, retval=None):
|
||||||
|
"""
|
||||||
|
A convenience function to define an entry in the EGL function list.
|
||||||
|
"""
|
||||||
|
+ if static is None:
|
||||||
|
+ static = (not public and method != "custom")
|
||||||
|
if inheader is None:
|
||||||
|
- inheader = (not public)
|
||||||
|
+ inheader = (not static)
|
||||||
|
values = {
|
||||||
|
"method" : method,
|
||||||
|
"prefix" : prefix,
|
||||||
|
--
|
||||||
|
2.11.0
|
||||||
|
|
22
mesa.spec
22
mesa.spec
@ -54,16 +54,16 @@
|
|||||||
|
|
||||||
%global sanitize 1
|
%global sanitize 1
|
||||||
|
|
||||||
#global rctag rc2
|
%global rctag rc1
|
||||||
|
|
||||||
Name: mesa
|
Name: mesa
|
||||||
Summary: Mesa graphics libraries
|
Summary: Mesa graphics libraries
|
||||||
Version: 13.0.3
|
Version: 17.0.0
|
||||||
Release: 3%{?rctag:.%{rctag}}%{?dist}
|
Release: 0%{?rctag:.%{rctag}}%{?dist}
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: http://www.mesa3d.org
|
URL: http://www.mesa3d.org
|
||||||
Source0: https://mesa.freedesktop.org/archive/%{version}/%{name}-%{version}%{?rctag:-%{rctag}}.tar.xz
|
Source0: https://mesa.freedesktop.org/archive/%{name}-%{version}%{?rctag:-%{rctag}}.tar.xz
|
||||||
Source1: vl_decoder.c
|
Source1: vl_decoder.c
|
||||||
Source2: vl_mpeg12_decoder.c
|
Source2: vl_mpeg12_decoder.c
|
||||||
# src/gallium/auxiliary/postprocess/pp_mlaa* have an ... interestingly worded license.
|
# src/gallium/auxiliary/postprocess/pp_mlaa* have an ... interestingly worded license.
|
||||||
@ -77,10 +77,13 @@ Patch3: 0003-evergreen-big-endian.patch
|
|||||||
Patch4: 0004-bigendian-assert.patch
|
Patch4: 0004-bigendian-assert.patch
|
||||||
|
|
||||||
# glvnd support patches
|
# glvnd support patches
|
||||||
Patch11: 0001-egl-glvnd-support.patch
|
# https://patchwork.freedesktop.org/series/12354/, v3 & v4
|
||||||
Patch12: glvnd-fix-gl-dot-pc.patch
|
Patch11: 0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch
|
||||||
Patch13: 0001-Fix-linkage-against-shared-glapi.patch
|
Patch12: 0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch
|
||||||
Patch14: 0001-glapi-Link-with-glapi-when-built-shared.patch
|
# non-upstreamed ones
|
||||||
|
Patch13: glvnd-fix-gl-dot-pc.patch
|
||||||
|
Patch14: 0001-Fix-linkage-against-shared-glapi.patch
|
||||||
|
Patch15: 0001-glapi-Link-with-glapi-when-built-shared.patch
|
||||||
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
@ -675,6 +678,9 @@ popd
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 20 2017 Igor Gnatenko <ignatenko@redhat.com> - 17.0.0-0.rc1
|
||||||
|
- Update to 17.0.0-rc1
|
||||||
|
|
||||||
* Tue Jan 17 2017 Hans de Goede <hdegoede@redhat.com> - 13.0.3-3
|
* Tue Jan 17 2017 Hans de Goede <hdegoede@redhat.com> - 13.0.3-3
|
||||||
- Enable libglvnd support (rhbz#1413579)
|
- Enable libglvnd support (rhbz#1413579)
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (mesa-13.0.3.tar.xz) = e94a60f7e3b2c64d7b44130ccac95fef8edb74ee1574125aa9ec8ceecb1819df26b0fb08369254aaee6cd6df4eecea814783351e604d4c39b0130746b15a3c1e
|
SHA512 (mesa-17.0.0-rc1.tar.xz) = 9796b0386f1c7e37e5b61500faf3477cfb1a8950d023d1c81ae46d44745ff851da9564445e1658e54d085d209420bd3a423e4ed150666364b122b0d7e0914a89
|
||||||
|
Loading…
Reference in New Issue
Block a user