Reviewed-by: Iago Toral Quiroga <ito...@igalia.com> On Wed, 2015-10-21 at 12:30 -0700, Matt Turner wrote: > We implement textureQueryLevels (which takes no arguments, save the > sampler) using the resinfo message (which takes an argument of LOD). > Without initializing it, we'd generate a MOV from the null register to > load the LOD argument. > > Essentially the same logic applies to texture. A vertex shader cannot > compute derivatives and so cannot produce an LOD, so TXL with an LOD of > 0.0 is used. > --- > src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp > index c39f97e..b8f90f2 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp > @@ -882,6 +882,18 @@ vec4_visitor::emit_texture(ir_texture_opcode op, > uint32_t sampler, > src_reg sampler_reg) > { > + /* The sampler can only meaningfully compute LOD for fragment shader > + * messages. For all other stages, we change the opcode to TXL and > hardcode > + * the LOD to 0. > + * > + * textureQueryLevels() is implemented in terms of TXS so we need to pass > a > + * valid LOD argument. > + */ > + if (op == ir_tex || op == ir_query_levels) { > + assert(lod.file == BAD_FILE); > + lod = src_reg(0.0f); > + } > + > enum opcode opcode; > switch (op) { > case ir_tex: opcode = SHADER_OPCODE_TXL; break;
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev