From bddb4f9e1e9175521565a27fd7676c66a9ea1ab5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sat, 12 Dec 2020 01:39:29 -0500 Subject: [PATCH] mesa: compute gl_program_parameter_list::UniformBytes accurately MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The previous code didn't do it correctly. (e.g. _mesa_recompute_parameter_bounds didn't do anything) Reviewed-by: Zoltán Böszörményi Part-of: --- src/mesa/program/prog_parameter.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/mesa/program/prog_parameter.c b/src/mesa/program/prog_parameter.c index 542d6e1..f1b7b71 100644 --- a/src/mesa/program/prog_parameter.c +++ b/src/mesa/program/prog_parameter.c @@ -336,7 +336,9 @@ _mesa_add_parameter(struct gl_program_parameter_list *paramList, if (type == PROGRAM_UNIFORM || type == PROGRAM_CONSTANT) { paramList->UniformBytes = - MAX2(paramList->UniformBytes, paramList->NumParameterValues * 4); + MAX2(paramList->UniformBytes, + (paramList->Parameters[oldNum].ValueOffset + + paramList->Parameters[oldNum].Size) * 4); } else if (type == PROGRAM_STATE_VAR) { paramList->FirstStateVarIndex = MIN2(paramList->FirstStateVarIndex, oldNum); @@ -457,6 +459,7 @@ _mesa_add_state_reference(struct gl_program_parameter_list *paramList, void _mesa_recompute_parameter_bounds(struct gl_program_parameter_list *list) { + list->UniformBytes = 0; list->FirstStateVarIndex = INT_MAX; list->LastStateVarIndex = 0; @@ -465,7 +468,9 @@ _mesa_recompute_parameter_bounds(struct gl_program_parameter_list *list) list->FirstStateVarIndex = MIN2(list->FirstStateVarIndex, i); list->LastStateVarIndex = MAX2(list->LastStateVarIndex, i); } else { - list->UniformBytes = MAX2(list->UniformBytes, list->NumParameterValues * 4); + list->UniformBytes = MAX2(list->UniformBytes, + (list->Parameters[i].ValueOffset + + list->Parameters[i].Size) * 4); } } } -- 2.7.4