On 09/28/2015 11:26 AM, Emil Velikov wrote:
Hi Kyle,
On 24 September 2015 at 23:22, Kyle Brenneman <kbrenne...@nvidia.com> wrote:
Rearranged the GLX_ALIAS macro in glextensions.h so that it will pick up
the renames from glx_mangle.h.
Fixed the alias attribute for glXGetProcAddress when USE_MGL_NAMESPACE is
defined.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55552
Thanks for fixing this. It has been broken for ages.
Can you please add your s-o-b line as well as
Cc: "10.6 11.0" <mesa-sta...@lists.freedesktop.org>
---
src/glx/glxcmds.c | 4 ++++
src/glx/glxextensions.h | 6 ++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index 8164cd9..976ee36 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -2666,7 +2666,11 @@ _X_EXPORT void (*glXGetProcAddressARB(const GLubyte *
procName)) (void)
*/
_X_EXPORT void (*glXGetProcAddress(const GLubyte * procName)) (void)
#if defined(__GNUC__) && !defined(GLX_ALIAS_UNSUPPORTED)
+# if defined(USE_MGL_NAMESPACE)
+ __attribute__ ((alias("mglXGetProcAddressARB")));
+# else
__attribute__ ((alias("glXGetProcAddressARB")));
+# endif
#else
{
return glXGetProcAddressARB(procName);
diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h
index 8436a94..c4d4a17 100644
--- a/src/glx/glxextensions.h
+++ b/src/glx/glxextensions.h
@@ -279,11 +279,13 @@ typedef void (*PFNGLXDISABLEEXTENSIONPROC) (const char
*name);
# define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func)
#else
# if defined(__GNUC__) && !defined(GLX_ALIAS_UNSUPPORTED)
-# define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \
+# define GLX_ALIAS2(return_type, real_func, proto_args, args, aliased_func) \
return_type real_func proto_args \
__attribute__ ((alias( # aliased_func ) ));
+# define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \
+ GLX_ALIAS2(return_type, real_func, proto_args, args, aliased_func)
# define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func) \
- GLX_ALIAS(void, real_func, proto_args, args, aliased_func)
+ GLX_ALIAS2(void, real_func, proto_args, args, aliased_func)
I'm having some serious eye-hurt with these lovely macros and for the
sake of me cannot see how this works. Are re undefining GLX_ALIAS
elsewhere ?
No, it uses an extra layer of expansion. The GLX_ALIAS macro expands to
to GLX_ALIAS2, which in turn expands to the declaration with the alias
attribute. That extra expansion means that the string will pick up the
macros in glx_mangle.h. With only a single expansion,
glXGetCurrentDisplayEXT would expand to use the string
"glXGetCurrentDisplay", but with two, it gets "mglXGetCurrentDisplay".
That's also why GLX_ALIAS_VOID worked before but GLX_ALIAS didn't.
Anyway, I added a comment next to them to clarify why it uses the nested
macros. Hopefully that makes it easier to read.
As a follow-up one can check, if we can remove the alias-unsupported
case and alternatively unify HAVE_ALIAS and GLX_ALIAS_UNSUPPORTED, and
use them consistently. Neither one is obviously obviously criteria for
this patch's acceptable :-)
Thanks
Emil
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev