[Mesa-dev] [PATCH 01/13] i965: Factor out logic to build a send message instruction with indirect descriptor.

Francisco Jerez currojerez at riseup.net
Wed Mar 11 14:29:06 PDT 2015


Matt Turner <mattst88 at gmail.com> writes:

> On Wed, Mar 11, 2015 at 1:07 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
>> On Wednesday, March 11, 2015 07:25:14 PM Francisco Jerez wrote:
>>> "Pohjolainen, Topi" <topi.pohjolainen at intel.com> writes:
>>> > On Fri, Feb 27, 2015 at 05:34:44PM +0200, Francisco Jerez wrote:
>>> >> @@ -1218,17 +1198,6 @@ fs_generator::generate_varying_pull_constant_load_gen7(fs_inst *inst,
>>> >>                                false /* header */,
>>> >>                                simd_mode,
>>> >>                                0);
>>> >> -      brw_inst_set_exec_size(p->brw, insn_or, BRW_EXECUTE_1);
>>> >> -      brw_inst_set_src1_reg_type(p->brw, insn_or, BRW_REGISTER_TYPE_UD);
>>> >> -      brw_set_src0(p, insn_or, addr);
>>> >> -      brw_set_dest(p, insn_or, addr);
>>> >> -
>>> >> -
>>> >> -      /* dst = send(offset, a0.0) */
>>> >> -      brw_inst *insn_send = brw_next_insn(p, BRW_OPCODE_SEND);
>>> >> -      brw_set_dest(p, insn_send, retype(dst, BRW_REGISTER_TYPE_UW));
>>> >
>>> > I'm just reading this through again and noticed that the destination type
>>> > changes here to BRW_REGISTER_TYPE_UD (set in brw_send_indirect_message()).
>>>
>>> Ah, yes, that change is intentional.  The type being set to UW was a
>>> remnant from Gen4-5 times -- Those used to require the destination type
>>> of SEND to be W/UW when doing 16-wide (even if the message was actually
>>> writing dwords back...).  None of the codepaths modified in this patch
>>> (or in the rest of the series) should be executed on Gen4 or 5.
>>>
>>> Anyway good catch. :)
>>
>> I'm pretty sure this does still apply on Gen7 - notably, BLORP uses UW
>> destinations for SIMD16 sends, and I believe Paul Berry tracked actual
>> issues down to that.  BLORP only exists on Gen6+.
>>
>> I also seem to recall Chris Forbes hitting an issue relating to that
>> which he and Paul fixed during XDC 2013.
>>
>> CC'ing Chris and Matt in case they remember any details.
>
> I believe he was helping Abdiel track down a hang when using the
> resource streamer, and it turned out that using UW typed-destinations
> on sends in blorp fixed it:
>
> commit 4c4934636cb286e7d7836afc26e9d392e2f0f155
> Author: Paul Berry <stereotype441 at gmail.com>
> Date:   Tue Sep 24 15:18:52 2013 -0700
>
>     i965/blorp: retype destination register for texture SEND instruction to UW.
>
> The resource streamer only exists on HSW+, so the UW dest is certainly
> needed for things after Gen5.

Odd, I haven't seen a mention of that restriction in the hardware specs
(at least not on reasonably recent ones -- the Gen4 and 5 specs do
mention it and they actually hang if you send a message with compression
enabled and anything bigger than a W as destination type).  Is this a
purely empirical finding?  If so, doesn't it deserve a big fat warning
comment?  Is this only a problem for some interaction with the resource
streamer or has it ever been observed to fix something else?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150311/e0b410e6/attachment.sig>


More information about the mesa-dev mailing list