summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris Forbes <[email protected]>2014-08-03 20:48:20 +1200
committerChris Forbes <[email protected]>2014-08-09 13:11:33 +1200
commitd1b136fdd0312a53691f8788b17b01ae967351f4 (patch)
tree9066332b2781c085229f0d29dbd881b242bfd66c /src
parent39a4cc45a417bea3bb1cfbe20ea5045200f76c25 (diff)
i965/fs: Collect all emits of texture ops for Gen4 into one place
Reduces duplication, and will do so even more when we change the sampler plumbing. Signed-off-by: Chris Forbes <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp31
1 files changed, 11 insertions, 20 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 752e5a413ec..0e090870dae 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -1227,29 +1227,20 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate,
BRW_REGISTER_TYPE_F));
}
- fs_inst *inst = NULL;
+ enum opcode opcode;
+
switch (ir->op) {
- case ir_tex:
- inst = emit(SHADER_OPCODE_TEX, dst, reg_undef);
- break;
- case ir_txb:
- inst = emit(FS_OPCODE_TXB, dst, reg_undef);
- break;
- case ir_txl:
- inst = emit(SHADER_OPCODE_TXL, dst, reg_undef);
- break;
- case ir_txd:
- inst = emit(SHADER_OPCODE_TXD, dst, reg_undef);
- break;
- case ir_txs:
- inst = emit(SHADER_OPCODE_TXS, dst, reg_undef);
- break;
- case ir_txf:
- inst = emit(SHADER_OPCODE_TXF, dst, reg_undef);
- break;
+ case ir_tex: opcode = SHADER_OPCODE_TEX; break;
+ case ir_txb: opcode = FS_OPCODE_TXB; break;
+ case ir_txl: opcode = SHADER_OPCODE_TXL; break;
+ case ir_txd: opcode = SHADER_OPCODE_TXD; break;
+ case ir_txs: opcode = SHADER_OPCODE_TXS; break;
+ case ir_txf: opcode = SHADER_OPCODE_TXF; break;
default:
- fail("unrecognized texture opcode");
+ unreachable("not reached");
}
+
+ fs_inst *inst = emit(opcode, dst, reg_undef);
inst->base_mrf = base_mrf;
inst->mlen = mlen;
inst->header_present = true;