[Mesa-dev] [PATCH 08/17] glapi: Annotate XML with exec="{es, check}" for special GLES1 functions.

Ian Romanick idr at freedesktop.org
Fri Nov 2 14:09:03 PDT 2012


On 11/01/2012 03:19 PM, Paul Berry wrote:
> Future patches will use this annotation when code generating
> _mesa_create_exec_table(), to determine which functions should be
> dispatched to ES-specific implementations.  exec="es" indicates that
> the ES-specific implementation has a name beginning with "_es_"
> (e.g. _es_QueryMatrixxOES), and exec="check" indicates that the
> ES-specific implementation has a name beginning with "_check_"
> (e.g. _check_GetTexGenxvOES).

All of the _check_ nonsense should just go away.  In api_exec_es1.c, 
every single instance of _check_Foo is just a #define to _es_Foo.

All of the fixed-point functions should be renamed from _es_Foox to 
_mesa_Foox.  The single-precision matrix functions (e.g., _es_Orthof) 
should similar treatment.

As far as I can tell, that just leaves _es_RenderbufferStorageEXT, 
_es_TexGenf, _es_TexGenfv, and _es_GetTexGenfv with mangled ES1 names.

The single special-case for GL_RGB565 in _es_RenderbufferStorageEXT 
should just be handled in renderbuffer_storage.

The TexGen functions should just have an 'if (ctx->API == 
API_OPENGL_ES)' block at the top the defers to the special ES1 
implementation.

