[Mesa-dev] [PATCH] nv50/ir: fix indirect texturing for non-array textures on nvc0
Samuel Pitoiset
samuel.pitoiset at gmail.com
Sun Mar 20 17:57:29 UTC 2016
On 03/20/2016 06:47 PM, Ilia Mirkin wrote:
> If a layer parameter is provided, we want to flip it to position 0 (and
> combine it with any indirect params). However if the target is not an
> array, there is no layer, so we have to shift all of the arguments down
> by one to make room for it.
>
> This fixes situations where there were non-coordinate parameters, such
> as bias, lod, depth compare, explicit derivatives. Instead of adding a
> new parameter at the front for the indirect reference, we would swap one
> of those in its place.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Reported-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> Cc: "11.1 11.2" <mesa-stable at lists.freedesktop.org>
Tested-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
> src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
> index 8e3529f..e8f8e30 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
> @@ -746,9 +746,13 @@ NVC0LoweringPass::handleTEX(TexInstruction *i)
> }
>
> Value *arrayIndex = i->tex.target.isArray() ? i->getSrc(lyr) : NULL;
> - for (int s = dim; s >= 1; --s)
> - i->setSrc(s, i->getSrc(s - 1));
> - i->setSrc(0, arrayIndex);
> + if (arrayIndex) {
> + for (int s = dim; s >= 1; --s)
> + i->setSrc(s, i->getSrc(s - 1));
> + i->setSrc(0, arrayIndex);
> + } else {
> + i->moveSources(0, 1);
> + }
>
> if (arrayIndex) {
> int sat = (i->op == OP_TXF) ? 1 : 0;
>
More information about the mesa-dev
mailing list