Module: Mesa
Branch: main
Commit: d5a09bf5944b7762f823cc93debee34bc0afb80b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d5a09bf5944b7762f823cc93debee34bc0afb80b

Author: Yonggang Luo <[email protected]>
Date:   Mon Jun  5 23:59:53 2023 +0800

mapi: Hide OpenGL functions to be exported when shared-glapi is disabled

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 <[email protected]>
Reviewed-by: Corentin Noël <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23409>

---

 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 3073570e23f..5b88772d907 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 795be406f3b..907c130647d 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 d7e25805686..8c4514c5824 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 5d5a265e2a1..babcbd93e00 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 1196b3ab98c..c128ec69df5 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 43209b59768..960ccc0e8b0 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

Reply via email to