[Mesa-stable] [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-stable mailing list