#include "tgsi/tgsi_util.h"
#include "brw_wm.h"
-#include "brw_util.h"
#include "brw_debug.h"
struct brw_fp_dst dest,
GLuint tex_unit,
GLuint target,
+ GLuint sampler,
struct brw_fp_src src0,
struct brw_fp_src src1,
struct brw_fp_src src2 )
inst->dst = dest;
inst->tex_unit = tex_unit;
inst->target = target;
+ inst->sampler = sampler;
inst->src[0] = src0;
inst->src[1] = src1;
inst->src[2] = src2;
struct brw_fp_src src1,
struct brw_fp_src src2 )
{
- emit_tex_op(c, op, dest, 0, 0, src0, src1, src2);
+ emit_tex_op(c, op, dest, 0, 0, 0, src0, src1, src2);
}
struct brw_fp_src src0,
struct brw_fp_src src1)
{
- emit_tex_op(c, op, dest, 0, 0, src0, src1, src_undef());
+ emit_tex_op(c, op, dest, 0, 0, 0, src0, src1, src_undef());
}
static INLINE void emit_op1(struct brw_wm_compile *c,
struct brw_fp_dst dest,
struct brw_fp_src src0)
{
- emit_tex_op(c, op, dest, 0, 0, src0, src_undef(), src_undef());
+ emit_tex_op(c, op, dest, 0, 0, 0, src0, src_undef(), src_undef());
}
static INLINE void emit_op0(struct brw_wm_compile *c,
GLuint op,
struct brw_fp_dst dest)
{
- emit_tex_op(c, op, dest, 0, 0, src_undef(), src_undef(), src_undef());
+ emit_tex_op(c, op, dest, 0, 0, 0, src_undef(), src_undef(), src_undef());
}
struct brw_fp_dst dst,
unsigned target,
unsigned unit,
- struct brw_fp_src src0 )
+ struct brw_fp_src src0,
+ struct brw_fp_src sampler )
{
- struct brw_fp_src coord = src_undef();
+ struct brw_fp_src coord;
struct brw_fp_dst tmp = dst_undef();
assert(unit < BRW_MAX_TEX_UNIT);
dst_saturate(tmp, dst.saturate),
unit,
target,
+ sampler.index,
coord,
src_undef(),
src_undef());
dst,
unit,
target,
+ sampler.index,
coord,
src_undef(),
src_undef());
struct brw_fp_dst dst,
unsigned target,
unsigned unit,
- struct brw_fp_src src0 )
+ struct brw_fp_src src0,
+ struct brw_fp_src sampler )
{
if (projtex(c, target, src0)) {
struct brw_fp_dst tmp = get_temp(c);
dst,
target,
unit,
- src_reg_from_dst(tmp));
+ src_reg_from_dst(tmp),
+ sampler );
release_temp(c, tmp);
}
{
/* dst = TEX src0
*/
- precalc_tex(c, dst, target, unit, src0);
+ precalc_tex(c, dst, target, unit, src0, sampler);
}
}
dst_undef(),
(i == c->key.nr_cbufs - 1), /* EOT */
i,
+ 0, /* no sampler */
outcolor,
payload_r0_depth,
outdepth);
{
struct brw_fp_dst out;
- out.file = dst->DstRegister.File;
- out.index = dst->DstRegister.Index;
- out.writemask = dst->DstRegister.WriteMask;
- out.indirect = dst->DstRegister.Indirect;
+ out.file = dst->Register.File;
+ out.index = dst->Register.Index;
+ out.writemask = dst->Register.WriteMask;
+ out.indirect = dst->Register.Indirect;
out.saturate = (saturate == TGSI_SAT_ZERO_ONE);
if (out.indirect) {
- assert(dst->DstRegisterInd.File == TGSI_FILE_ADDRESS);
- assert(dst->DstRegisterInd.Index == 0);
+ assert(dst->Indirect.File == TGSI_FILE_ADDRESS);
+ assert(dst->Indirect.Index == 0);
}
return out;
{
struct brw_fp_src out;
- out.file = src->SrcRegister.File;
- out.index = src->SrcRegister.Index;
- out.indirect = src->SrcRegister.Indirect;
+ out.file = src->Register.File;
+ out.index = src->Register.Index;
+ out.indirect = src->Register.Indirect;
- out.swizzle = ((src->SrcRegister.SwizzleX << 0) |
- (src->SrcRegister.SwizzleY << 2) |
- (src->SrcRegister.SwizzleZ << 4) |
- (src->SrcRegister.SwizzleW << 6));
+ out.swizzle = ((src->Register.SwizzleX << 0) |
+ (src->Register.SwizzleY << 2) |
+ (src->Register.SwizzleZ << 4) |
+ (src->Register.SwizzleW << 6));
switch (tgsi_util_get_full_src_register_sign_mode( src, 0 )) {
case TGSI_UTIL_SIGN_CLEAR:
}
if (out.indirect) {
- assert(src->SrcRegisterInd.File == TGSI_FILE_ADDRESS);
- assert(src->SrcRegisterInd.Index == 0);
+ assert(src->Indirect.File == TGSI_FILE_ADDRESS);
+ assert(src->Indirect.Index == 0);
}
return out;
struct brw_fp_src src[3];
int i;
- dst = translate_dst( c, &inst->FullDstRegisters[0],
+ dst = translate_dst( c, &inst->Dst[0],
inst->Instruction.Saturate );
for (i = 0; i < inst->Instruction.NumSrcRegs; i++)
- src[i] = translate_src( c, &inst->FullSrcRegisters[0] );
+ src[i] = translate_src( c, &inst->Src[i] );
switch (opcode) {
case TGSI_OPCODE_ABS:
case TGSI_OPCODE_TEX:
precalc_tex(c, dst,
- inst->InstructionExtTexture.Texture,
- src[0].file, /* sampler unit */
- src[1] );
+ inst->Texture.Texture,
+ src[1].index, /* use sampler unit for tex idx */
+ src[0], /* coord */
+ src[1]); /* sampler */
break;
case TGSI_OPCODE_TXP:
precalc_txp(c, dst,
- inst->InstructionExtTexture.Texture,
- src[0].file, /* sampler unit */
- src[1] );
+ inst->Texture.Texture,
+ src[1].index, /* use sampler unit for tex idx */
+ src[0], /* coord */
+ src[1]); /* sampler */
break;
case TGSI_OPCODE_TXB:
/* XXX: TXB not done
*/
precalc_tex(c, dst,
- inst->InstructionExtTexture.Texture,
- src[0].file, /* sampler unit */
- src[1] );
+ inst->Texture.Texture,
+ src[1].index, /* use sampler unit for tex idx*/
+ src[0],
+ src[1]);
break;
case TGSI_OPCODE_XPD:
unsigned first, last, mask;
unsigned attrib;
- first = decl->DeclarationRange.First;
- last = decl->DeclarationRange.Last;
+ first = decl->Range.First;
+ last = decl->Range.Last;
mask = decl->Declaration.UsageMask;
for (attrib = first; attrib <= last; attrib++) {
emit_interp(c,
attrib,
- decl->Semantic.SemanticName,
+ decl->Semantic.Name,
decl->Declaration.Interpolate );
}
}