Mesa (master): turnip: fix HW binning with geometry shader

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jun 8 22:19:40 UTC 2020


Module: Mesa
Branch: master
Commit: e16608e2338ded844a850c6242b08f65f43c1aed
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e16608e2338ded844a850c6242b08f65f43c1aed

Author: Jonathan Marek <jonathan at marek.ca>
Date:   Sat Jun  6 11:26:11 2020 -0400

turnip: fix HW binning with geometry shader

Fixes failures with TU_DEBUG=forcebin and geometry shaders, for example:
dEQP-VK.binding_model.*geometry*
dEQP-VK.transform_feedback.simple.query*

Signed-off-by: Jonathan Marek <jonathan at marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5370>

---

 src/freedreno/vulkan/tu_pipeline.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c
index f95b9e174ac..a0369235444 100644
--- a/src/freedreno/vulkan/tu_pipeline.c
+++ b/src/freedreno/vulkan/tu_pipeline.c
@@ -1578,9 +1578,13 @@ tu6_emit_program(struct tu_cs *cs,
    if (binning_pass) {
       /* if we have streamout, use full VS in binning pass, as the
        * binning pass VS will have outputs on other than position/psize
-       * stripped out:
+       * stripped out
+       *
+       * GS also can have streamout, but we completely disable the
+       * the binning pass variant when GS is present because we don't
+       * support compiling correct binning pass variants with GS
        */
-      if (vs->shader->stream_output.num_outputs == 0) {
+      if (vs->shader->stream_output.num_outputs == 0 && !has_gs) {
          vs = &builder->shaders[MESA_SHADER_VERTEX]->variants[1];
          vs_offset = builder->binning_vs_offset;
       }



More information about the mesa-commit mailing list