[Mesa-dev] [PATCH v2 3/4] ra: consider all spillable nodes for spilling

Connor Abbott cwabbott0 at gmail.com
Thu Jul 31 15:14:19 PDT 2014


On Thu, Jul 31, 2014 at 1:05 PM, Eric Anholt <eric at anholt.net> wrote:
> Connor Abbott <cwabbott0 at gmail.com> writes:
>> That's not necessarily true - you could want to spill a trivially
>> colored register that interferes with a non trivially colored
>> register, especially if the spill cost of the non trivially colored
>> register is higher than that of the trivially colored register because
>> e.g. the non trivially colored register is used in a loop. Especially,
>> I ran into trouble with the varying packing tests in piglit which
>> after a few rounds of spilling looked something like:
>
> If it's trivially colorable, then when you're trying to get a
> non-conflicting color for a difficult neighbor (an optimistic-coloring
> one near the top of the stack that's triggering the need for spilling),
> it's out consideration because it's deeper in the stack.

Right... so in that case, can't we just ignore everything on the stack
below the node that couldn't be colored in ra_select()? Anyways, I
don't think that's the reason for the regression... I tried doing what
I had suggested (that considers even less things for spilling) and it
regresses the same shader even worse (sigh...). So I think the
strategy the old code was doing just happened to work out, and it's
impossible to choose a good spilling candidate every time with only
the limited information the allocator has about the shader itself.


More information about the mesa-dev mailing list