Mesa (master): i965/fs: Explicitly set the exec_size on the add(32) in interpolation setup

Jason Ekstrand jekstrand at kemper.freedesktop.org
Tue Jun 30 23:48:23 UTC 2015


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

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Jun 17 17:32:24 2015 -0700

i965/fs: Explicitly set the exec_size on the add(32) in interpolation setup

Soon we will start using the builder to explicitly set all the execution
sizes.  We could make a 32-wide builder, but the builder asserts that we
never grow it which is usually a reasonable assumption.  Since this one
instruction is a bit of an odd-ball, we just set the exec_size explicitly.

v2: Explicitly new the fs_inst instead of using the builder and setting
    exec_size after the fact.

v3: Set force_writemask_all with the builder instead of directly.  The
    builder over-writes it if we set it manually.  Also, if we don't have
    force_writemask_all in the builder it will assert-fail on SIMD32.

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Acked-by: Francisco Jerez <currojerez at riseup.net>

---

 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 395af73..89eb717 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -1358,10 +1358,12 @@ fs_visitor::emit_interpolation_setup_gen6()
        */
       fs_reg int_pixel_xy(GRF, alloc.allocate(dispatch_width / 8),
                           BRW_REGISTER_TYPE_UW, dispatch_width * 2);
-      abld.exec_all()
-          .ADD(int_pixel_xy,
-               fs_reg(stride(suboffset(g1_uw, 4), 1, 4, 0)),
-               fs_reg(brw_imm_v(0x11001010)));
+      fs_inst *add =
+         new (mem_ctx) fs_inst(BRW_OPCODE_ADD, dispatch_width * 2,
+                               int_pixel_xy,
+                               fs_reg(stride(suboffset(g1_uw, 4), 1, 4, 0)),
+                               fs_reg(brw_imm_v(0x11001010)));
+      abld.exec_all().emit(add);
 
       this->pixel_x = vgrf(glsl_type::float_type);
       this->pixel_y = vgrf(glsl_type::float_type);




More information about the mesa-commit mailing list