[Mesa-dev] [PATCH 06/22] i965/fs: double-precision execution does not use 2 channels per DF in IVB/VLV

Francisco Jerez currojerez at riseup.net
Tue Jan 10 00:18:54 UTC 2017


Samuel Iglesias Gonsálvez <siglesias at igalia.com> writes:

> From: Iago Toral Quiroga <itoral at igalia.com>
>
> It seems to use 1 channel por DF, just like later hardware. The docs say things
> like:
>
> "Each DF operand uses a pair of channels and all masking  and swizzling
>  should be adjusted appropriately."
>
> "In Align16, all regioning parameters must use the syntax of a pair of packed
>  floats, including channel selects and channel enables."
>
> In these cases, masking and channel select/enables seem to refere only to
> Align16's swizzle and writemasks respectively, not to execution masking.
>
> In any case, this means that execution masking controls and execsize go
> in different units and we need to adjust the assertion on the relation
> between the two accordingly.
> ---
>  src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
> index 90ee7c1..ac2d8ad 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
> @@ -1646,7 +1646,11 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
>        brw_set_default_exec_size(p, cvt(inst->exec_size) - 1);
>  
>        assert(inst->force_writemask_all || inst->exec_size >= 4);
> -      assert(inst->force_writemask_all || inst->group % inst->exec_size == 0);
> +      assert(inst->force_writemask_all ||
> +             ((devinfo->gen != 7 || devinfo->is_haswell) &&
> +              inst->group % inst->exec_size == 0) ||
> +             ((devinfo->gen == 7 && !devinfo->is_haswell) &&
> +              (2 * inst->group) % inst->exec_size == 0));

NAK, exec size doubling happens at the codegen level so the IR group and
exec_size controls should still be expressed in the same units.

>        assert(inst->base_mrf + inst->mlen <= BRW_MAX_MRF(devinfo->gen));
>        assert(inst->mlen <= BRW_MAX_MSG_LENGTH);
>  
> -- 
> 2.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170109/13e96485/attachment.sig>


More information about the mesa-dev mailing list