freedreno/ir3: create fragcoord instructions in input block

This was somehow working to create the instructions in a random block,
and use the value in other blocks, by dumb luck.  But two-pass-RA's
better choice of register assignment causes a couple dEQPs to start
failing without this fix:

dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_1
dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_2

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3569>
This commit is contained in:
Rob Clark 2020-01-27 08:26:04 -08:00 committed by Marge Bot
parent fb09020ef2
commit 8d0e7d9a4c
1 changed files with 2 additions and 2 deletions

View File

@ -1306,12 +1306,12 @@ static struct ir3_instruction *
get_frag_coord(struct ir3_context *ctx)
{
if (!ctx->frag_coord) {
struct ir3_block *b = ctx->block;
struct ir3_block *b = ctx->in_block;
struct ir3_instruction *xyzw[4];
struct ir3_instruction *hw_frag_coord;
hw_frag_coord = create_sysval_input(ctx, SYSTEM_VALUE_FRAG_COORD, 0xf);
ir3_split_dest(ctx->block, xyzw, hw_frag_coord, 0, 4);
ir3_split_dest(b, xyzw, hw_frag_coord, 0, 4);
/* for frag_coord.xy, we get unsigned values.. we need
* to subtract (integer) 8 and divide by 16 (right-