From d5a09bf5944b7762f823cc93debee34bc0afb80b Mon Sep 17 00:00:00 2001 From: Yonggang Luo Date: Mon, 5 Jun 2023 23:59:53 +0800 Subject: [PATCH] mapi: Hide OpenGL functions to be exported when shared-glapi is disabled MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes the following test error: 135/154 mesa:gallium / osmesa-symbols-check FAIL 0.07s exit status 1 ``` src/gallium/targets/osmesa/libOSMesa.so.8.0.0: unknown symbol exported: glAreTexturesResidentEXT src/gallium/targets/osmesa/libOSMesa.so.8.0.0: unknown symbol exported: glDeleteTexturesEXT src/gallium/targets/osmesa/libOSMesa.so.8.0.0: unknown symbol exported: glGenTexturesEXT src/gallium/targets/osmesa/libOSMesa.so.8.0.0: unknown symbol exported: glIsTextureEXT ``` The build options is: ``` -D glx=xlib -D gles1=disabled -D gles2=disabled -D shared-glapi=disabled ``` Signed-off-by: Yonggang Luo Reviewed-by: Corentin Noël Part-of: --- meson.build | 9 +++++++++ src/mapi/glapi/gen/gl_SPARC_asm.py | 2 +- src/mapi/glapi/gen/gl_apitemp.py | 8 ++++---- src/mapi/glapi/gen/gl_x86-64_asm.py | 2 +- src/mapi/glapi/gen/gl_x86_asm.py | 2 +- src/mapi/glapi/glapi_dispatch.c | 5 ----- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/meson.build b/meson.build index 3073570..5b88772 100644 --- a/meson.build +++ b/meson.build @@ -779,10 +779,12 @@ if with_clc endif gl_pkgconfig_c_flags = [] +with_glx_indirect_rendering = false if with_platform_x11 if with_glx == 'xlib' pre_args += '-DUSE_XSHM' else + with_glx_indirect_rendering = true pre_args += '-DGLX_INDIRECT_RENDERING' if with_glx_direct pre_args += '-DGLX_DIRECT_RENDERING' @@ -797,6 +799,13 @@ if with_platform_x11 endif endif +with_glapi_export_proto_entry_points = false +if with_shared_glapi and not with_glx_indirect_rendering + # Imply !defined(GLX_INDIRECT_RENDERING) + with_glapi_export_proto_entry_points = true +endif +pre_args += '-DGLAPI_EXPORT_PROTO_ENTRY_POINTS=@0@'.format(with_glapi_export_proto_entry_points ? '1' : '0') + with_android_stub = get_option('android-stub') if with_android_stub and not with_platform_android error('`-D android-stub=true` makes no sense without `-D platforms=android`') diff --git a/src/mapi/glapi/gen/gl_SPARC_asm.py b/src/mapi/glapi/gen/gl_SPARC_asm.py index 795be40..907c130 100644 --- a/src/mapi/glapi/gen/gl_SPARC_asm.py +++ b/src/mapi/glapi/gen/gl_SPARC_asm.py @@ -157,7 +157,7 @@ class PrintGenericStubs(gl_XML.gl_print_base): text = '\tGL_STUB_ALIAS(gl%s, gl%s)' % (n, f.name) if f.has_different_protocol(n): - print('#ifndef GLX_INDIRECT_RENDERING') + print('#if GLAPI_EXPORT_PROTO_ENTRY_POINTS') print(text) print('#endif') else: diff --git a/src/mapi/glapi/gen/gl_apitemp.py b/src/mapi/glapi/gen/gl_apitemp.py index d7e2580..8c4514c 100644 --- a/src/mapi/glapi/gen/gl_apitemp.py +++ b/src/mapi/glapi/gen/gl_apitemp.py @@ -238,10 +238,10 @@ _glapi_proc UNUSED_TABLE_NAME[] = {""") for ent in normal_entries: print(' TABLE_ENTRY(%s),' % (ent)) print('#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */') - print('#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS') + print('#if GLAPI_EXPORT_PROTO_ENTRY_POINTS') for ent in proto_entries: print(' TABLE_ENTRY(%s),' % (ent)) - print('#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */') + print('#endif /* GLAPI_EXPORT_PROTO_ENTRY_POINTS */') print('};') print('#endif /*UNUSED_TABLE_NAME*/') @@ -291,13 +291,13 @@ _glapi_proc UNUSED_TABLE_NAME[] = {""") print('#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */') print('') print('/* these entry points might require different protocols */') - print('#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS') + print('#if GLAPI_EXPORT_PROTO_ENTRY_POINTS') print('') for func, ents in proto_entry_points: for ent in ents: self.printFunction(func, ent) print('') - print('#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */') + print('#endif /* GLAPI_EXPORT_PROTO_ENTRY_POINTS */') print('') self.printInitDispatch(api) diff --git a/src/mapi/glapi/gen/gl_x86-64_asm.py b/src/mapi/glapi/gen/gl_x86-64_asm.py index 5d5a265..babcbd9 100644 --- a/src/mapi/glapi/gen/gl_x86-64_asm.py +++ b/src/mapi/glapi/gen/gl_x86-64_asm.py @@ -222,7 +222,7 @@ class PrintGenericStubs(gl_XML.gl_print_base): text = '\t.globl GL_PREFIX(%s) ; .set GL_PREFIX(%s), GL_PREFIX(%s)' % (n, n, dispatch) if f.has_different_protocol(n): - print('#ifndef GLX_INDIRECT_RENDERING') + print('#if GLAPI_EXPORT_PROTO_ENTRY_POINTS') print(text) print('#endif') else: diff --git a/src/mapi/glapi/gen/gl_x86_asm.py b/src/mapi/glapi/gen/gl_x86_asm.py index 1196b3a..c128ec6 100644 --- a/src/mapi/glapi/gen/gl_x86_asm.py +++ b/src/mapi/glapi/gen/gl_x86_asm.py @@ -178,7 +178,7 @@ class PrintGenericStubs(gl_XML.gl_print_base): text = '\tGL_STUB_ALIAS(%s, %d, %s, %s, %s)' % (n, f.offset, alt2, name, alt) if f.has_different_protocol(n): - print('#ifndef GLX_INDIRECT_RENDERING') + print('#if GLAPI_EXPORT_PROTO_ENTRY_POINTS') print(text) print('#endif') else: diff --git a/src/mapi/glapi/glapi_dispatch.c b/src/mapi/glapi/glapi_dispatch.c index 43209b5..960ccc0 100644 --- a/src/mapi/glapi/glapi_dispatch.c +++ b/src/mapi/glapi/glapi_dispatch.c @@ -74,11 +74,6 @@ #endif /* logging */ -#ifdef GLX_INDIRECT_RENDERING -/* those link to libglapi.a should provide the entry points */ -#define _GLAPI_SKIP_PROTO_ENTRY_POINTS -#endif - /* Enable frame pointer elimination on Windows, otherwise forgetting to add * GLAPIENTRY to _mesa_* entrypoints will not cause crashes on debug builds, as * the initial ESP value is saved in the EBP in the function prologue, then -- 2.7.4