Mesa (main): mesa/st: also add pointsize to fixedfunction vertex shaders as needed

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


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

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Mon Apr  4 11:35:21 2022 -0400

mesa/st: also add pointsize to fixedfunction vertex shaders as needed

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 | 2 +-
 src/mesa/state_tracker/st_nir.h           | 3 ++-
 src/mesa/state_tracker/st_program.c       | 4 ++++
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index 45557183fdf..5d2ff61ae82 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -255,7 +255,7 @@ st_nir_assign_uniform_locations(struct gl_context *ctx,
  * - find every gl_Position write
  * - store 1.0 to gl_PointSizeMESA after every gl_Position write
  */
-static void
+void
 st_nir_add_point_size(nir_shader *nir)
 {
    nir_variable *psiz = nir_variable_create(nir, nir_var_shader_out, glsl_float_type(), "gl_PointSizeMESA");
diff --git a/src/mesa/state_tracker/st_nir.h b/src/mesa/state_tracker/st_nir.h
index 74c644f6817..58003d82b60 100644
--- a/src/mesa/state_tracker/st_nir.h
+++ b/src/mesa/state_tracker/st_nir.h
@@ -72,7 +72,8 @@ st_nir_make_passthrough_shader(struct st_context *st,
                                unsigned *output_locations,
                                unsigned *interpolation_modes,
                                unsigned sysval_mask);
-
+void
+st_nir_add_point_size(struct nir_shader *nir);
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index 1bc332776da..b0bae07a896 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -2104,6 +2104,10 @@ st_program_string_notify( struct gl_context *ctx,
    } else if (target == GL_VERTEX_PROGRAM_ARB) {
       if (!st_translate_vertex_program(st, prog))
          return false;
+      if (st->lower_point_size && st_can_add_pointsize_to_program(st, prog)) {
+         prog->skip_pointsize_xfb = true;
+         NIR_PASS_V(prog->nir, st_nir_add_point_size);
+      }
    } else {
       if (!st_translate_common_program(st, prog))
          return false;



More information about the mesa-commit mailing list