[Mesa-dev] [PATCH 3/5] i965/fs: Mark last used ip for all regs read in the payload
Jordan Justen
jordan.l.justen at intel.com
Wed Jul 1 14:46:49 PDT 2015
On 2015-07-01 11:51:37, Connor Abbott wrote:
> From: Jordan Justen <jordan.l.justen at intel.com>
>
> If a source register in the push constant registers uses more than on
Doh. I have to point out my own typo. :)
on=>one
> register, then we wouldn't update payload_last_use_ip for subsequent
> registers.
>
> Unlike most uniform data pushed into registers, the CS gl_LocalInvocationID
> data varies per execution channel. Therefore for SIMD16 mode, we have vec16
> data in the payload. In this case we then need to mark 2 registers in
> payload_last_use_ip as last used by the instruction. There's a similar
> situation for the z and w coordinates of gl_FragCoord for fragment shaders,
> where it had only happened to work before because of some bogus interferences
> which the next commit removes.
>
> (Connor: added bit about gl_FragCoord to commit message)
>
> Reviewed-by: Connor Abbott <connor.w.abbott at intel.com>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
> src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> 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 8e5621d..620fc23 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
> @@ -380,7 +380,10 @@ fs_visitor::setup_payload_interference(struct ra_graph *g,
> if (node_nr >= payload_node_count)
> continue;
>
> - payload_last_use_ip[node_nr] = use_ip;
> + for (int j = 0; j < inst->regs_read(i); j++) {
> + payload_last_use_ip[node_nr + j] = use_ip;
> + assert(node_nr + j < payload_node_count);
> + }
> }
> }
>
> --
> 2.4.3
>
More information about the mesa-dev
mailing list