Mesa (master): freedreno/a6xx: use nonbinning VS when GS is used
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jun 8 22:19:40 UTC 2020
Module: Mesa
Branch: master
Commit: 6cc95abb273a130fb396f4f0dd2b233c534fd008
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6cc95abb273a130fb396f4f0dd2b233c534fd008
Author: Jonathan Marek <jonathan at marek.ca>
Date: Sat Jun 6 11:16:16 2020 -0400
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 <jonathan at marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5370>
---
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;
More information about the mesa-commit
mailing list