From 57ebab64c0dd1abd646f4f274d01f19c8e0e7293 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 13 Mar 2018 20:47:48 +1100 Subject: mesa: add _mesa_add_sized_state_reference() helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will be used for adding packed builtin uniforms. Reviewed-by: Marek Olšák --- src/mesa/program/prog_parameter.c | 36 ++++++++++++++++++++++-------------- src/mesa/program/prog_parameter.h | 5 +++++ 2 files changed, 27 insertions(+), 14 deletions(-) (limited to 'src/mesa/program') diff --git a/src/mesa/program/prog_parameter.c b/src/mesa/program/prog_parameter.c index af9bb37cd5c..88821cfba16 100644 --- a/src/mesa/program/prog_parameter.c +++ b/src/mesa/program/prog_parameter.c @@ -362,21 +362,11 @@ _mesa_add_typed_unnamed_constant(struct gl_program_parameter_list *paramList, return pos; } - -/** - * Add a new state reference to the parameter list. - * This will be used when the program contains something like this: - * PARAM ambient = state.material.front.ambient; - * - * \param paramList the parameter list - * \param stateTokens an array of 5 (STATE_LENGTH) state tokens - * \return index of the new parameter. - */ GLint -_mesa_add_state_reference(struct gl_program_parameter_list *paramList, - const gl_state_index16 stateTokens[STATE_LENGTH]) +_mesa_add_sized_state_reference(struct gl_program_parameter_list *paramList, + const gl_state_index16 stateTokens[STATE_LENGTH], + const unsigned size, bool pad_and_align) { - const GLuint size = 4; /* XXX fix */ char *name; GLint index; @@ -391,7 +381,8 @@ _mesa_add_state_reference(struct gl_program_parameter_list *paramList, name = _mesa_program_state_string(stateTokens); index = _mesa_add_parameter(paramList, PROGRAM_STATE_VAR, name, - size, GL_NONE, NULL, stateTokens, true); + size, GL_NONE, NULL, stateTokens, + pad_and_align); paramList->StateFlags |= _mesa_program_state_flags(stateTokens); /* free name string here since we duplicated it in add_parameter() */ @@ -399,3 +390,20 @@ _mesa_add_state_reference(struct gl_program_parameter_list *paramList, return index; } + + +/** + * Add a new state reference to the parameter list. + * This will be used when the program contains something like this: + * PARAM ambient = state.material.front.ambient; + * + * \param paramList the parameter list + * \param stateTokens an array of 5 (STATE_LENGTH) state tokens + * \return index of the new parameter. + */ +GLint +_mesa_add_state_reference(struct gl_program_parameter_list *paramList, + const gl_state_index16 stateTokens[STATE_LENGTH]) +{ + return _mesa_add_sized_state_reference(paramList, stateTokens, 4, true); +} diff --git a/src/mesa/program/prog_parameter.h b/src/mesa/program/prog_parameter.h index 83eb0c5613a..8e36a1c5904 100644 --- a/src/mesa/program/prog_parameter.h +++ b/src/mesa/program/prog_parameter.h @@ -127,6 +127,11 @@ _mesa_add_unnamed_constant(struct gl_program_parameter_list *paramList, swizzleOut); } +extern GLint +_mesa_add_sized_state_reference(struct gl_program_parameter_list *paramList, + const gl_state_index16 stateTokens[STATE_LENGTH], + const unsigned size, bool pad_and_align); + extern GLint _mesa_add_state_reference(struct gl_program_parameter_list *paramList, const gl_state_index16 stateTokens[]); -- cgit v1.2.3