aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2016-05-20 00:13:19 -0700
committerFrancisco Jerez <[email protected]>2016-05-27 23:22:10 -0700
commit5db4d623956ceb5ffa8599e7797bd13470898158 (patch)
tree0fb7520f576cb48ec5413962772c01ca85979b42
parent29ce110be6d0d4e4df51be635810f528f7dd7f40 (diff)
i965/fs: Remove FS_OPCODE_PACK_STENCIL_REF virtual instruction.
It's just a byte MOV with strided source. Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_defines.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp4
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.h2
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_generator.cpp45
-rw-r--r--src/mesa/drivers/dri/i965/brw_shader.cpp2
5 files changed, 2 insertions, 52 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h
index 91194713ef8..a5f3b52fa35 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -951,7 +951,6 @@ enum opcode {
FS_OPCODE_FB_WRITE_LOGICAL,
FS_OPCODE_REP_FB_WRITE,
- FS_OPCODE_PACK_STENCIL_REF,
SHADER_OPCODE_RCP,
SHADER_OPCODE_RSQ,
SHADER_OPCODE_SQRT,
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 03db084aa8b..5c5354e34f4 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -3824,8 +3824,8 @@ lower_fb_write_logical_send(const fs_builder &bld, fs_inst *inst,
sources[length] = bld.vgrf(BRW_REGISTER_TYPE_UD);
bld.exec_all().annotate("FB write OS")
- .emit(FS_OPCODE_PACK_STENCIL_REF, sources[length],
- retype(src_stencil, BRW_REGISTER_TYPE_UB));
+ .MOV(retype(sources[length], BRW_REGISTER_TYPE_UB),
+ subscript(src_stencil, BRW_REGISTER_TYPE_UB, 0));
length++;
}
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index 5630063ff48..c249c82576a 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -430,8 +430,6 @@ private:
void generate_urb_read(fs_inst *inst, struct brw_reg dst, struct brw_reg payload);
void generate_urb_write(fs_inst *inst, struct brw_reg payload);
void generate_cs_terminate(fs_inst *inst, struct brw_reg payload);
- void generate_stencil_ref_packing(fs_inst *inst, struct brw_reg dst,
- struct brw_reg src);
void generate_barrier(fs_inst *inst, struct brw_reg src);
void generate_linterp(fs_inst *inst, struct brw_reg dst,
struct brw_reg *src);
diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
index 6919a9c023f..78a45b6d919 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
@@ -510,47 +510,6 @@ fs_generator::generate_cs_terminate(fs_inst *inst, struct brw_reg payload)
}
void
-fs_generator::generate_stencil_ref_packing(fs_inst *inst,
- struct brw_reg dst,
- struct brw_reg src)
-{
- assert(dispatch_width == 8);
- assert(devinfo->gen >= 9);
-
- /* Stencil value updates are provided in 8 slots of 1 byte per slot.
- * Presumably, in order to save memory bandwidth, the stencil reference
- * values written from the FS need to be packed into 2 dwords (this makes
- * sense because the stencil values are limited to 1 byte each and a SIMD8
- * send, so stencil slots 0-3 in dw0, and 4-7 in dw1.)
- *
- * The spec is confusing here because in the payload definition of MDP_RTW_S8
- * (Message Data Payload for Render Target Writes with Stencil 8b) the
- * stencil value seems to be dw4.0-dw4.7. However, if you look at the type of
- * dw4 it is type MDPR_STENCIL (Message Data Payload Register) which is the
- * packed values specified above and diagrammed below:
- *
- * 31 0
- * --------------------------------
- * DW | |
- * 2-7 | IGNORED |
- * | |
- * --------------------------------
- * DW1 | STC | STC | STC | STC |
- * | slot7 | slot6 | slot5 | slot4|
- * --------------------------------
- * DW0 | STC | STC | STC | STC |
- * | slot3 | slot2 | slot1 | slot0|
- * --------------------------------
- */
-
- src.vstride = BRW_VERTICAL_STRIDE_4;
- src.width = BRW_WIDTH_1;
- src.hstride = BRW_HORIZONTAL_STRIDE_0;
- assert(src.type == BRW_REGISTER_TYPE_UB);
- brw_MOV(p, retype(dst, BRW_REGISTER_TYPE_UB), src);
-}
-
-void
fs_generator::generate_barrier(fs_inst *inst, struct brw_reg src)
{
brw_barrier(p, src);
@@ -2102,10 +2061,6 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
generate_barrier(inst, src[0]);
break;
- case FS_OPCODE_PACK_STENCIL_REF:
- generate_stencil_ref_packing(inst, dst, src[0]);
- break;
-
default:
unreachable("Unsupported opcode");
diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp
index a9051a89aa6..bdaf513a548 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.cpp
+++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
@@ -163,8 +163,6 @@ brw_instruction_name(const struct brw_device_info *devinfo, enum opcode op)
return "fb_write";
case FS_OPCODE_FB_WRITE_LOGICAL:
return "fb_write_logical";
- case FS_OPCODE_PACK_STENCIL_REF:
- return "pack_stencil_ref";
case FS_OPCODE_REP_FB_WRITE:
return "rep_fb_write";