Lines Matching +full:shared +full:- +full:glapi
11 ----------------------------
18 used is selected by a window-system dependent function such as
21 In environments that implement OpenGL with X-Windows using GLX, every GL
39 In multi-threaded environments, it is possible for each thread to have a
47 ------------------------------------
49 Mesa uses two per-thread pointers. The first pointer stores the address
59 - Fetch the current dispatch table pointer.
60 - Fetch the pointer to the real ``glVertex3fv`` function from the
62 - Call the real function.
65 ``src/mesa/glapi/glapitemp.h`` contains code very similar to this.
67 .. code-block:: c
74 (*dispatch->Vertex3f)(x, y, z);
86 ----------------
110 pointer is also stored in a per-thread location via
120 .. code-block:: c
131 of per-thread, global storage. Variables can be put in this area using
143 .. code-block:: c
154 Windows has a similar concept, and beginning with Windows Vista, shared
155 libraries can take advantage of compiler-assisted TLS. This TLS data
156 has no fixed size and does not compete with API-based TLS (``TlsAlloc``)
163 Many platforms have difficulty properly optimizing the tail-call in the
176 #. Using ``_glapi_Dispatch`` directly in builds for non-multithreaded
193 - If ``USE_ELF_TLS`` is defined, method #3 is used.
194 - If ``HAVE_PTHREAD`` is defined, method #2 is used.
195 - If none of the preceding are defined, method #1 is used.
203 .. code-block:: c
216 a call to ``pthread_getspecific``. Since x86-64 passes parameters in
221 The other technique, used by platforms like x86-64 that cannot use the
224 considerably larger (e.g., 29,332 lines for ``glapi_x86-64.S`` versus
234 ``src/mesa/glapi/glapi_dispatch.c`` to prevent the C version of the
239 3.4. Fixed-Length Dispatch Stubs
244 ``src/mesa/glapi/glprocs.h``. For different reasons on different
256 ``src/mesa/glapi/glapi.c`` just before ``glprocs.h`` is included.