> ---
>   src/mapi/glapi/gen/OES_fixed_point.xml      | 83 +++++++++++++++--------------
>   src/mapi/glapi/gen/OES_single_precision.xml |  8 +--
>   src/mapi/glapi/gen/es_EXT.xml               |  6 +--
>   3 files changed, 49 insertions(+), 48 deletions(-)
>
> diff --git a/src/mapi/glapi/gen/OES_fixed_point.xml b/src/mapi/glapi/gen/OES_fixed_point.xml
> index 974240c..4996d35 100644
> --- a/src/mapi/glapi/gen/OES_fixed_point.xml
> +++ b/src/mapi/glapi/gen/OES_fixed_point.xml
> @@ -14,13 +14,13 @@
>
>       <!-- OpenGL ES 1.0 -->
>       <function name="AlphaFuncxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="func" type="GLenum"/>
>           <param name="ref" type="GLclampx"/>
>       </function>
>
>       <function name="ClearColorxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="red" type="GLclampx"/>
>           <param name="green" type="GLclampx"/>
>           <param name="blue" type="GLclampx"/>
> @@ -28,12 +28,12 @@
>       </function>
>
>       <function name="ClearDepthxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="depth" type="GLclampx"/>
>       </function>
>
>       <function name="Color4xOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="red" type="GLfixed"/>
>           <param name="green" type="GLfixed"/>
>           <param name="blue" type="GLfixed"/>
> @@ -41,24 +41,25 @@
>       </function>
>
>       <function name="DepthRangexOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="zNear" type="GLclampx"/>
>           <param name="zFar" type="GLclampx"/>
>       </function>
>
> -    <function name="FogxOES" offset="assign" static_dispatch="false" es1="1.0">
> +    <function name="FogxOES" offset="assign" static_dispatch="false" es1="1.0"
> +              exec="es">
>           <param name="pname" type="GLenum"/>
>           <param name="param" type="GLfixed"/>
>       </function>
>
>       <function name="FogxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="const GLfixed *" variable_param="pname"/>
>       </function>
>
>       <function name="FrustumxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="left" type="GLfixed"/>
>           <param name="right" type="GLfixed"/>
>           <param name="bottom" type="GLfixed"/>
> @@ -68,62 +69,62 @@
>       </function>
>
>       <function name="LightModelxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="pname" type="GLenum"/>
>           <param name="param" type="GLfixed"/>
>       </function>
>
>       <function name="LightModelxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="const GLfixed *" variable_param="pname"/>
>       </function>
>
>       <function name="LightxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="light" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="param" type="GLfixed"/>
>       </function>
>
>       <function name="LightxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="light" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="const GLfixed *" variable_param="pname"/>
>       </function>
>
>       <function name="LineWidthxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="width" type="GLfixed"/>
>       </function>
>
>       <function name="LoadMatrixxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="m" type="const GLfixed *" count="16"/>
>       </function>
>
>       <function name="MaterialxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="face" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="param" type="GLfixed"/>
>       </function>
>
>       <function name="MaterialxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="face" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="const GLfixed *" variable_param="pname"/>
>       </function>
>
>       <function name="MultMatrixxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="m" type="const GLfixed *" count="16"/>
>       </function>
>
>       <function name="MultiTexCoord4xOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="target" type="GLenum"/>
>           <param name="s" type="GLfixed"/>
>           <param name="t" type="GLfixed"/>
> @@ -132,14 +133,14 @@
>       </function>
>
>       <function name="Normal3xOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="nx" type="GLfixed"/>
>           <param name="ny" type="GLfixed"/>
>           <param name="nz" type="GLfixed"/>
>       </function>
>
>       <function name="OrthoxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="left" type="GLfixed"/>
>           <param name="right" type="GLfixed"/>
>           <param name="bottom" type="GLfixed"/>
> @@ -149,18 +150,18 @@
>       </function>
>
>       <function name="PointSizexOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="size" type="GLfixed"/>
>       </function>
>
>       <function name="PolygonOffsetxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="factor" type="GLfixed"/>
>           <param name="units" type="GLfixed"/>
>       </function>
>
>       <function name="RotatexOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="angle" type="GLfixed"/>
>           <param name="x" type="GLfixed"/>
>           <param name="y" type="GLfixed"/>
> @@ -168,41 +169,41 @@
>       </function>
>
>       <function name="SampleCoveragexOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="value" type="GLclampx"/>
>           <param name="invert" type="GLboolean"/>
>       </function>
>
>       <function name="ScalexOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="x" type="GLfixed"/>
>           <param name="y" type="GLfixed"/>
>           <param name="z" type="GLfixed"/>
>       </function>
>
>       <function name="TexEnvxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="target" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="param" type="GLfixed"/>
>       </function>
>
>       <function name="TexEnvxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="target" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="const GLfixed *" variable_param="pname"/>
>       </function>
>
>       <function name="TexParameterxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="target" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="param" type="GLfixed"/>
>       </function>
>
>       <function name="TranslatexOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="x" type="GLfixed"/>
>           <param name="y" type="GLfixed"/>
>           <param name="z" type="GLfixed"/>
> @@ -210,13 +211,13 @@
>
>       <!-- OpenGL ES 1.1 -->
>       <function name="ClipPlanexOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="plane" type="GLenum"/>
>           <param name="equation" type="const GLfixed *" count="4"/>
>       </function>
>
>       <function name="GetClipPlanexOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="plane" type="GLenum"/>
>           <param name="equation" type="GLfixed *" output="true" count="4"/>
>       </function>
> @@ -228,47 +229,47 @@
>       </function>
>
>       <function name="GetLightxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="light" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
>       </function>
>
>       <function name="GetMaterialxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="face" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
>       </function>
>
>       <function name="GetTexEnvxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="target" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
>       </function>
>
>       <function name="GetTexParameterxvOES" offset="assign"
> -              static_dispatch="false" es1="1.0">
> +              static_dispatch="false" es1="1.0" exec="es">
>           <param name="target" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
>       </function>
>
>       <function name="PointParameterxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="pname" type="GLenum"/>
>           <param name="param" type="GLfixed"/>
>       </function>
>
>       <function name="PointParameterxvOES" offset="assign"
> -              static_dispatch="false" es1="1.0">
> +              static_dispatch="false" es1="1.0" exec="es">
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="const GLfixed *"/>
>       </function>
>
>       <function name="TexParameterxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="target" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="const GLfixed *" variable_param="pname"/>
> @@ -276,21 +277,21 @@
>
>       <!-- texgen -->
>       <function name="GetTexGenxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="check">
>           <param name="coord" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
>       </function>
>
>       <function name="TexGenxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="check">
>           <param name="coord" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="param" type="GLint"/>
>       </function>
>
>       <function name="TexGenxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="check">
>           <param name="coord" type="GLenum"/>
>           <param name="pname" type="GLenum"/>
>           <param name="params" type="const GLfixed *" variable_param="pname"/>
> diff --git a/src/mapi/glapi/gen/OES_single_precision.xml b/src/mapi/glapi/gen/OES_single_precision.xml
> index 7d47441..112e08f 100644
> --- a/src/mapi/glapi/gen/OES_single_precision.xml
> +++ b/src/mapi/glapi/gen/OES_single_precision.xml
> @@ -12,7 +12,7 @@
>       </function>
>
>       <function name="ClipPlanefOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="plane" type="GLenum"/>
>           <param name="equation" type="const GLfloat *" count="4"/>
>       </function>
> @@ -24,13 +24,13 @@
>       </function>
>
>       <function name="GetClipPlanefOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="plane" type="GLenum"/>
>           <param name="equation" type="GLfloat *" output="true" count="4"/>
>       </function>
>
>       <function name="FrustumfOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="left" type="GLfloat"/>
>           <param name="right" type="GLfloat"/>
>           <param name="bottom" type="GLfloat"/>
> @@ -40,7 +40,7 @@
>       </function>
>
>       <function name="OrthofOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="left" type="GLfloat"/>
>           <param name="right" type="GLfloat"/>
>           <param name="bottom" type="GLfloat"/>
> diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
> index e66a5ff..e86f2ed 100644
> --- a/src/mapi/glapi/gen/es_EXT.xml
> +++ b/src/mapi/glapi/gen/es_EXT.xml
> @@ -115,7 +115,7 @@
>       </function>
>
>       <function name="DrawTexxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="x" type="GLfixed"/>
>           <param name="y" type="GLfixed"/>
>           <param name="z" type="GLfixed"/>
> @@ -124,7 +124,7 @@
>       </function>
>
>       <function name="DrawTexxvOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="coords" type="const GLfixed *" count="5"/>
>       </function>
>
> @@ -359,7 +359,7 @@
>   <!-- optional for es1.0 -->
>   <category name="GL_OES_query_matrix" number="16">
>       <function name="QueryMatrixxOES" offset="assign" static_dispatch="false"
> -              es1="1.0">
> +              es1="1.0" exec="es">
>           <param name="mantissa" type="GLfixed *" count="16" />
>           <param name="exponent" type="GLint *" count="16" />
>   	<return type="GLbitfield"/>
>



More information about the mesa-dev mailing list