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

Reply via email to