Mesa (main): mesa/st: always inject a 1.0 pointsize for vertex stages

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 8 02:28:11 UTC 2022


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

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Wed Mar 30 09:24:03 2022 -0400

mesa/st: always inject a 1.0 pointsize for vertex stages

since 1.0 is used in nearly every case, drivers requiring this exporting
can avoid potential shader variants by adding a 1.0 export to the base
shader variant and the only using the ubo upload when pointsize is explicitly
set for wide point functionality

drivers can then be responsible for removing unused pointsize exports
as needed (or desired)

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15699>

---

 src/mesa/state_tracker/st_glsl_to_nir.cpp | 23 +++--------------------
 1 file changed, 3 insertions(+), 20 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index 35a9c6b3956..45557183fdf 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -337,27 +337,10 @@ st_nir_preprocess(struct st_context *st, struct gl_program *prog,
    }
 
    prog->skip_pointsize_xfb = !(nir->info.outputs_written & VARYING_BIT_PSIZ);
-   if (st->lower_point_size && _mesa_is_gles(st->ctx) && prog->skip_pointsize_xfb &&
-       (stage == MESA_SHADER_TESS_EVAL || stage == MESA_SHADER_GEOMETRY) &&
+   if (st->lower_point_size && prog->skip_pointsize_xfb &&
+       stage < MESA_SHADER_FRAGMENT && stage != MESA_SHADER_TESS_CTRL &&
        st_can_add_pointsize_to_program(st, prog)) {
-      struct gl_shader *sh = NULL;
-      for (unsigned i = 0; i < shader_program->NumShaders; i++) {
-         if (shader_program->Shaders[i]->Stage == nir->info.stage) {
-            sh = shader_program->Shaders[i];
-            break;
-         }
-      }
-      assert(sh);
-      bool add_point_size = false;
-      if (nir->info.stage == MESA_SHADER_TESS_EVAL) {
-         if (!sh->OES_tessellation_point_size_enable)
-            add_point_size = true;
-      } else {
-         if (!sh->OES_geometry_point_size_enable)
-            add_point_size = true;
-      }
-      if (add_point_size)
-         NIR_PASS_V(nir, st_nir_add_point_size);
+      NIR_PASS_V(nir, st_nir_add_point_size);
    }
 
    /* ES has strict SSO validation rules for shader IO matching so we can't



More information about the mesa-commit mailing list