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

The host virglrenderer can only handle moves to integer outputs, all
ALU opt that create integer outputs are created with extra code to convert
to float for the temporaries, and this breaks the output write
handling.

Fixes:
  spec@arb_sample_shading@builtin-gl-sample-mask *
  spec@arb_sample_shading@builtin-gl-sample-mask-simple *

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15921>
This commit is contained in:
Gert Wollny
2022-04-13 12:04:33 +02:00
committed by Marge Bot
parent 4d23967e8c
commit 36f12c85c8

View File

@@ -385,8 +385,7 @@ virgl_tgsi_transform_instruction(struct tgsi_transform_context *ctx,
/* virglrenderer doesn't resolve non-float output write properly,
* so we have to first write to a temporary */
if ((inst->Src[0].Register.File == TGSI_FILE_CONSTANT ||
inst->Src[0].Register.File == TGSI_FILE_IMMEDIATE) &&
if (inst->Instruction.Opcode != TGSI_OPCODE_MOV &&
!tgsi_get_opcode_info(inst->Instruction.Opcode)->is_tex &&
!tgsi_get_opcode_info(inst->Instruction.Opcode)->is_store &&
inst->Dst[0].Register.File == TGSI_FILE_OUTPUT &&