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