Mesa (master): mesa/st: Deduplicate the NIR uniform lowering code.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jan 15 00:28:39 UTC 2020
Module: Mesa
Branch: master
Commit: b807f7a43a4df6a13ec365a4c2f152a81e64731b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b807f7a43a4df6a13ec365a4c2f152a81e64731b
Author: Eric Anholt <eric at anholt.net>
Date: Mon Jan 6 11:47:03 2020 -0800
mesa/st: Deduplicate the NIR uniform lowering code.
Just a little refactor as I go looking at the type size functions.
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3297>
---
src/mesa/state_tracker/st_glsl_to_nir.cpp | 23 ++++++++++++++---------
src/mesa/state_tracker/st_nir.h | 1 +
src/mesa/state_tracker/st_nir_builtins.c | 10 +---------
3 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index c92b1c365a7..aad93fb71e2 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -897,6 +897,19 @@ st_nir_lower_samplers(struct pipe_screen *screen, nir_shader *nir,
}
}
+void
+st_nir_lower_uniforms(struct st_context *st, nir_shader *nir)
+{
+ if (st->ctx->Const.PackedDriverUniformStorage) {
+ NIR_PASS_V(nir, nir_lower_io, nir_var_uniform, st_glsl_type_dword_size,
+ (nir_lower_io_options)0);
+ NIR_PASS_V(nir, nir_lower_uniforms_to_ubo, 4);
+ } else {
+ NIR_PASS_V(nir, nir_lower_io, nir_var_uniform, st_glsl_uniforms_type_size,
+ (nir_lower_io_options)0);
+ }
+}
+
/* Last third of preparing nir from glsl, which happens after shader
* variant lowering.
*/
@@ -917,15 +930,7 @@ st_finalize_nir(struct st_context *st, struct gl_program *prog,
/* Set num_uniforms in number of attribute slots (vec4s) */
nir->num_uniforms = DIV_ROUND_UP(prog->Parameters->NumParameterValues, 4);
- if (st->ctx->Const.PackedDriverUniformStorage) {
- NIR_PASS_V(nir, nir_lower_io, nir_var_uniform, st_glsl_type_dword_size,
- (nir_lower_io_options)0);
- NIR_PASS_V(nir, nir_lower_uniforms_to_ubo, 4);
- } else {
- NIR_PASS_V(nir, nir_lower_io, nir_var_uniform, st_glsl_uniforms_type_size,
- (nir_lower_io_options)0);
- }
-
+ st_nir_lower_uniforms(st, nir);
st_nir_lower_samplers(screen, nir, shader_program, prog);
if (finalize_by_driver && screen->finalize_nir)
diff --git a/src/mesa/state_tracker/st_nir.h b/src/mesa/state_tracker/st_nir.h
index 1d1bf1b74bc..43f2a917022 100644
--- a/src/mesa/state_tracker/st_nir.h
+++ b/src/mesa/state_tracker/st_nir.h
@@ -58,6 +58,7 @@ void st_nir_assign_varying_locations(struct st_context *st,
void st_nir_lower_samplers(struct pipe_screen *screen, struct nir_shader *nir,
struct gl_shader_program *shader_program,
struct gl_program *prog);
+void st_nir_lower_uniforms(struct st_context *st, struct nir_shader *nir);
struct pipe_shader_state *
st_nir_finish_builtin_shader(struct st_context *st,
diff --git a/src/mesa/state_tracker/st_nir_builtins.c b/src/mesa/state_tracker/st_nir_builtins.c
index aa26c6548c2..de518098024 100644
--- a/src/mesa/state_tracker/st_nir_builtins.c
+++ b/src/mesa/state_tracker/st_nir_builtins.c
@@ -58,15 +58,7 @@ st_nir_finish_builtin_shader(struct st_context *st,
st_nir_assign_varying_locations(st, nir);
st_nir_lower_samplers(screen, nir, NULL, NULL);
-
- if (st->ctx->Const.PackedDriverUniformStorage) {
- NIR_PASS_V(nir, nir_lower_io, nir_var_uniform, st_glsl_type_dword_size,
- (nir_lower_io_options)0);
- NIR_PASS_V(nir, nir_lower_uniforms_to_ubo, 4);
- } else {
- NIR_PASS_V(nir, nir_lower_io, nir_var_uniform, st_glsl_uniforms_type_size,
- (nir_lower_io_options)0);
- }
+ st_nir_lower_uniforms(st, nir);
if (screen->finalize_nir)
screen->finalize_nir(screen, nir, true);
More information about the mesa-commit
mailing list