Mesa (master): mesa: compute gl_program_parameter_list::UniformBytes accurately
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jan 21 22:16:31 UTC 2021
Module: Mesa
Branch: master
Commit: bddb4f9e1e9175521565a27fd7676c66a9ea1ab5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bddb4f9e1e9175521565a27fd7676c66a9ea1ab5
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sat Dec 12 01:39:29 2020 -0500
mesa: compute gl_program_parameter_list::UniformBytes accurately
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 <zboszor at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8183>
---
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 542d6e1f5a2..f1b7b71834e 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);
}
}
}
More information about the mesa-commit
mailing list