Mesa (main): st/pbo: do not use GS for NIR preferred shaders

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Dec 3 16:10:52 UTC 2021


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

Author: Juan A. Suarez Romero <jasuarez at igalia.com>
Date:   Wed Sep 15 15:51:37 2021 +0200

st/pbo: do not use GS for NIR preferred shaders

If PBO require to use a GS, this is created with TGSI.

For drivers preferring NIR shaders, they need to translate it from TGSI
to NIR. But unfortunately TGSI to NIR for GS is not implemented, which
makes it crash.

So let's use a GS only for drivers preferring TGSI.

v3:
 - Add comment (Iago and Alejandro)

Signed-off-by: Juan A. Suarez Romero <jasuarez at igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13409>

---

 src/mesa/state_tracker/st_pbo.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_pbo.c b/src/mesa/state_tracker/st_pbo.c
index 66ffb54428a..a3fb0e65208 100644
--- a/src/mesa/state_tracker/st_pbo.c
+++ b/src/mesa/state_tracker/st_pbo.c
@@ -648,7 +648,13 @@ st_init_pbo_helpers(struct st_context *st)
    if (screen->get_param(screen, PIPE_CAP_TGSI_INSTANCEID)) {
       if (screen->get_param(screen, PIPE_CAP_TGSI_VS_LAYER_VIEWPORT)) {
          st->pbo.layers = true;
-      } else if (screen->get_param(screen, PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES) >= 3) {
+      } else if (screen->get_param(screen, PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES) >= 3 &&
+                 screen->get_shader_param(screen, PIPE_SHADER_GEOMETRY,
+                                          PIPE_SHADER_CAP_PREFERRED_IR) != PIPE_SHADER_IR_NIR) {
+         /* As the download GS is created in TGSI, and TGSI to NIR translation
+          * is not implemented for GS, avoid using GS for drivers preferring
+          * NIR shaders.
+          */
          st->pbo.layers = true;
          st->pbo.use_gs = true;
       }



More information about the mesa-commit mailing list