From 6cc95abb273a130fb396f4f0dd2b233c534fd008 Mon Sep 17 00:00:00 2001 From: Jonathan Marek Date: Sat, 6 Jun 2020 11:16:16 -0400 Subject: [PATCH] freedreno/a6xx: use nonbinning VS when GS is used The current "ds = state->bs" seems broken, and the "vs = state->bs" is unnecessary (already set above). Since it was added as part of a GS-related patch, I think this is what was intended. Note: tesselation disables GMEM rendering so we shouldn't have to worry about hs/ds + binning interaction. Fixes: 0eebedb6190fdab8956769 ("freedreno/a6xx: Emit program state for GS") Signed-off-by: Jonathan Marek Part-of: --- src/gallium/drivers/freedreno/a6xx/fd6_program.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.c b/src/gallium/drivers/freedreno/a6xx/fd6_program.c index e012746392e..4cb1eaae678 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_program.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.c @@ -312,10 +312,11 @@ setup_stateobj(struct fd_ringbuffer *ring, struct fd_screen *screen, const struct ir3_shader_variant *gs = state->gs; const struct ir3_shader_variant *fs = binning_pass ? &dummy_fs : state->fs; - if (binning_pass && state->ds) - ds = state->bs; - else if (binning_pass) - vs = state->bs; + /* binning VS is wrong when GS is present, so use nonbinning VS + * TODO: compile both binning VS/GS variants correctly + */ + if (binning_pass && state->gs) + vs = state->vs; bool sample_shading = fs->per_samp | key->sample_shading; -- 2.30.2