freedreno/ir3: add TXB
authorRob Clark <robclark@freedesktop.org>
Sat, 30 Aug 2014 19:17:49 +0000 (15:17 -0400)
committerRob Clark <robclark@freedesktop.org>
Sat, 30 Aug 2014 22:02:51 +0000 (18:02 -0400)
Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/ir3/ir3_compiler.c

index b587ee07a93cb4c6d503477e6626f903b6e394b2..371ab5478818f505b51bb257fee7d9ecceb2973c 100644 (file)
@@ -1123,6 +1123,7 @@ get_tex_info(struct ir3_compile_context *ctx,
 
        switch (inst->Instruction.Opcode) {
        case TGSI_OPCODE_TEX:
+       case TGSI_OPCODE_TXB:
                switch (tex) {
                case TGSI_TEXTURE_1D:
                        return &tex1d;
@@ -1259,6 +1260,9 @@ trans_samp(const struct instr_translater *t,
 
        add_dst_reg_wrmask(ctx, instr, dst, 0, dst->WriteMask);
        add_src_reg_wrmask(ctx, instr, coord, coord->SwizzleX, tinf->src_wrmask);
+
+       if (t->tgsi_opc == TGSI_OPCODE_TXB)
+               add_src_reg_wrmask(ctx, instr, coord, coord->SwizzleW, 0x1);
 }
 
 /*
@@ -2005,6 +2009,7 @@ static const struct instr_translater translaters[TGSI_OPCODE_LAST] = {
        INSTR(SIN,          instr_cat4, .opc = OPC_SIN),
        INSTR(TEX,          trans_samp, .opc = OPC_SAM, .arg = TGSI_OPCODE_TEX),
        INSTR(TXP,          trans_samp, .opc = OPC_SAM, .arg = TGSI_OPCODE_TXP),
+       INSTR(TXB,          trans_samp, .opc = OPC_SAMB, .arg = TGSI_OPCODE_TXB),
        INSTR(SGT,          trans_cmp),
        INSTR(SLT,          trans_cmp),
        INSTR(FSLT,         trans_cmp),