Paul Berry <stereotype...@gmail.com> writes:

> On 19 September 2012 13:28, Kenneth Graunke <kenn...@whitecape.org> wrote:
>> diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
>> b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
>> index e7f11ae..a819ae0 100644
>> --- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
>> @@ -317,11 +317,19 @@ fs_visitor::choose_spill_reg(struct ra_graph *g)
>>        for (unsigned int i = 0; i < 3; i++) {
>>          if (inst->src[i].file == GRF) {
>>             spill_costs[inst->src[i].reg] += loop_scale;
>> +
>> +            if (inst->src[i].smear >= 0) {
>> +               no_spill[inst->src[i].reg] = true;
>> +            }
>>
>
> Can we add a comment above the if statement to alert people to why we can't
> spill these registers (and why it's ok that we can't)?  Perhaps something
> like: "Register spilling logic assumes full-width registers; smeared
> registers have a width of 1 so if we try to spill them we'll generate
> invalid assembly.  This shouldn't be a problem because smeared registers
> are only used as short-term temporaries when loading pull constants, so
> spilling them is unlikely to reduce register pressure anyhow."
>
> I guess I shouldn't give this patch my "Reviewed-by" since I originated it,
> but assuming a comment is added, feel free to add:

Yeah, that makes me scared that our spilling choices are bogus.  I've
been worried about that -- on LM when I reduced the number of registers
used in its spilling shader, I got more spills happening, on some things
that looked like poor choices.  I did re-review the code, and didn't
find anything at the time.

Attachment: pgpjDdtYkALSD.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to