freedreno/ir3: handle tex instrs w/ const offset
Something we start to see with glsl_to_nir. Signed-off-by: Rob Clark <robclark@freedesktop.org>
This commit is contained in:
parent
f212d7dc50
commit
8039a2a6b3
|
@ -1361,6 +1361,7 @@ emit_tex(struct ir3_compile *ctx, nir_tex_instr *tex)
|
|||
struct ir3_block *b = ctx->block;
|
||||
struct ir3_instruction **dst, *sam, *src0[12], *src1[4];
|
||||
struct ir3_instruction **coord, *lod, *compare, *proj, **off, **ddx, **ddy;
|
||||
struct ir3_instruction *const_off[4];
|
||||
bool has_bias = false, has_lod = false, has_proj = false, has_off = false;
|
||||
unsigned i, coords, flags;
|
||||
unsigned nsrc0 = 0, nsrc1 = 0;
|
||||
|
@ -1429,6 +1430,21 @@ emit_tex(struct ir3_compile *ctx, nir_tex_instr *tex)
|
|||
|
||||
tex_info(tex, &flags, &coords);
|
||||
|
||||
if (!has_off) {
|
||||
/* could still have a constant offset: */
|
||||
if (tex->const_offset[0] || tex->const_offset[1] ||
|
||||
tex->const_offset[2] || tex->const_offset[3]) {
|
||||
off = const_off;
|
||||
|
||||
off[0] = create_immed(b, tex->const_offset[0]);
|
||||
off[1] = create_immed(b, tex->const_offset[1]);
|
||||
off[2] = create_immed(b, tex->const_offset[2]);
|
||||
off[3] = create_immed(b, tex->const_offset[3]);
|
||||
|
||||
has_off = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* scale up integer coords for TXF based on the LOD */
|
||||
if (ctx->unminify_coords && (opc == OPC_ISAML)) {
|
||||
assert(has_lod);
|
||||
|
|
Loading…
Reference in New Issue