7566503cc1
upgrade the mesa3d and mesa3d-headers to v22.1.3 and copy patch from IMG DDK 1.19 keep the 0002-Force-Mesa-to-use-the-PVR-driver-for-platform-device.patch to force the pvr driver Note that the new version mesa3d support gallium driver and no longer support dri driver Signed-off-by: Andy Hu <andy.hu@starfivetech.com> Signed-off-by: Windsome Zeng <Windsome.Zeng@starfivetech.com>
154 lines
4.8 KiB
Diff
154 lines
4.8 KiB
Diff
From d798e80cc8262955ea57d516249c0969e298a395 Mon Sep 17 00:00:00 2001
|
|
From: Brendan King <Brendan.King@imgtec.com>
|
|
Date: Thu, 11 Jun 2020 12:29:51 +0100
|
|
Subject: [PATCH 35/58] meson: allow libGL to be built without GLX
|
|
|
|
If Meson is run with option "glx" set to "null", build the
|
|
OpenGL library without GLX.
|
|
|
|
The "eglBindAPI workaround for dEQP bug" change to eglcurrent.h
|
|
(commit 2d46c91040aeb8ebad486214159c34417fbc87db) has been
|
|
modified to use a new EGL_WITH_OPENGL define, which indicates
|
|
whether OpenGL is present or not. This allows EGL to be used
|
|
with OpenGL on platforms other than X11.
|
|
---
|
|
meson.build | 10 +++++++---
|
|
meson_options.txt | 2 +-
|
|
src/egl/main/eglcurrent.h | 7 +++----
|
|
src/glx/meson.build | 20 ++++++++++++++++----
|
|
src/meson.build | 2 +-
|
|
5 files changed, 28 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/meson.build b/meson.build
|
|
index b4d5b849f8b..e021a896a0a 100644
|
|
--- a/meson.build
|
|
+++ b/meson.build
|
|
@@ -484,7 +484,7 @@ elif _egl == 'enabled'
|
|
error('EGL requires dri, haiku, or windows')
|
|
elif not with_shared_glapi
|
|
error('EGL requires shared-glapi')
|
|
- elif not ['disabled', 'dri'].contains(with_glx)
|
|
+ elif not ['disabled', 'dri', 'null'].contains(with_glx)
|
|
error('EGL requires dri, but a GLX is being built without dri')
|
|
elif host_machine.system() == 'darwin'
|
|
error('EGL is not available on MacOS')
|
|
@@ -510,6 +510,10 @@ if with_egl and not _platforms.contains(egl_native_platform)
|
|
error('-Degl-native-platform does not specify an enabled platform')
|
|
endif
|
|
|
|
+if with_egl and with_opengl and with_glx != 'disabled'
|
|
+ pre_args += '-DEGL_WITH_OPENGL'
|
|
+endif
|
|
+
|
|
if 'x11' in _platforms
|
|
_platforms += 'xcb'
|
|
endif
|
|
@@ -572,7 +576,7 @@ if with_platform_windows and with_shared_glapi
|
|
pre_args += '-DUSE_TLS_BEHIND_FUNCTIONS'
|
|
endif
|
|
|
|
-if with_glx != 'disabled'
|
|
+if with_glx != 'disabled' and with_glx != 'null'
|
|
if not (with_platform_x11 and with_any_opengl)
|
|
error('Cannot build GLX support without X11 platform support and at least one OpenGL API')
|
|
elif with_glx == 'xlib'
|
|
@@ -630,7 +634,7 @@ if with_any_vk and (with_platform_x11 and not with_dri3)
|
|
error('Vulkan drivers require dri3 for X11 support')
|
|
endif
|
|
if with_dri
|
|
- if with_glx == 'disabled' and not with_egl and not with_gbm
|
|
+ if (with_glx == 'disabled' or with_glx == 'null') and not with_egl and not with_gbm
|
|
error('building dri drivers require at least one windowing system')
|
|
endif
|
|
endif
|
|
diff --git a/meson_options.txt b/meson_options.txt
|
|
index d76cc4b0405..65f32547267 100644
|
|
--- a/meson_options.txt
|
|
+++ b/meson_options.txt
|
|
@@ -306,7 +306,7 @@ option(
|
|
'glx',
|
|
type : 'combo',
|
|
value : 'auto',
|
|
- choices : ['auto', 'disabled', 'dri', 'xlib'],
|
|
+ choices : ['auto', 'disabled', 'dri', 'xlib', 'null'],
|
|
description : 'Build support for GLX platform'
|
|
)
|
|
option(
|
|
diff --git a/src/egl/main/eglcurrent.h b/src/egl/main/eglcurrent.h
|
|
index 32570970947..dcc418afd6f 100644
|
|
--- a/src/egl/main/eglcurrent.h
|
|
+++ b/src/egl/main/eglcurrent.h
|
|
@@ -71,11 +71,10 @@ struct _egl_thread_info
|
|
static inline EGLBoolean
|
|
_eglIsApiValid(EGLenum api)
|
|
{
|
|
-#ifndef HAVE_X11_PLATFORM
|
|
- /* OpenGL is not a valid/supported API on Android */
|
|
- return api == EGL_OPENGL_ES_API;
|
|
-#else
|
|
+#ifdef EGL_WITH_OPENGL
|
|
return (api == EGL_OPENGL_ES_API || api == EGL_OPENGL_API);
|
|
+#else
|
|
+ return api == EGL_OPENGL_ES_API;
|
|
#endif
|
|
}
|
|
|
|
diff --git a/src/glx/meson.build b/src/glx/meson.build
|
|
index 8f642d5e14b..605a9717e37 100644
|
|
--- a/src/glx/meson.build
|
|
+++ b/src/glx/meson.build
|
|
@@ -122,7 +122,15 @@ else
|
|
)
|
|
endif
|
|
|
|
-libglx = static_library(
|
|
+gl_lib_cargs = [
|
|
+ '-D_REENTRANT',
|
|
+]
|
|
+
|
|
+if with_glx == 'null'
|
|
+ libglx_link = [libglapi]
|
|
+ libglx_link_whole = [libglapi_static]
|
|
+else
|
|
+ libglx = static_library(
|
|
'glx',
|
|
[files_libglx, glx_generated],
|
|
include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_glapi, inc_loader],
|
|
@@ -138,13 +146,17 @@ libglx = static_library(
|
|
idep_mesautil, idep_xmlconfig,
|
|
dep_libdrm, dep_dri2proto, dep_glproto, dep_x11, dep_glvnd,
|
|
],
|
|
-)
|
|
+ )
|
|
+
|
|
+ libglx_link = [libglapi_static,libglapi]
|
|
+ libglx_link_whole = [libglx]
|
|
+endif
|
|
|
|
libgl = shared_library(
|
|
gl_lib_name,
|
|
[],
|
|
- link_with : [libglapi_static, libglapi],
|
|
- link_whole : libglx,
|
|
+ link_with : libglx_link,
|
|
+ link_whole : libglx_link_whole,
|
|
link_args : [ld_args_bsymbolic, ld_args_gc_sections, extra_ld_args_libgl],
|
|
dependencies : [
|
|
dep_libdrm, dep_dl, dep_m, dep_thread, dep_x11, dep_xcb_glx, dep_xcb,
|
|
diff --git a/src/meson.build b/src/meson.build
|
|
index 91aca307c87..0846a6035c9 100644
|
|
--- a/src/meson.build
|
|
+++ b/src/meson.build
|
|
@@ -127,7 +127,7 @@ endif
|
|
if with_gallium
|
|
subdir('mesa')
|
|
subdir('gallium')
|
|
- if with_glx == 'dri'
|
|
+ if with_glx == 'dri' or with_glx == 'null'
|
|
subdir('glx')
|
|
endif
|
|
# This has to be here since it requires libgallium, and subdir cannot
|
|
--
|
|
2.25.1
|
|
|