mesa/st: Deduplicate the NIR uniform lowering code.
authorEric Anholt <eric@anholt.net>
Mon, 6 Jan 2020 19:47:03 +0000 (11:47 -0800)
committerMarge Bot <eric+marge@anholt.net>
Tue, 14 Jan 2020 23:55:00 +0000 (23:55 +0000)
Just a little refactor as I go looking at the type size functions.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3297>

src/mesa/state_tracker/st_glsl_to_nir.cpp
src/mesa/state_tracker/st_nir.h
src/mesa/state_tracker/st_nir_builtins.c

index c92b1c365a7707aba1e78c9d07dc3d35e7046cd6..aad93fb71e24259a796a232ef7a98502611044aa 100644 (file)
@@ -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)
index 1d1bf1b74bc92182bb998d241789745d111b3e80..43f2a91702290c58a33e2ed72fb29d0e64330414 100644 (file)
@@ -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,
index aa26c6548c25cab2d326fea777a8668950458d21..de518098024353e54e7ba51be9a7d54e6d738135 100644 (file)
@@ -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);