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 <luoyonggang@gmail.com>
Reviewed-by: Corentin Noël <corentin.noel@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23409>
This commit is contained in:
Yonggang Luo
2023-06-05 23:59:53 +08:00
committed by Marge Bot
parent a8b8324494
commit d5a09bf594
6 changed files with 16 additions and 12 deletions

View File

@@ -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`')

View File

@@ -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:

View File

@@ -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)

View File

@@ -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:

View File

@@ -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:

View File

@@ -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