summaryrefslogtreecommitdiff
path: root/src/mesa/glapi/glapitemp.h
diff options
context:
space:
mode:
authorIan Romanick <idr@us.ibm.com>2006-08-22 16:34:38 +0000
committerIan Romanick <idr@us.ibm.com>2006-08-22 16:34:38 +0000
commit4e4b5f40081cb3e4cefe4dce30712d8d330c0774 (patch)
tree65b722305bb81a0c014903d20cf7d3715fbde83f /src/mesa/glapi/glapitemp.h
parent6423ec914530a84ee16977d95b64116e63eca22c (diff)
Add new attribute called static_dispatch to the <function> element. This
boolean attribute, which defaults to true, determines whether or not a static dispatch function is available in libGL for applications to link against. Ideally, any new functions that are not part of the ABI should not have directly accessable dispatch functions. This forces applications to use glXGetProcAddress to access these functions. By doing this we can gracefully remove functions from libGL without breaking the linkage of applications. Note that the static dispatch functions are still generated. However, they are given names like gl_dispatch_stub_820 and are marked with the "hidden" linker attribute. All extension functions added since the previous Mesa release (6.5) have been marked as 'static_dispatch="false"'.
Diffstat (limited to 'src/mesa/glapi/glapitemp.h')
-rw-r--r--src/mesa/glapi/glapitemp.h48
1 files changed, 36 insertions, 12 deletions
diff --git a/src/mesa/glapi/glapitemp.h b/src/mesa/glapi/glapitemp.h
index 442fccf295..52ca9733f3 100644
--- a/src/mesa/glapi/glapitemp.h
+++ b/src/mesa/glapi/glapitemp.h
@@ -27,6 +27,12 @@
*/
+# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__)
+# define HIDDEN __attribute__((visibility("hidden")))
+# else
+# define HIDDEN
+# endif
+
/*
* This file is a template which generates the OpenGL API entry point
* functions. It should be included by a .c file which first defines
@@ -57,6 +63,10 @@
#define KEYWORD1
#endif
+#ifndef KEYWORD1_ALT
+#define KEYWORD1_ALT HIDDEN
+#endif
+
#ifndef KEYWORD2
#define KEYWORD2
#endif
@@ -5055,32 +5065,44 @@ KEYWORD1 void KEYWORD2 NAME(BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint
DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
}
-KEYWORD1 void KEYWORD2 NAME(BindVertexArrayAPPLE)(GLuint array)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_819)(GLuint array);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_819)(GLuint array)
{
DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array));
}
-KEYWORD1 void KEYWORD2 NAME(DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLsizei n, const GLuint * arrays);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLsizei n, const GLuint * arrays)
{
DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
}
-KEYWORD1 void KEYWORD2 NAME(GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLsizei n, GLuint * arrays);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLsizei n, GLuint * arrays)
{
DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
}
-KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArrayAPPLE)(GLuint array)
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_822)(GLuint array);
+
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_822)(GLuint array)
{
RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array));
}
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
{
DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
}
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
{
DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
}
@@ -5918,12 +5940,12 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(GetQueryObjecti64vEXT),
TABLE_ENTRY(GetQueryObjectui64vEXT),
TABLE_ENTRY(BlitFramebufferEXT),
- TABLE_ENTRY(BindVertexArrayAPPLE),
- TABLE_ENTRY(DeleteVertexArraysAPPLE),
- TABLE_ENTRY(GenVertexArraysAPPLE),
- TABLE_ENTRY(IsVertexArrayAPPLE),
- TABLE_ENTRY(ProgramEnvParameters4fvEXT),
- TABLE_ENTRY(ProgramLocalParameters4fvEXT),
+ TABLE_ENTRY(_dispatch_stub_819),
+ TABLE_ENTRY(_dispatch_stub_820),
+ TABLE_ENTRY(_dispatch_stub_821),
+ TABLE_ENTRY(_dispatch_stub_822),
+ TABLE_ENTRY(_dispatch_stub_823),
+ TABLE_ENTRY(_dispatch_stub_824),
/* A whole bunch of no-op functions. These might be called
* when someone tries to call a dynamically-registered
* extension function without a current rendering context.
@@ -6220,6 +6242,7 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {
# undef KEYWORD1
+# undef KEYWORD1_ALT
# undef KEYWORD2
# undef NAME
# undef DISPATCH
@@ -6227,3 +6250,4 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {
# undef DISPATCH_TABLE_NAME
# undef UNUSED_TABLE_NAME
# undef TABLE_ENTRY
+# undef HIDDEN