[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