Module: Mesa Branch: master Commit: 45acf9b49ad01d5947e9107ad77a446f90b5a755 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=45acf9b49ad01d5947e9107ad77a446f90b5a755
Author: Marek Olšák <[email protected]> Date: Fri Jan 1 14:00:13 2021 -0500 mesa: fix a bug in merging light state parameters with unpacked uniforms This code is not enabled yet. Reviewed-by: Zoltán Böszörményi <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8017> --- src/mesa/program/prog_statevars.c | 8 ++++++-- src/mesa/program/prog_statevars.h | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c index f3b5d3b07b8..1b00bacf5b7 100644 --- a/src/mesa/program/prog_statevars.c +++ b/src/mesa/program/prog_statevars.c @@ -1292,7 +1292,8 @@ _mesa_upload_state_parameters(struct gl_context *ctx, * It's only meant to optimize _mesa_load/upload_state_parameters. */ void -_mesa_optimize_state_parameters(struct gl_program_parameter_list *list) +_mesa_optimize_state_parameters(struct gl_constants *consts, + struct gl_program_parameter_list *list) { for (int first_param = list->FirstStateVarIndex; first_param < (int)list->NumParameters; first_param++) { @@ -1368,7 +1369,10 @@ _mesa_optimize_state_parameters(struct gl_program_parameter_list *list) list->Parameters[i].StateIndexes[2] == list->Parameters[i - 1].StateIndexes[2] + 1) || /* Consecutive attributes between 2 lights: */ - (list->Parameters[i].StateIndexes[1] == + /* SPOT_CUTOFF should have only 1 component, which isn't true + * with unpacked uniform storage. */ + (consts->PackedDriverUniformStorage && + list->Parameters[i].StateIndexes[1] == list->Parameters[i - 1].StateIndexes[1] + 1 && list->Parameters[i].StateIndexes[2] == STATE_AMBIENT && list->Parameters[i - 1].StateIndexes[2] == STATE_SPOT_CUTOFF))) { diff --git a/src/mesa/program/prog_statevars.h b/src/mesa/program/prog_statevars.h index 13c8ba023ef..4e45382d019 100644 --- a/src/mesa/program/prog_statevars.h +++ b/src/mesa/program/prog_statevars.h @@ -37,6 +37,7 @@ extern "C" { struct gl_context; +struct gl_constants; struct gl_program_parameter_list; @@ -169,7 +170,8 @@ _mesa_upload_state_parameters(struct gl_context *ctx, uint32_t *dst); extern void -_mesa_optimize_state_parameters(struct gl_program_parameter_list *list); +_mesa_optimize_state_parameters(struct gl_constants *consts, + struct gl_program_parameter_list *list); extern unsigned _mesa_program_state_value_size(const gl_state_index16 state[STATE_LENGTH]); _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
