From fc31d9b733d0f8f6ab1983ccba584d28002fc2ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 28 Sep 2020 13:02:59 -0400 Subject: [PATCH] mesa: allow multi-slot program parameters also the removed comment was incorrect. Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/mesa/program/prog_parameter.c | 7 ++++--- src/mesa/program/prog_parameter.h | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mesa/program/prog_parameter.c b/src/mesa/program/prog_parameter.c index cb4eab47f1a..66f00a9e2c6 100644 --- a/src/mesa/program/prog_parameter.c +++ b/src/mesa/program/prog_parameter.c @@ -261,7 +261,7 @@ _mesa_add_parameter(struct gl_program_parameter_list *paramList, const gl_state_index16 state[STATE_LENGTH], bool pad_and_align) { - assert(0 < size && size <=4); + assert(0 < size); const GLuint oldNum = paramList->NumParameters; unsigned oldValNum = paramList->NumParameterValues; const unsigned padded_size = pad_and_align ? align(size, 4) : size; @@ -271,7 +271,7 @@ _mesa_add_parameter(struct gl_program_parameter_list *paramList, else if (_mesa_gl_datatype_is_64bit(datatype)) oldValNum = align(oldValNum, 2); /* pad start to 64-bit */ - _mesa_reserve_parameter_storage(paramList, 1, 1); + _mesa_reserve_parameter_storage(paramList, 1, DIV_ROUND_UP(padded_size, 4)); if (!paramList->Parameters || !paramList->ParameterValueOffset || !paramList->ParameterValues) { @@ -299,7 +299,8 @@ _mesa_add_parameter(struct gl_program_parameter_list *paramList, paramList->ParameterValueOffset[oldNum] = oldValNum; if (values) { if (size >= 4) { - COPY_4V(paramList->ParameterValues + oldValNum, values); + memcpy(paramList->ParameterValues + oldValNum, values, + size * sizeof(values[0])); } else { /* copy 1, 2 or 3 values */ assert(size < 4); diff --git a/src/mesa/program/prog_parameter.h b/src/mesa/program/prog_parameter.h index 4ba492758ac..85b8cf39523 100644 --- a/src/mesa/program/prog_parameter.h +++ b/src/mesa/program/prog_parameter.h @@ -107,7 +107,6 @@ struct gl_program_parameter * Number of components (1..4), or more. * If the number of components is greater than 4, * this parameter is part of a larger uniform like a GLSL matrix or array. - * The next program parameter's Size will be Size-4 of this parameter. */ GLushort Size; /**