Mesa (master): mesa: add support propagate uniform support for packed uniforms

Timothy Arceri tarceri at kemper.freedesktop.org
Tue Mar 20 03:24:30 UTC 2018


Module: Mesa
Branch: master
Commit: 23777543290b9dfa17bfecb5b389ad3fc8e75820
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=23777543290b9dfa17bfecb5b389ad3fc8e75820

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Tue Mar 13 16:44:06 2018 +1100

mesa: add support propagate uniform support for packed uniforms

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/mesa/program/ir_to_mesa.cpp | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index 0dad6f9c71..b0b322865b 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -2639,8 +2639,24 @@ _mesa_associate_uniform_storage(struct gl_context *ctx,
           */
          if (propagate_to_storage) {
             unsigned array_elements = MAX2(1, storage->array_elements);
-            _mesa_propagate_uniforms_to_driver_storage(storage, 0,
-                                                       array_elements);
+            if (ctx->Const.PackedDriverUniformStorage && !prog->is_arb_asm &&
+                (storage->is_bindless || !storage->type->contains_opaque())) {
+               const int dmul = storage->type->is_64bit() ? 2 : 1;
+               const unsigned components =
+                  storage->type->vector_elements *
+                  storage->type->matrix_columns;
+
+               for (unsigned s = 0; s < storage->num_driver_storage; s++) {
+                  gl_constant_value *uni_storage = (gl_constant_value *)
+                     storage->driver_storage[s].data;
+                  memcpy(uni_storage, storage->storage,
+                         sizeof(storage->storage[0]) * components *
+                         array_elements * dmul);
+               }
+            } else {
+               _mesa_propagate_uniforms_to_driver_storage(storage, 0,
+                                                          array_elements);
+            }
          }
 
 	      last_location = location;




More information about the mesa-commit mailing list