docs: use code-block with caption instead of table
Reviewed-by: Eric Engestrom <eric@engestrom.ch> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4630>
This commit is contained in:

committed by
Marge Bot

parent
dcaab1b311
commit
7039310ae3
@@ -64,7 +64,8 @@ conceptually simple:
|
|||||||
This can be implemented in just a few lines of C code. The file
|
This can be implemented in just a few lines of C code. The file
|
||||||
``src/mesa/glapi/glapitemp.h`` contains code very similar to this.
|
``src/mesa/glapi/glapitemp.h`` contains code very similar to this.
|
||||||
|
|
||||||
::
|
.. code-block:: c
|
||||||
|
:caption: Sample dispatch function
|
||||||
|
|
||||||
void glVertex3f(GLfloat x, GLfloat y, GLfloat z)
|
void glVertex3f(GLfloat x, GLfloat y, GLfloat z)
|
||||||
{
|
{
|
||||||
@@ -73,8 +74,6 @@ This can be implemented in just a few lines of C code. The file
|
|||||||
(*dispatch->Vertex3f)(x, y, z);
|
(*dispatch->Vertex3f)(x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
Sample dispatch function
|
|
||||||
|
|
||||||
The problem with this simple implementation is the large amount of
|
The problem with this simple implementation is the large amount of
|
||||||
overhead that it adds to every GL function call.
|
overhead that it adds to every GL function call.
|
||||||
|
|
||||||
@@ -118,14 +117,13 @@ resulting implementation of ``GET_DISPATCH`` is slightly more complex,
|
|||||||
but it avoids the expensive ``pthread_getspecific`` call in the common
|
but it avoids the expensive ``pthread_getspecific`` call in the common
|
||||||
case.
|
case.
|
||||||
|
|
||||||
::
|
.. code-block:: c
|
||||||
|
:caption: Improved ``GET_DISPATCH`` Implementation
|
||||||
|
|
||||||
#define GET_DISPATCH() \
|
#define GET_DISPATCH() \
|
||||||
(_glapi_Dispatch != NULL) \
|
(_glapi_Dispatch != NULL) \
|
||||||
? _glapi_Dispatch : pthread_getspecific(&_glapi_Dispatch_key)
|
? _glapi_Dispatch : pthread_getspecific(&_glapi_Dispatch_key)
|
||||||
|
|
||||||
Improved ``GET_DISPATCH`` Implementation
|
|
||||||
|
|
||||||
3.2. ELF TLS
|
3.2. ELF TLS
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
@@ -142,15 +140,14 @@ with direct rendering drivers that use either interface. Once the
|
|||||||
pointer is properly declared, ``GET_DISPACH`` becomes a simple variable
|
pointer is properly declared, ``GET_DISPACH`` becomes a simple variable
|
||||||
reference.
|
reference.
|
||||||
|
|
||||||
::
|
.. code-block:: c
|
||||||
|
:caption: TLS ``GET_DISPATCH`` Implementation
|
||||||
|
|
||||||
extern __thread struct _glapi_table *_glapi_tls_Dispatch
|
extern __thread struct _glapi_table *_glapi_tls_Dispatch
|
||||||
__attribute__((tls_model("initial-exec")));
|
__attribute__((tls_model("initial-exec")));
|
||||||
|
|
||||||
#define GET_DISPATCH() _glapi_tls_Dispatch
|
#define GET_DISPATCH() _glapi_tls_Dispatch
|
||||||
|
|
||||||
TLS ``GET_DISPATCH`` Implementation
|
|
||||||
|
|
||||||
Use of this path is controlled by the preprocessor define
|
Use of this path is controlled by the preprocessor define
|
||||||
``USE_ELF_TLS``. Any platform capable of using ELF TLS should use this
|
``USE_ELF_TLS``. Any platform capable of using ELF TLS should use this
|
||||||
as the default dispatch method.
|
as the default dispatch method.
|
||||||
@@ -198,12 +195,11 @@ the assembly source file different implementations of the macro are
|
|||||||
selected based on the defined preprocessor variables. The assembly code
|
selected based on the defined preprocessor variables. The assembly code
|
||||||
then consists of a series of invocations of the macros such as:
|
then consists of a series of invocations of the macros such as:
|
||||||
|
|
||||||
::
|
.. code-block:: c
|
||||||
|
:caption: SPARC Assembly Implementation of ``glColor3fv``
|
||||||
|
|
||||||
GL_STUB(Color3fv, _gloffset_Color3fv)
|
GL_STUB(Color3fv, _gloffset_Color3fv)
|
||||||
|
|
||||||
SPARC Assembly Implementation of ``glColor3fv``
|
|
||||||
|
|
||||||
The benefit of this technique is that changes to the calling pattern
|
The benefit of this technique is that changes to the calling pattern
|
||||||
(i.e., addition of a new dispatch table pointer access method) require
|
(i.e., addition of a new dispatch table pointer access method) require
|
||||||
fewer changed lines in the assembly code.
|
fewer changed lines in the assembly code.
|
||||||
|
Reference in New Issue
Block a user