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

Reply via email to