[Mesa-dev] [PATCH 1/2] i965: Bail on vec4 copy propagation for scratch writes with source modifiers
Matt Turner
mattst88 at gmail.com
Tue Jul 29 07:18:51 PDT 2014
On Mon, Jul 28, 2014 at 8:47 PM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> Fixes Khronos GLES3 CTS test:
> dynamic_expression_array_access_vertex
>
> Cc: <mesa-stable at lists.freedesktop.org>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
> I don't have a test case though it might be useful to also include
> the check for VS_OPCODE_URB_WRITE here?
>
> src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp
> index 390448a..5a684a0 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp
> @@ -273,6 +273,10 @@ try_copy_propagate(struct brw_context *brw, vec4_instruction *inst,
> if (has_source_modifiers && value.type != inst->src[arg].type)
> return false;
>
> + if (has_source_modifiers &&
> + inst->opcode == SHADER_OPCODE_GEN4_SCRATCH_WRITE)
> + return false;
> +
> bool is_3src_inst = (inst->opcode == BRW_OPCODE_LRP ||
> inst->opcode == BRW_OPCODE_MAD ||
> inst->opcode == BRW_OPCODE_BFE ||
> --
I think the thing to do here is to prevent scratch writes from having
source modifiers. They're sends from MRFs, so adding it to
is_send_from_grf seems wrong. I'd add it to the list in
brw_shader.cpp:can_do_source_mods.
VS_OPCODE_URB_WRITE shouldn't need any of this.
More information about the mesa-dev
mailing list