i965/fs: Pass a BAD_FILE register to the logical FB write when oMask is unused.
authorFrancisco Jerez <currojerez@riseup.net>
Sat, 30 Apr 2016 02:47:44 +0000 (19:47 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Mon, 30 May 2016 06:41:37 +0000 (23:41 -0700)
This will let the optimizer know that the sample mask value is unused
so its definition can be DCE'ed.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp

index f5add6ec676b1081c4db7301ba341b48cc9cbd0b..0b350d5ff76e87be1d197f55d4bf3aecc7cec469 100644 (file)
@@ -3797,7 +3797,7 @@ lower_fb_write_logical_send(const fs_builder &bld, fs_inst *inst,
       length++;
    }
 
-   if (prog_data->uses_omask) {
+   if (sample_mask.file != BAD_FILE) {
       sources[length] = fs_reg(VGRF, bld.shader->alloc.allocate(1),
                                BRW_REGISTER_TYPE_UD);
 
index 25e1a445136ed01ddb40685de84894b1b33c2410..3a49794c9cf57aa6c314dda3641f2fdff115a9b3 100644 (file)
@@ -394,7 +394,8 @@ fs_visitor::emit_single_fb_write(const fs_builder &bld,
 
    const fs_reg sources[] = {
       color0, color1, src0_alpha, src_depth, dst_depth, src_stencil,
-      sample_mask, brw_imm_ud(components)
+      (prog_data->uses_omask ? sample_mask : fs_reg()),
+      brw_imm_ud(components)
    };
    assert(ARRAY_SIZE(sources) - 1 == FB_WRITE_LOGICAL_SRC_COMPONENTS);
    fs_inst *write = bld.emit(FS_OPCODE_FB_WRITE_LOGICAL, fs_reg(),