[Mesa-dev] [PATCH] i965: Use BRW_MATH_DATA_SCALAR when source regioning is scalar.

Matt Turner mattst88 at gmail.com
Mon Sep 29 11:02:32 PDT 2014


Notice the mistaken (but harmless) argument swapping in brw_math_invert().
---
 src/mesa/drivers/dri/i965/brw_eu.h               | 1 -
 src/mesa/drivers/dri/i965/brw_eu_emit.c          | 9 ++++++++-
 src/mesa/drivers/dri/i965/brw_eu_util.c          | 3 +--
 src/mesa/drivers/dri/i965/brw_fs_generator.cpp   | 3 ---
 src/mesa/drivers/dri/i965/brw_sf_emit.c          | 2 --
 src/mesa/drivers/dri/i965/brw_vec4_generator.cpp | 2 --
 6 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h
index e6c26e3..db40497 100644
--- a/src/mesa/drivers/dri/i965/brw_eu.h
+++ b/src/mesa/drivers/dri/i965/brw_eu.h
@@ -291,7 +291,6 @@ void gen4_math(struct brw_compile *p,
 	       unsigned function,
 	       unsigned msg_reg_nr,
 	       struct brw_reg src,
-	       unsigned data_type,
 	       unsigned precision );
 
 void gen6_math(struct brw_compile *p,
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index 15e1da7..e4488fc 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -1879,11 +1879,18 @@ void gen4_math(struct brw_compile *p,
 	       unsigned function,
 	       unsigned msg_reg_nr,
 	       struct brw_reg src,
-	       unsigned data_type,
 	       unsigned precision )
 {
    struct brw_context *brw = p->brw;
    brw_inst *insn = next_insn(p, BRW_OPCODE_SEND);
+   unsigned data_type;
+   if (src.vstride == BRW_VERTICAL_STRIDE_0 &&
+       src.width == BRW_WIDTH_1 &&
+       src.hstride == BRW_HORIZONTAL_STRIDE_0) {
+      data_type = BRW_MATH_DATA_SCALAR;
+   } else {
+      data_type = BRW_MATH_DATA_VECTOR;
+   }
 
    assert(brw->gen < 6);
 
diff --git a/src/mesa/drivers/dri/i965/brw_eu_util.c b/src/mesa/drivers/dri/i965/brw_eu_util.c
index 0950fad..af4cfaf 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_util.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_util.c
@@ -44,8 +44,7 @@ void brw_math_invert( struct brw_compile *p,
 	     BRW_MATH_FUNCTION_INV,
 	     0,
 	     src,
-	     BRW_MATH_PRECISION_FULL,
-	     BRW_MATH_DATA_VECTOR );
+	     BRW_MATH_PRECISION_FULL);
 }
 
 
diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
index 1bc10f5..e523df5 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
@@ -342,7 +342,6 @@ fs_generator::generate_math_gen4(fs_inst *inst,
    gen4_math(p, dst,
 	     op,
 	     inst->base_mrf, src,
-	     BRW_MATH_DATA_VECTOR,
 	     BRW_MATH_PRECISION_FULL);
 
    if (dispatch_width == 16) {
@@ -350,7 +349,6 @@ fs_generator::generate_math_gen4(fs_inst *inst,
       gen4_math(p, sechalf(dst),
 	        op,
 	        inst->base_mrf + 1, sechalf(src),
-	        BRW_MATH_DATA_VECTOR,
 	        BRW_MATH_PRECISION_FULL);
 
       brw_set_default_compression_control(p, BRW_COMPRESSION_COMPRESSED);
@@ -376,7 +374,6 @@ fs_generator::generate_math_g45(fs_inst *inst,
    gen4_math(p, dst,
              op,
              inst->base_mrf, src,
-             BRW_MATH_DATA_VECTOR,
              BRW_MATH_PRECISION_FULL);
 }
 
diff --git a/src/mesa/drivers/dri/i965/brw_sf_emit.c b/src/mesa/drivers/dri/i965/brw_sf_emit.c
index 04d21a8..e8bf716 100644
--- a/src/mesa/drivers/dri/i965/brw_sf_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_sf_emit.c
@@ -327,7 +327,6 @@ static void invert_det( struct brw_sf_compile *c)
 	     BRW_MATH_FUNCTION_INV,
 	     0,
 	     c->det,
-	     BRW_MATH_DATA_SCALAR,
 	     BRW_MATH_PRECISION_FULL);
 
 }
@@ -616,7 +615,6 @@ void brw_emit_point_sprite_setup(struct brw_sf_compile *c, bool allocate)
 		   BRW_MATH_FUNCTION_INV,
 		   0,
 		   c->dx0,
-		   BRW_MATH_DATA_SCALAR,
 		   BRW_MATH_PRECISION_FULL);
 
 	 brw_set_default_access_mode(p, BRW_ALIGN_16);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
index 8869538..e522567 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
@@ -157,7 +157,6 @@ vec4_generator::generate_math1_gen4(vec4_instruction *inst,
 	     brw_math_function(inst->opcode),
 	     inst->base_mrf,
 	     src,
-	     BRW_MATH_DATA_VECTOR,
 	     BRW_MATH_PRECISION_FULL);
 }
 
@@ -218,7 +217,6 @@ vec4_generator::generate_math2_gen4(vec4_instruction *inst,
 	     brw_math_function(inst->opcode),
 	     inst->base_mrf,
 	     op0,
-	     BRW_MATH_DATA_VECTOR,
 	     BRW_MATH_PRECISION_FULL);
 }
 
-- 
1.8.5.5



More information about the mesa-dev mailing list