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

Author: Eric Anholt <[email protected]>
Date:   Mon Jun 15 14:54:26 2015 -0700

vc4: Factor out the live clamp register getter.

---

 .../drivers/vc4/kernel/vc4_validate_shaders.c      |   32 +++++++++++++++-----
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c 
b/src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c
index e5a75c5..2e727a4 100644
--- a/src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c
+++ b/src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c
@@ -77,6 +77,24 @@ waddr_to_live_reg_index(uint32_t waddr, bool is_b)
        }
 }
 
+static uint32_t
+raddr_add_a_to_live_reg_index(uint64_t inst)
+{
+       uint32_t add_a = QPU_GET_FIELD(inst, QPU_ADD_A);
+       uint32_t raddr_a = QPU_GET_FIELD(inst, QPU_RADDR_A);
+       uint32_t raddr_b = QPU_GET_FIELD(inst, QPU_RADDR_B);
+
+       if (add_a == QPU_MUX_A) {
+               return raddr_a;
+       } else if (add_a == QPU_MUX_B) {
+               return 32 + raddr_b;
+       } else if (add_a <= QPU_MUX_R4) {
+               return 64 + add_a;
+       } else {
+               return ~0;
+       }
+}
+
 static bool
 is_tmu_submit(uint32_t waddr)
 {
@@ -136,9 +154,8 @@ check_tmu_write(uint64_t inst,
        uint32_t sig = QPU_GET_FIELD(inst, QPU_SIG);
 
        if (is_direct) {
-               uint32_t add_a = QPU_GET_FIELD(inst, QPU_ADD_A);
                uint32_t add_b = QPU_GET_FIELD(inst, QPU_ADD_B);
-               uint32_t clamp_offset = ~0;
+               uint32_t clamp_reg, clamp_offset;
 
                if (sig == QPU_SIG_SMALL_IMM) {
                        DRM_ERROR("direct TMU read used small immediate\n");
@@ -159,14 +176,13 @@ check_tmu_write(uint64_t inst,
                 * This is arbitrary, but simpler than supporting flipping the
                 * two either way.
                 */
-               if (add_a == QPU_MUX_A) {
-                       clamp_offset = 
validation_state->live_clamp_offsets[raddr_a];
-               } else if (add_a == QPU_MUX_B) {
-                       clamp_offset = validation_state->live_clamp_offsets[32 
+ raddr_b];
-               } else if (add_a <= QPU_MUX_R4) {
-                       clamp_offset = validation_state->live_clamp_offsets[64 
+ add_a];
+               clamp_reg = raddr_add_a_to_live_reg_index(inst);
+               if (clamp_reg == ~0) {
+                       DRM_ERROR("direct TMU load wasn't clamped\n");
+                       return false;
                }
 
+               clamp_offset = validation_state->live_clamp_offsets[clamp_reg];
                if (clamp_offset == ~0) {
                        DRM_ERROR("direct TMU load wasn't clamped\n");
                        return false;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to