On Thu, Mar 6, 2014 at 11:03 PM, Brian Paul <bri...@vmware.com> wrote: > On 03/05/2014 08:37 PM, Chia-I Wu wrote: >> >> On Thu, Mar 6, 2014 at 7:06 AM, Brian Paul <bri...@vmware.com> wrote: >>> >>> --- >>> src/mapi/mapi.c | 10 +++++----- >>> src/mapi/stub.c | 6 +++--- >>> src/mapi/u_current.c | 6 +++--- >>> src/mapi/u_execmem.c | 6 +++--- >>> src/mapi/u_thread.h | 10 ---------- >>> 5 files changed, 14 insertions(+), 24 deletions(-) >>> >>> diff --git a/src/mapi/mapi.c b/src/mapi/mapi.c >>> index 56f209b..8d0baca 100644 >>> --- a/src/mapi/mapi.c >>> +++ b/src/mapi/mapi.c >>> @@ -72,15 +72,15 @@ get_stub(const char *name, const struct mapi_stub >>> *alias) >>> void >>> mapi_init(const char *spec) >>> { >>> - u_mutex_declare_static(mutex); >>> + static mtx_t mutex = _MTX_INITIALIZER_NP; >>> const char *p; >>> int ver, count; >>> >>> - u_mutex_lock(mutex); >>> + mtx_lock(&mutex); >>> >>> /* already initialized */ >>> if (mapi_num_stubs) { >>> - u_mutex_unlock(mutex); >>> + mtx_unlock(&mutex); >>> return; >>> } >>> >>> @@ -90,7 +90,7 @@ mapi_init(const char *spec) >>> /* parse version string */ >>> ver = atoi(p); >>> if (ver != 1) { >>> - u_mutex_unlock(mutex); >>> + mtx_unlock(&mutex); >>> return; >>> } >>> p += strlen(p) + 1; >>> @@ -115,7 +115,7 @@ mapi_init(const char *spec) >>> >>> mapi_num_stubs = count; >>> >>> - u_mutex_unlock(mutex); >>> + mtx_unlock(&mutex); >>> } >>> >>> /** >>> diff --git a/src/mapi/stub.c b/src/mapi/stub.c >>> index acd2c0a..b5db597 100644 >>> --- a/src/mapi/stub.c >>> +++ b/src/mapi/stub.c >>> @@ -126,11 +126,11 @@ stub_add_dynamic(const char *name) >>> struct mapi_stub * >>> stub_find_dynamic(const char *name, int generate) >>> { >>> - u_mutex_declare_static(dynamic_mutex); >>> + static mtx_t dynamic_mutex = _MTX_INITIALIZER_NP >>> PTHREAD_MUTEX_INITIALIZER; >> >> PTHREAD_MUTEX_INITIALIZER should be dropped. With that fixed, > > > Got it. Thanks. I guess this code didn't get compiled in my current > configuration. I'm still trying to figure out all the mapi/ code. I don't > yet understand the (four!) different mapi compile modes and when they're > used. With --enable-shared-glapi, mapi is compiled twice. Once in MAPI_MODE_GLAPI mode, to create libglapi.so, which is an implementation of glapi.h. And then once again in MAPI_MODE_BRIDGE mode, which provides all glFoo() symbols and gets statically linked to by libGL.so. Those glFoo() call into libglapi.so to get/set current dispatch table and etc.
With --disable-shared-glapi, a different implementation of glapi.h and glFoo() symbols is created and is statically linked to by libGL.so. In this case, mapi is compiled once in MAPI_MODE_UTIL mode, to provide u_current and u_execmem utility functions. The old code, src/mapi/glapi/*.[ch], is used only when --disable-shared-glapi is given. It is so because mapi does not have a replacement for gl_SPARC_asm.py. Otherwise, we could get rid of the old code and use mapi everywhere. > > -Brian > -- o...@lunarg.com _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev