On 01/04/2013 01:52 PM, Paul Berry wrote:
On 29 December 2012 04:35, Chris Forbes <chr...@ijw.co.nz
<mailto: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.
I was thinking the same thing.
Signed-off-by: Chris Forbes <chr...@ijw.co.nz <mailto: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