From 1755a5a38480264a4e25070209ce352b744183b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 12 Nov 2020 16:41:15 -0500 Subject: [PATCH] compiler: decrease STATE_LENGTH from 5 to 4 The rework of matrix state vars made the last element unused. Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/compiler/glsl/builtin_variables.cpp | 14 ++++---- src/compiler/glsl/glsl_to_nir.cpp | 2 +- src/compiler/shader_enums.h | 2 +- .../drivers/d3d12/d3d12_lower_point_sprite.c | 2 +- src/gallium/drivers/d3d12/d3d12_nir_passes.c | 4 +-- src/mesa/drivers/dri/i965/brw_program.c | 2 +- src/mesa/drivers/dri/r200/r200_vertprog.c | 2 +- src/mesa/main/ffvertex_prog.c | 32 ++++++++----------- src/mesa/program/prog_parameter.c | 2 +- src/mesa/program/prog_statevars.c | 1 - src/mesa/program/programopt.c | 20 ++++++------ src/mesa/state_tracker/st_atifs_to_tgsi.c | 4 +-- src/mesa/state_tracker/st_mesa_to_tgsi.c | 2 +- 13 files changed, 42 insertions(+), 47 deletions(-) diff --git a/src/compiler/glsl/builtin_variables.cpp b/src/compiler/glsl/builtin_variables.cpp index 79d5e5be514..d894e618ad4 100644 --- a/src/compiler/glsl/builtin_variables.cpp +++ b/src/compiler/glsl/builtin_variables.cpp @@ -194,10 +194,10 @@ static const struct gl_builtin_uniform_element gl_CurrentAttribFragMESA_elements #define MATRIX(name, statevar) \ static const struct gl_builtin_uniform_element name ## _elements[] = { \ - { NULL, { statevar, 0, 0, 0, 0}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 1, 1, 0}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 2, 2, 0}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 3, 3, 0}, SWIZZLE_XYZW }, \ + { NULL, { statevar, 0, 0, 0}, SWIZZLE_XYZW }, \ + { NULL, { statevar, 0, 1, 1}, SWIZZLE_XYZW }, \ + { NULL, { statevar, 0, 2, 2}, SWIZZLE_XYZW }, \ + { NULL, { statevar, 0, 3, 3}, SWIZZLE_XYZW }, \ } MATRIX(gl_ModelViewMatrix, STATE_MODELVIEW_MATRIX_TRANSPOSE); @@ -221,11 +221,11 @@ MATRIX(gl_TextureMatrixTranspose, STATE_TEXTURE_MATRIX); MATRIX(gl_TextureMatrixInverseTranspose, STATE_TEXTURE_MATRIX_INVERSE); static const struct gl_builtin_uniform_element gl_NormalMatrix_elements[] = { - { NULL, { STATE_MODELVIEW_MATRIX_INVERSE, 0, 0, 0, 0}, + { NULL, { STATE_MODELVIEW_MATRIX_INVERSE, 0, 0, 0}, MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z) }, - { NULL, { STATE_MODELVIEW_MATRIX_INVERSE, 0, 1, 1, 0}, + { NULL, { STATE_MODELVIEW_MATRIX_INVERSE, 0, 1, 1}, MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z) }, - { NULL, { STATE_MODELVIEW_MATRIX_INVERSE, 0, 2, 2, 0}, + { NULL, { STATE_MODELVIEW_MATRIX_INVERSE, 0, 2, 2}, MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z) }, }; diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index 86efde80d1a..aa4082c6764 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -663,7 +663,7 @@ nir_visitor::visit(ir_variable *ir) ir_state_slot *state_slots = ir->get_state_slots(); for (unsigned i = 0; i < var->num_state_slots; i++) { - for (unsigned j = 0; j < 5; j++) + for (unsigned j = 0; j < 4; j++) var->state_slots[i].tokens[j] = state_slots[i].tokens[j]; var->state_slots[i].swizzle = state_slots[i].swizzle; } diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index eb96a917248..697a68dc6b2 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -86,7 +86,7 @@ gl_shader_stage_is_callable(gl_shader_stage stage) * Number of STATE_* values we need to address any GL state. * Used to dimension arrays. */ -#define STATE_LENGTH 5 +#define STATE_LENGTH 4 typedef short gl_state_index16; /* see enum gl_state_index */ diff --git a/src/gallium/drivers/d3d12/d3d12_lower_point_sprite.c b/src/gallium/drivers/d3d12/d3d12_lower_point_sprite.c index 8b8a5a4a5f9..e6e7c46cca2 100644 --- a/src/gallium/drivers/d3d12/d3d12_lower_point_sprite.c +++ b/src/gallium/drivers/d3d12/d3d12_lower_point_sprite.c @@ -234,7 +234,7 @@ d3d12_lower_point_sprite(nir_shader *shader, unsigned point_coord_enable, uint64_t next_inputs_read) { - const gl_state_index16 tokens[5] = { STATE_INTERNAL, + const gl_state_index16 tokens[4] = { STATE_INTERNAL, STATE_INTERNAL_DRIVER, D3D12_STATE_VAR_PT_SPRITE }; struct lower_state state; diff --git a/src/gallium/drivers/d3d12/d3d12_nir_passes.c b/src/gallium/drivers/d3d12/d3d12_nir_passes.c index 99bdbaaf509..96b126fec53 100644 --- a/src/gallium/drivers/d3d12/d3d12_nir_passes.c +++ b/src/gallium/drivers/d3d12/d3d12_nir_passes.c @@ -43,7 +43,7 @@ get_state_var(nir_builder *b, const struct glsl_type *var_type, nir_variable **out_var) { - const gl_state_index16 tokens[5] = { STATE_INTERNAL, STATE_INTERNAL_DRIVER, var_enum }; + const gl_state_index16 tokens[STATE_LENGTH] = { STATE_INTERNAL, STATE_INTERNAL_DRIVER, var_enum }; if (*out_var == NULL) { nir_variable *var = nir_variable_create(b->shader, nir_var_uniform, @@ -521,7 +521,7 @@ d3d12_lower_state_vars(nir_shader *nir, struct d3d12_shader *shader) } } - const gl_state_index16 tokens[5] = { STATE_INTERNAL, STATE_INTERNAL_DRIVER }; + const gl_state_index16 tokens[STATE_LENGTH] = { STATE_INTERNAL, STATE_INTERNAL_DRIVER }; const struct glsl_type *type = glsl_array_type(glsl_vec4_type(), shader->state_vars_size / 4, 0); nir_variable *ubo = nir_variable_create(nir, nir_var_mem_ubo, type, diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index df3400a2677..71606b9f845 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -148,7 +148,7 @@ brw_create_nir(struct brw_context *brw, if (stage == MESA_SHADER_FRAGMENT) { static const struct nir_lower_wpos_ytransform_options wpos_options = { - .state_tokens = {STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM, 0, 0, 0}, + .state_tokens = {STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM, 0, 0}, .fs_coord_pixel_center_integer = 1, .fs_coord_origin_upper_left = 1, }; diff --git a/src/mesa/drivers/dri/r200/r200_vertprog.c b/src/mesa/drivers/dri/r200/r200_vertprog.c index 0c51b191dfc..a1d7d60d57b 100644 --- a/src/mesa/drivers/dri/r200/r200_vertprog.c +++ b/src/mesa/drivers/dri/r200/r200_vertprog.c @@ -460,7 +460,7 @@ static GLboolean r200_translate_vertex_program(struct gl_context *ctx, struct r2 if ((mesa_vp->info.outputs_written & (1 << VARYING_SLOT_FOGC)) && !vp->fogpidx) { struct gl_program_parameter_list *paramList; - gl_state_index16 tokens[STATE_LENGTH] = { STATE_FOG_PARAMS, 0, 0, 0, 0 }; + gl_state_index16 tokens[STATE_LENGTH] = { STATE_FOG_PARAMS, 0, 0, 0 }; paramList = mesa_vp->Parameters; vp->fogpidx = _mesa_add_state_reference(paramList, tokens); } diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c index 62ae944bba1..66fe688de3c 100644 --- a/src/mesa/main/ffvertex_prog.c +++ b/src/mesa/main/ffvertex_prog.c @@ -408,12 +408,11 @@ static void release_temps( struct tnl_program *p ) } -static struct ureg register_param5(struct tnl_program *p, +static struct ureg register_param4(struct tnl_program *p, GLint s0, GLint s1, GLint s2, - GLint s3, - GLint s4) + GLint s3) { gl_state_index16 tokens[STATE_LENGTH]; GLint idx; @@ -421,16 +420,14 @@ static struct ureg register_param5(struct tnl_program *p, tokens[1] = s1; tokens[2] = s2; tokens[3] = s3; - tokens[4] = s4; idx = _mesa_add_state_reference(p->state_params, tokens); return make_ureg(PROGRAM_STATE_VAR, idx); } -#define register_param1(p,s0) register_param5(p,s0,0,0,0,0) -#define register_param2(p,s0,s1) register_param5(p,s0,s1,0,0,0) -#define register_param3(p,s0,s1,s2) register_param5(p,s0,s1,s2,0,0) -#define register_param4(p,s0,s1,s2,s3) register_param5(p,s0,s1,s2,s3,0) +#define register_param1(p,s0) register_param4(p,s0,0,0,0) +#define register_param2(p,s0,s1) register_param4(p,s0,s1,0,0) +#define register_param3(p,s0,s1,s2) register_param4(p,s0,s1,s2,0) @@ -504,7 +501,6 @@ static void register_matrix_param5( struct tnl_program *p, GLint s1, /* texture matrix number */ GLint s2, /* first row */ GLint s3, /* last row */ - GLint s4, /* inverse, transpose, etc */ struct ureg *matrix ) { GLint i; @@ -513,7 +509,7 @@ static void register_matrix_param5( struct tnl_program *p, * matrix out in one go: */ for (i = 0; i <= s3 - s2; i++) - matrix[i] = register_param5( p, s0, s1, i, i, s4 ); + matrix[i] = register_param4(p, s0, s1, i, i); } @@ -718,13 +714,13 @@ static struct ureg get_eye_position( struct tnl_program *p ) if (p->mvp_with_dp4) { register_matrix_param5( p, STATE_MODELVIEW_MATRIX, 0, 0, 3, - 0, modelview ); + modelview ); emit_matrix_transform_vec4(p, p->eye_position, modelview, pos); } else { register_matrix_param5( p, STATE_MODELVIEW_MATRIX_TRANSPOSE, 0, 0, 3, - 0, modelview ); + modelview ); emit_transpose_matrix_transform_vec4(p, p->eye_position, modelview, pos); } @@ -746,7 +742,7 @@ static struct ureg get_eye_position_z( struct tnl_program *p ) p->eye_position_z = reserve_temp(p); register_matrix_param5( p, STATE_MODELVIEW_MATRIX, 0, 0, 3, - 0, modelview ); + modelview ); emit_op2(p, OPCODE_DP4, p->eye_position_z, 0, pos, modelview[2]); } @@ -784,7 +780,7 @@ static struct ureg get_transformed_normal( struct tnl_program *p ) if (p->state->need_eye_coords) { register_matrix_param5( p, STATE_MODELVIEW_MATRIX_INVTRANS, 0, 0, 2, - 0, mvinv ); + mvinv ); /* Transform to eye space: */ @@ -824,12 +820,12 @@ static void build_hpos( struct tnl_program *p ) if (p->mvp_with_dp4) { register_matrix_param5( p, STATE_MVP_MATRIX, 0, 0, 3, - 0, mvp ); + mvp ); emit_matrix_transform_vec4( p, hpos, mvp, pos ); } else { register_matrix_param5( p, STATE_MVP_MATRIX_TRANSPOSE, 0, 0, 3, - 0, mvp ); + mvp ); emit_transpose_matrix_transform_vec4( p, hpos, mvp, pos ); } } @@ -1500,12 +1496,12 @@ static void build_texture_transform( struct tnl_program *p ) register_input(p, VERT_ATTRIB_TEX0+i)); if (p->mvp_with_dp4) { register_matrix_param5( p, STATE_TEXTURE_MATRIX, i, 0, 3, - 0, texmat ); + texmat ); emit_matrix_transform_vec4( p, out, texmat, in ); } else { register_matrix_param5( p, STATE_TEXTURE_MATRIX_TRANSPOSE, i, 0, 3, - 0, texmat ); + texmat ); emit_transpose_matrix_transform_vec4( p, out, texmat, in ); } } diff --git a/src/mesa/program/prog_parameter.c b/src/mesa/program/prog_parameter.c index 2a0347e06a6..bcfcb4c0113 100644 --- a/src/mesa/program/prog_parameter.c +++ b/src/mesa/program/prog_parameter.c @@ -443,7 +443,7 @@ _mesa_add_sized_state_reference(struct gl_program_parameter_list *paramList, * PARAM ambient = state.material.front.ambient; * * \param paramList the parameter list - * \param stateTokens an array of 5 (STATE_LENGTH) state tokens + * \param stateTokens an array of STATE_LENGTH state tokens * \return index of the new parameter. */ GLint diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c index ee04cb7d5b5..ea751b1f40a 100644 --- a/src/mesa/program/prog_statevars.c +++ b/src/mesa/program/prog_statevars.c @@ -1159,7 +1159,6 @@ _mesa_program_state_string(const gl_state_index16 state[STATE_LENGTH]) /* state[1] = which texture matrix or program matrix */ /* state[2] = first row to fetch */ /* state[3] = last row to fetch */ - /* state[4] = transpose, inverse or invtrans */ const gl_state_index mat = state[0]; const GLuint index = (GLuint) state[1]; const GLuint firstRow = (GLuint) state[2]; diff --git a/src/mesa/program/programopt.c b/src/mesa/program/programopt.c index 42750cc8cfb..71d53eea65f 100644 --- a/src/mesa/program/programopt.c +++ b/src/mesa/program/programopt.c @@ -58,10 +58,10 @@ insert_mvp_dp4_code(struct gl_context *ctx, struct gl_program *vprog) * XXX we should check if these state vars are already declared. */ static const gl_state_index16 mvpState[4][STATE_LENGTH] = { - { STATE_MVP_MATRIX, 0, 0, 0, 0 }, /* state.matrix.mvp.row[0] */ - { STATE_MVP_MATRIX, 0, 1, 1, 0 }, /* state.matrix.mvp.row[1] */ - { STATE_MVP_MATRIX, 0, 2, 2, 0 }, /* state.matrix.mvp.row[2] */ - { STATE_MVP_MATRIX, 0, 3, 3, 0 }, /* state.matrix.mvp.row[3] */ + { STATE_MVP_MATRIX, 0, 0, 0 }, /* state.matrix.mvp.row[0] */ + { STATE_MVP_MATRIX, 0, 1, 1 }, /* state.matrix.mvp.row[1] */ + { STATE_MVP_MATRIX, 0, 2, 2 }, /* state.matrix.mvp.row[2] */ + { STATE_MVP_MATRIX, 0, 3, 3 }, /* state.matrix.mvp.row[3] */ }; GLint mvpRef[4]; @@ -126,10 +126,10 @@ insert_mvp_mad_code(struct gl_context *ctx, struct gl_program *vprog) * XXX we should check if these state vars are already declared. */ static const gl_state_index16 mvpState[4][STATE_LENGTH] = { - { STATE_MVP_MATRIX_TRANSPOSE, 0, 0, 0, 0 }, - { STATE_MVP_MATRIX_TRANSPOSE, 0, 1, 1, 0 }, - { STATE_MVP_MATRIX_TRANSPOSE, 0, 2, 2, 0 }, - { STATE_MVP_MATRIX_TRANSPOSE, 0, 3, 3, 0 }, + { STATE_MVP_MATRIX_TRANSPOSE, 0, 0, 0 }, + { STATE_MVP_MATRIX_TRANSPOSE, 0, 1, 1 }, + { STATE_MVP_MATRIX_TRANSPOSE, 0, 2, 2 }, + { STATE_MVP_MATRIX_TRANSPOSE, 0, 3, 3 }, }; GLint mvpRef[4]; @@ -248,9 +248,9 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_program *fprog, GLenum fog_mode, GLboolean saturate) { static const gl_state_index16 fogPStateOpt[STATE_LENGTH] - = { STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0, 0 }; + = { STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0 }; static const gl_state_index16 fogColorState[STATE_LENGTH] - = { STATE_FOG_COLOR, 0, 0, 0, 0}; + = { STATE_FOG_COLOR, 0, 0, 0 }; struct prog_instruction *newInst, *inst; const GLuint origLen = fprog->arb.NumInstructions; const GLuint newLen = origLen + 5; diff --git a/src/mesa/state_tracker/st_atifs_to_tgsi.c b/src/mesa/state_tracker/st_atifs_to_tgsi.c index 2af2ad8d5f5..0d104a9c541 100644 --- a/src/mesa/state_tracker/st_atifs_to_tgsi.c +++ b/src/mesa/state_tracker/st_atifs_to_tgsi.c @@ -547,9 +547,9 @@ st_init_atifs_prog(struct gl_context *ctx, struct gl_program *prog) unsigned pass, i, r, optype, arg; static const gl_state_index16 fog_params_state[STATE_LENGTH] = - {STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0, 0}; + {STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0 }; static const gl_state_index16 fog_color[STATE_LENGTH] = - {STATE_FOG_COLOR, 0, 0, 0, 0}; + {STATE_FOG_COLOR, 0, 0, 0 }; prog->info.inputs_read = 0; prog->info.outputs_written = BITFIELD64_BIT(FRAG_RESULT_COLOR); diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c index dca9acb3f31..0a57c021cfd 100644 --- a/src/mesa/state_tracker/st_mesa_to_tgsi.c +++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c @@ -635,7 +635,7 @@ emit_wpos_adjustment(struct gl_context *ctx, * where T = INPUT[WPOS] by y is inverted. */ static const gl_state_index16 wposTransformState[STATE_LENGTH] - = { STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM, 0, 0, 0 }; + = { STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM, 0, 0 }; /* XXX: note we are modifying the incoming shader here! Need to * do this before emitting the constant decls below, or this