[Mesa-dev] [PATCH 1/2] i965/gs: Add dummy source to prepare_channel_masks instruction.

Eric Anholt eric at anholt.net
Mon Apr 7 09:04:20 PDT 2014


Kenneth Graunke <kenneth at whitecape.org> writes:

> On 04/04/2014 03:28 PM, Matt Turner wrote:
>> The generator uses its destination as a source implicitly, which breaks
>> some assumptions in dead code elimination. Giving the instruction a
>> source allows us to reason about it better.
>> ---
>>  src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>> 
>> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
>> index 13d6d38..1321a94 100644
>> --- a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
>> @@ -408,7 +408,8 @@ vec4_gs_visitor::emit_control_data_bits()
>>           src_reg channel_mask(this, glsl_type::uint_type);
>>           inst = emit(SHL(dst_reg(channel_mask), one, channel));
>>           inst->force_writemask_all = true;
>> -         emit(GS_OPCODE_PREPARE_CHANNEL_MASKS, dst_reg(channel_mask));
>> +         emit(GS_OPCODE_PREPARE_CHANNEL_MASKS, dst_reg(channel_mask),
>> +                                               channel_mask);
>>           emit(GS_OPCODE_SET_CHANNEL_MASKS, mrf_reg, channel_mask);
>>        }
>>  
>> 
>
> This seems reasonable, though I'd like to see generator changes to
> match.  Either use the source register, or at least:
>
>    assert(src[0] == dst);
>
> in both generators.

With Ken's change (or maybe you have to just assert on file and reg,
possibly):

Reviewed-by: Eric Anholt <eric at anholt.net>

I feel like I've used this strategy before for fixing up dead code
problems, but I just noticed that in general there's a risk of the dummy
source getting copy propagation happen to it, and then not actually
serving its purpose.  We know that's not the case here because we can
see the channel_mask setup right there.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140407/c313c336/attachment-0001.sig>


More information about the mesa-dev mailing list