[Mesa-dev] [PATCH 01/21] glsl: make static constant variables "static const"

Ian Romanick idr at freedesktop.org
Fri May 2 10:51:38 PDT 2014


Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

This one seems low-impact enough that I went ahead and pushed it... so
that it would be in 10.2.

On 04/22/2014 01:58 AM, Chia-I Wu wrote:
> This allows them to be moved to .rodata, and allow us to be sure that they
> will not be modified.
> 
> Signed-off-by: Chia-I Wu <olv at lunarg.com>
> ---
>  src/glsl/builtin_types.cpp      |  2 +-
>  src/glsl/builtin_variables.cpp  | 63 +++++++++++++++++++++--------------------
>  src/glsl/glsl_parser.yy         |  4 +--
>  src/glsl/glsl_parser_extras.cpp |  4 +--
>  src/glsl/ir.cpp                 |  2 +-
>  src/mesa/main/uniforms.h        |  2 +-
>  6 files changed, 39 insertions(+), 38 deletions(-)
> 
> diff --git a/src/glsl/builtin_types.cpp b/src/glsl/builtin_types.cpp
> index dd42ecb..0a0fa8c 100644
> --- a/src/glsl/builtin_types.cpp
> +++ b/src/glsl/builtin_types.cpp
> @@ -241,7 +241,7 @@ const static struct builtin_type_versions {
>     T(atomic_uint,                     420, 999)
>  };
>  
> -const glsl_type *const deprecated_types[] = {
> +static const glsl_type *const deprecated_types[] = {
>     glsl_type::struct_gl_PointParameters_type,
>     glsl_type::struct_gl_MaterialParameters_type,
>     glsl_type::struct_gl_LightSourceParameters_type,
> diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp
> index 4176ae6..9b35850 100644
> --- a/src/glsl/builtin_variables.cpp
> +++ b/src/glsl/builtin_variables.cpp
> @@ -30,21 +30,21 @@
>  #include "program/prog_statevars.h"
>  #include "program/prog_instruction.h"
>  
> -static struct gl_builtin_uniform_element gl_NumSamples_elements[] = {
> +static const struct gl_builtin_uniform_element gl_NumSamples_elements[] = {
>     {NULL, {STATE_NUM_SAMPLES, 0, 0}, SWIZZLE_XXXX}
>  };
>  
> -static struct gl_builtin_uniform_element gl_DepthRange_elements[] = {
> +static const struct gl_builtin_uniform_element gl_DepthRange_elements[] = {
>     {"near", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_XXXX},
>     {"far", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_YYYY},
>     {"diff", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_ZZZZ},
>  };
>  
> -static struct gl_builtin_uniform_element gl_ClipPlane_elements[] = {
> +static const struct gl_builtin_uniform_element gl_ClipPlane_elements[] = {
>     {NULL, {STATE_CLIPPLANE, 0, 0}, SWIZZLE_XYZW}
>  };
>  
> -static struct gl_builtin_uniform_element gl_Point_elements[] = {
> +static const struct gl_builtin_uniform_element gl_Point_elements[] = {
>     {"size", {STATE_POINT_SIZE}, SWIZZLE_XXXX},
>     {"sizeMin", {STATE_POINT_SIZE}, SWIZZLE_YYYY},
>     {"sizeMax", {STATE_POINT_SIZE}, SWIZZLE_ZZZZ},
> @@ -54,7 +54,7 @@ static struct gl_builtin_uniform_element gl_Point_elements[] = {
>     {"distanceQuadraticAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_ZZZZ},
>  };
>  
> -static struct gl_builtin_uniform_element gl_FrontMaterial_elements[] = {
> +static const struct gl_builtin_uniform_element gl_FrontMaterial_elements[] = {
>     {"emission", {STATE_MATERIAL, 0, STATE_EMISSION}, SWIZZLE_XYZW},
>     {"ambient", {STATE_MATERIAL, 0, STATE_AMBIENT}, SWIZZLE_XYZW},
>     {"diffuse", {STATE_MATERIAL, 0, STATE_DIFFUSE}, SWIZZLE_XYZW},
> @@ -62,7 +62,7 @@ static struct gl_builtin_uniform_element gl_FrontMaterial_elements[] = {
>     {"shininess", {STATE_MATERIAL, 0, STATE_SHININESS}, SWIZZLE_XXXX},
>  };
>  
> -static struct gl_builtin_uniform_element gl_BackMaterial_elements[] = {
> +static const struct gl_builtin_uniform_element gl_BackMaterial_elements[] = {
>     {"emission", {STATE_MATERIAL, 1, STATE_EMISSION}, SWIZZLE_XYZW},
>     {"ambient", {STATE_MATERIAL, 1, STATE_AMBIENT}, SWIZZLE_XYZW},
>     {"diffuse", {STATE_MATERIAL, 1, STATE_DIFFUSE}, SWIZZLE_XYZW},
> @@ -70,7 +70,7 @@ static struct gl_builtin_uniform_element gl_BackMaterial_elements[] = {
>     {"shininess", {STATE_MATERIAL, 1, STATE_SHININESS}, SWIZZLE_XXXX},
>  };
>  
> -static struct gl_builtin_uniform_element gl_LightSource_elements[] = {
> +static const struct gl_builtin_uniform_element gl_LightSource_elements[] = {
>     {"ambient", {STATE_LIGHT, 0, STATE_AMBIENT}, SWIZZLE_XYZW},
>     {"diffuse", {STATE_LIGHT, 0, STATE_DIFFUSE}, SWIZZLE_XYZW},
>     {"specular", {STATE_LIGHT, 0, STATE_SPECULAR}, SWIZZLE_XYZW},
> @@ -89,67 +89,67 @@ static struct gl_builtin_uniform_element gl_LightSource_elements[] = {
>     {"quadraticAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_ZZZZ},
>  };
>  
> -static struct gl_builtin_uniform_element gl_LightModel_elements[] = {
> +static const struct gl_builtin_uniform_element gl_LightModel_elements[] = {
>     {"ambient", {STATE_LIGHTMODEL_AMBIENT, 0}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_FrontLightModelProduct_elements[] = {
> +static const struct gl_builtin_uniform_element gl_FrontLightModelProduct_elements[] = {
>     {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 0}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_BackLightModelProduct_elements[] = {
> +static const struct gl_builtin_uniform_element gl_BackLightModelProduct_elements[] = {
>     {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 1}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_FrontLightProduct_elements[] = {
> +static const struct gl_builtin_uniform_element gl_FrontLightProduct_elements[] = {
>     {"ambient", {STATE_LIGHTPROD, 0, 0, STATE_AMBIENT}, SWIZZLE_XYZW},
>     {"diffuse", {STATE_LIGHTPROD, 0, 0, STATE_DIFFUSE}, SWIZZLE_XYZW},
>     {"specular", {STATE_LIGHTPROD, 0, 0, STATE_SPECULAR}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_BackLightProduct_elements[] = {
> +static const struct gl_builtin_uniform_element gl_BackLightProduct_elements[] = {
>     {"ambient", {STATE_LIGHTPROD, 0, 1, STATE_AMBIENT}, SWIZZLE_XYZW},
>     {"diffuse", {STATE_LIGHTPROD, 0, 1, STATE_DIFFUSE}, SWIZZLE_XYZW},
>     {"specular", {STATE_LIGHTPROD, 0, 1, STATE_SPECULAR}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_TextureEnvColor_elements[] = {
> +static const struct gl_builtin_uniform_element gl_TextureEnvColor_elements[] = {
>     {NULL, {STATE_TEXENV_COLOR, 0}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_EyePlaneS_elements[] = {
> +static const struct gl_builtin_uniform_element gl_EyePlaneS_elements[] = {
>     {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_S}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_EyePlaneT_elements[] = {
> +static const struct gl_builtin_uniform_element gl_EyePlaneT_elements[] = {
>     {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_T}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_EyePlaneR_elements[] = {
> +static const struct gl_builtin_uniform_element gl_EyePlaneR_elements[] = {
>     {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_R}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_EyePlaneQ_elements[] = {
> +static const struct gl_builtin_uniform_element gl_EyePlaneQ_elements[] = {
>     {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_Q}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_ObjectPlaneS_elements[] = {
> +static const struct gl_builtin_uniform_element gl_ObjectPlaneS_elements[] = {
>     {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_S}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_ObjectPlaneT_elements[] = {
> +static const struct gl_builtin_uniform_element gl_ObjectPlaneT_elements[] = {
>     {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_T}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_ObjectPlaneR_elements[] = {
> +static const struct gl_builtin_uniform_element gl_ObjectPlaneR_elements[] = {
>     {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_R}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_ObjectPlaneQ_elements[] = {
> +static const struct gl_builtin_uniform_element gl_ObjectPlaneQ_elements[] = {
>     {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_Q}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_Fog_elements[] = {
> +static const struct gl_builtin_uniform_element gl_Fog_elements[] = {
>     {"color", {STATE_FOG_COLOR}, SWIZZLE_XYZW},
>     {"density", {STATE_FOG_PARAMS}, SWIZZLE_XXXX},
>     {"start", {STATE_FOG_PARAMS}, SWIZZLE_YYYY},
> @@ -157,32 +157,32 @@ static struct gl_builtin_uniform_element gl_Fog_elements[] = {
>     {"scale", {STATE_FOG_PARAMS}, SWIZZLE_WWWW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_NormalScale_elements[] = {
> +static const struct gl_builtin_uniform_element gl_NormalScale_elements[] = {
>     {NULL, {STATE_NORMAL_SCALE}, SWIZZLE_XXXX},
>  };
>  
> -static struct gl_builtin_uniform_element gl_BumpRotMatrix0MESA_elements[] = {
> +static const struct gl_builtin_uniform_element gl_BumpRotMatrix0MESA_elements[] = {
>     {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_0}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_BumpRotMatrix1MESA_elements[] = {
> +static const struct gl_builtin_uniform_element gl_BumpRotMatrix1MESA_elements[] = {
>     {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_1}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_FogParamsOptimizedMESA_elements[] = {
> +static const struct gl_builtin_uniform_element gl_FogParamsOptimizedMESA_elements[] = {
>     {NULL, {STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_CurrentAttribVertMESA_elements[] = {
> +static const struct gl_builtin_uniform_element gl_CurrentAttribVertMESA_elements[] = {
>     {NULL, {STATE_INTERNAL, STATE_CURRENT_ATTRIB, 0}, SWIZZLE_XYZW},
>  };
>  
> -static struct gl_builtin_uniform_element gl_CurrentAttribFragMESA_elements[] = {
> +static const struct gl_builtin_uniform_element gl_CurrentAttribFragMESA_elements[] = {
>     {NULL, {STATE_INTERNAL, STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, 0}, SWIZZLE_XYZW},
>  };
>  
>  #define MATRIX(name, statevar, modifier)				\
> -   static struct gl_builtin_uniform_element name ## _elements[] = {	\
> +   static const struct gl_builtin_uniform_element name ## _elements[] = { \
>        { NULL, { statevar, 0, 0, 0, modifier}, SWIZZLE_XYZW },		\
>        { NULL, { statevar, 0, 1, 1, modifier}, SWIZZLE_XYZW },		\
>        { NULL, { statevar, 0, 2, 2, modifier}, SWIZZLE_XYZW },		\
> @@ -225,7 +225,7 @@ MATRIX(gl_TextureMatrixTranspose,
>  MATRIX(gl_TextureMatrixInverseTranspose,
>         STATE_TEXTURE_MATRIX, STATE_MATRIX_INVERSE);
>  
> -static struct gl_builtin_uniform_element gl_NormalMatrix_elements[] = {
> +static const struct gl_builtin_uniform_element gl_NormalMatrix_elements[] = {
>     { NULL, { STATE_MODELVIEW_MATRIX, 0, 0, 0, STATE_MATRIX_INVERSE},
>       MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z) },
>     { NULL, { STATE_MODELVIEW_MATRIX, 0, 1, 1, STATE_MATRIX_INVERSE},
> @@ -498,7 +498,8 @@ builtin_variable_generator::add_uniform(const glsl_type *type,
>  
>     for (unsigned a = 0; a < array_count; a++) {
>        for (unsigned j = 0; j < statevar->num_elements; j++) {
> -	 struct gl_builtin_uniform_element *element = &statevar->elements[j];
> +	 const struct gl_builtin_uniform_element *element =
> +	    &statevar->elements[j];
>  
>  	 memcpy(slots->tokens, element->tokens, sizeof(element->tokens));
>  	 if (type->is_array()) {
> diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
> index 2d0e7be..e3ee16a 100644
> --- a/src/glsl/glsl_parser.yy
> +++ b/src/glsl/glsl_parser.yy
> @@ -1214,7 +1214,7 @@ layout_qualifier_id:
>  
>        /* Layout qualifiers for GLSL 1.50 geometry shaders. */
>        if (!$$.flags.i) {
> -         struct {
> +         static const struct {
>              const char *s;
>              GLenum e;
>           } map[] = {
> @@ -1368,7 +1368,7 @@ layout_qualifier_id:
>           }
>        }
>  
> -      static const char *local_size_qualifiers[3] = {
> +      static const char * const local_size_qualifiers[3] = {
>           "local_size_x",
>           "local_size_y",
>           "local_size_z",
> diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
> index 03c2a97..91c9285 100644
> --- a/src/glsl/glsl_parser_extras.cpp
> +++ b/src/glsl/glsl_parser_extras.cpp
> @@ -49,7 +49,7 @@ glsl_compute_version_string(void *mem_ctx, bool is_es, unsigned version)
>  }
>  
>  
> -static unsigned known_desktop_glsl_versions[] =
> +static const unsigned known_desktop_glsl_versions[] =
>     { 110, 120, 130, 140, 150, 330, 400, 410, 420, 430, 440 };
>  
>  
> @@ -637,7 +637,7 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp,
>        if (extension && extension->compatible_with_state(state)) {
>           extension->set_flags(state, behavior);
>        } else {
> -         static const char *const fmt = "extension `%s' unsupported in %s shader";
> +         static const char fmt[] = "extension `%s' unsupported in %s shader";
>  
>           if (behavior == extension_require) {
>              _mesa_glsl_error(name_locp, state, fmt,
> diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
> index 1a18b47..ba8a839 100644
> --- a/src/glsl/ir.cpp
> +++ b/src/glsl/ir.cpp
> @@ -1333,7 +1333,7 @@ ir_dereference::is_lvalue() const
>  }
>  
>  
> -static const char *tex_opcode_strs[] = { "tex", "txb", "txl", "txd", "txf", "txf_ms", "txs", "lod", "tg4", "query_levels" };
> +static const char * const tex_opcode_strs[] = { "tex", "txb", "txl", "txd", "txf", "txf_ms", "txs", "lod", "tg4", "query_levels" };
>  
>  const char *ir_texture::opcode_string()
>  {
> diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h
> index c8b555c..10518dc 100644
> --- a/src/mesa/main/uniforms.h
> +++ b/src/mesa/main/uniforms.h
> @@ -319,7 +319,7 @@ struct gl_builtin_uniform_element {
>  
>  struct gl_builtin_uniform_desc {
>     const char *name;
> -   struct gl_builtin_uniform_element *elements;
> +   const struct gl_builtin_uniform_element *elements;
>     unsigned int num_elements;
>  };
>  
> 



More information about the mesa-dev mailing list