Mesa (master): glx: Don't use glapitable.h at all

Ian Romanick idr at kemper.freedesktop.org
Wed Aug 8 17:08:35 UTC 2012


Module: Mesa
Branch: master
Commit: 99fee476a102be898a1a093c037e06382f90a5b9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=99fee476a102be898a1a093c037e06382f90a5b9

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Tue Jul 31 16:58:41 2012 -0700

glx: Don't use glapitable.h at all

When --enable-shared-glapi is used, all non-ABI entries in the table are
lies.  Avoiding the use of glapitable.h avoids the lies.  The only
entries used in this code are entries that are ABI.  For these, the ABI
offset can be used directly.

Since this code is in src/glx, it can't use src/mesa/main/dispatch.h to
get the pretty names for these offsets.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/glx/glxclient.h                  |    1 -
 src/glx/single2.c                    |    7 +++++--
 src/glx/singlepix.c                  |    8 +++++---
 src/mapi/glapi/gen/glX_proto_send.py |    5 ++++-
 4 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index f8ae450..91577a8 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -51,7 +51,6 @@
 #include <stdint.h>
 #endif
 #include "GL/glxproto.h"
-#include "glapi/glapitable.h"
 #include "glxconfig.h"
 #include "glxhash.h"
 #if defined( PTHREADS )
diff --git a/src/glx/single2.c b/src/glx/single2.c
index 259c4fe..d422d9d 100644
--- a/src/glx/single2.c
+++ b/src/glx/single2.c
@@ -35,7 +35,6 @@
 #include "glxextensions.h"
 #include "indirect.h"
 #include "indirect_vertex_array.h"
-#include "glapitable.h"
 #include "glapi.h"
 #ifdef USE_XCB
 #include <xcb/xcb.h>
@@ -943,7 +942,11 @@ glAreTexturesResidentEXT(GLsizei n, const GLuint * textures,
    struct glx_context *const gc = __glXGetCurrentContext();
 
    if (gc->isDirect) {
-      return GET_DISPATCH()->AreTexturesResident(n, textures, residences);
+      const _glapi_proc *const table = (_glapi_proc *) GET_DISPATCH();
+      PFNGLARETEXTURESRESIDENTEXTPROC p =
+         (PFNGLARETEXTURESRESIDENTEXTPROC) table[332];
+
+      return p(n, textures, residences);
    }
    else {
       struct glx_context *const gc = __glXGetCurrentContext();
diff --git a/src/glx/singlepix.c b/src/glx/singlepix.c
index d8a7166..3c06f8d 100644
--- a/src/glx/singlepix.c
+++ b/src/glx/singlepix.c
@@ -30,7 +30,6 @@
 
 #include "packsingle.h"
 #include "indirect.h"
-#include "glapitable.h"
 #include "glapi.h"
 #include "glthread.h"
 #include <GL/glxproto.h>
@@ -117,8 +116,11 @@ void gl_dispatch_stub_GetSeparableFilterEXT (GLenum target, GLenum format,
 
 #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if (gc->isDirect) {
-      GET_DISPATCH()->GetSeparableFilter(target, format, type,
-                                         row, column, span);
+      const _glapi_proc *const table = (_glapi_proc *) GET_DISPATCH();
+      PFNGLGETSEPARABLEFILTEREXTPROC p =
+         (PFNGLGETSEPARABLEFILTEREXTPROC) table[359];
+
+      p(target, format, type, row, column, span);
       return;
    }
    else
diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py
index b90b167..ca3a790 100644
--- a/src/mapi/glapi/gen/glX_proto_send.py
+++ b/src/mapi/glapi/gen/glX_proto_send.py
@@ -423,7 +423,10 @@ __indirect_get_proc_address(const char *name)
 				print ''
 				print '#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)'
 				print '    if (gc->isDirect) {'
-				print '    %sGET_DISPATCH()->%s(%s);' % (ret_string, func.name, func.get_called_parameter_string())
+				print '        const _glapi_proc *const table = GET_DISPATCH();'
+				print '        PFNGL%sPROC p =' % (name.upper())
+				print '            (PFNGL%sPROC) table[%d];' % (name.upper(), func.offset)
+				print '    %sp(%s);' % (ret_string, func.get_called_parameter_string())
 				print '    } else'
 				print '#endif'
 				print '    {'




More information about the mesa-commit mailing list