virgl: Clear all indirect flags when writing to a temporary

The output may be an array, e.g. with a TCS shader, so if the
value is written to a temporaray first remove the indirect
indicator for that write.

Fixes: 36f12c85c8
   virgl: Extend integer write out output fix to all non-move integers ops

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13295>
This commit is contained in:
Gert Wollny
2022-04-17 17:22:27 +02:00
committed by Marge Bot
parent 9f44a26462
commit e6d262a7fa
2 changed files with 2 additions and 1 deletions

View File

@@ -681,7 +681,6 @@ spec@arb_tessellation_shader@execution@gs-primitiveid-instanced,Fail
spec@arb_tessellation_shader@execution@tcs-tes-levels-out-of-bounds-write,Crash
spec@arb_tessellation_shader@execution@variable-indexing@tcs-input-array-dvec4-index-rd,Fail
spec@arb_tessellation_shader@execution@variable-indexing@tcs-tes-array-in-struct,Fail
spec@arb_tessellation_shader@execution@variable-indexing@tcs-output-array-dvec4-index-wr,Fail
spec@arb_tessellation_shader@execution@variable-indexing@tes-input-array-dvec4-index-rd,Fail
spec@arb_tessellation_shader@execution@variable-indexing@vs-output-array-dvec4-index-wr-before-tcs,Fail

View File

@@ -393,6 +393,8 @@ virgl_tgsi_transform_instruction(struct tgsi_transform_context *ctx,
struct tgsi_full_instruction op_to_temp = *inst;
op_to_temp.Dst[0].Register.File = TGSI_FILE_TEMPORARY;
op_to_temp.Dst[0].Register.Index = vtctx->src_temp;
op_to_temp.Dst[0].Dimension.Indirect = 0;
op_to_temp.Dst[0].Register.Indirect = 0;
ctx->emit_instruction(ctx, &op_to_temp);
inst->Instruction.Opcode = TGSI_OPCODE_MOV;