[Nouveau] [PATCH] nv50/ir: don't touch degree on physreg RIG nodes

Ilia Mirkin imirkin at alum.mit.edu
Thu Jan 7 17:41:51 PST 2016


Withdrawn. This fix is bogus -- it doesn't actually fix the original
issue! It's the result of me futzing a lot and a similar-but-different
fix did change things around enough to fix the original issue but then
proceeded to break other stuff. So... ignore.

On Wed, Jan 6, 2016 at 5:30 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> These nodes don't go through reduction, so we shouldn't be increasing
> their degrees.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91895
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: "11.0 11.1" <mesa-stable at lists.freedesktop.org>
> ---
>
> I would like to see a *bunch* of testing on this before merging it... RA-land
> is far from my expertise. However it does fix the shaders in the original bug
> and doesn't regress the few additional things that I tried.
>
>  src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
> index cd8c42c..f1ffcba 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
> @@ -1129,9 +1129,11 @@ GCRA::doCoalesce(ArrayList& insns, unsigned int mask)
>  void
>  GCRA::RIG_Node::addInterference(RIG_Node *node)
>  {
> -   this->degree += relDegree[node->colors][colors];
> -   node->degree += relDegree[colors][node->colors];
> -
> +   // don't add degree for physregs since they won't go through simplify()
> +   if (this->reg < 0)
> +      this->degree += relDegree[node->colors][colors];
> +   if (node->reg < 0)
> +      node->degree += relDegree[colors][node->colors];
>     this->attach(node, Graph::Edge::CROSS);
>  }
>
> --
> 2.4.10
>


More information about the Nouveau mailing list