i965/vs: Do headerless texturing for texelFetchOffset().
For texelFetchOffset(), we just add the texel offsets to the coordinate rather than using the message header's offset fields. So we don't actually need a header on Gen5+. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
0412864ae8
commit
fce9e5d41b
|
@ -1999,8 +1999,10 @@ vec4_visitor::visit(ir_texture *ir)
|
||||||
assert(!"TXB is not valid for vertex shaders.");
|
assert(!"TXB is not valid for vertex shaders.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool use_texture_offset = ir->offset != NULL && ir->op != ir_txf;
|
||||||
|
|
||||||
/* Texel offsets go in the message header; Gen4 also requires headers. */
|
/* Texel offsets go in the message header; Gen4 also requires headers. */
|
||||||
inst->header_present = ir->offset || intel->gen < 5;
|
inst->header_present = use_texture_offset || intel->gen < 5;
|
||||||
inst->base_mrf = 2;
|
inst->base_mrf = 2;
|
||||||
inst->mlen = inst->header_present + 1; /* always at least one */
|
inst->mlen = inst->header_present + 1; /* always at least one */
|
||||||
inst->sampler = sampler;
|
inst->sampler = sampler;
|
||||||
|
@ -2008,7 +2010,7 @@ vec4_visitor::visit(ir_texture *ir)
|
||||||
inst->dst.writemask = WRITEMASK_XYZW;
|
inst->dst.writemask = WRITEMASK_XYZW;
|
||||||
inst->shadow_compare = ir->shadow_comparitor != NULL;
|
inst->shadow_compare = ir->shadow_comparitor != NULL;
|
||||||
|
|
||||||
if (ir->offset != NULL && ir->op != ir_txf)
|
if (use_texture_offset)
|
||||||
inst->texture_offset = brw_texture_offset(ir->offset->as_constant());
|
inst->texture_offset = brw_texture_offset(ir->offset->as_constant());
|
||||||
|
|
||||||
/* MRF for the first parameter */
|
/* MRF for the first parameter */
|
||||||
|
|
Loading…
Reference in New Issue