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
1 changed files with 1 additions and 2 deletions

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 &&