On 29 December 2012 04:35, Chris Forbes <chr...@ijw.co.nz> wrote: > When fetching texels from a multisample surface, the sample index is > provided as an extra argument after the lod, and the actual lod needs > to be hardwired to 0. > > The frontend gives us the sample index in the lod parameter, so fix this > up. >
How much work would it be to modify the front end so that instead of giving us the sample index in the lod parameter, we add a "sample_index" element to the ir_texture::lod_info union? It seems like that would make this code easier to follow. > > Signed-off-by: Chris Forbes <chr...@ijw.co.nz> > --- > src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp > index 104057c..8aa4b2d 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp > @@ -2088,8 +2088,19 @@ vec4_visitor::visit(ir_texture *ir) > } > emit(MOV(dst_reg(MRF, mrf, ir->lod_info.lod->type, writemask), > lod)); > } else if (ir->op == ir_txf) { > - emit(MOV(dst_reg(MRF, param_base, ir->lod_info.lod->type, > WRITEMASK_W), > - lod)); > + if (ir->sampler->type->sampler_dimensionality == > GLSL_SAMPLER_DIM_MS) { > + /* for multisample samplers, actual lod is always 0, and the > + * extra parameter is the sample index */ > + emit(MOV(dst_reg(MRF, param_base, ir->lod_info.lod->type, > WRITEMASK_W), > + src_reg(0))); > + emit(MOV(dst_reg(MRF, param_base + 1, ir->lod_info.lod->type, > WRITEMASK_X), > + lod)); /* sample_index */ > + inst->mlen++; /* spilled over into a second reg of args */ > + } > + else { > + emit(MOV(dst_reg(MRF, param_base, ir->lod_info.lod->type, > WRITEMASK_W), > + lod)); > + } > } else if (ir->op == ir_txd) { > const glsl_type *type = ir->lod_info.grad.dPdx->type; > > -- > 1.8.0.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev