blorp: introduce helper method blorp_nir_init_shader
authorAlejandro Piñeiro <apinheiro@igalia.com>
Wed, 13 Feb 2019 11:11:47 +0000 (12:11 +0100)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Thu, 21 Feb 2019 10:47:51 +0000 (11:47 +0100)
This initializes the nir shader that will be used by blorp. Right now
it doesn't do too much beyond calling nir_builder_init_simple_shader,
and setting a name. More stuff will be added on following patches.

v2: there is a case were it is used a VERTEX_SHADER (Alejandro)

src/intel/blorp/blorp_blit.c
src/intel/blorp/blorp_clear.c
src/intel/blorp/blorp_nir_builder.h

index b4bd9aac19a854334f0a6606ab1a227b5761a7b1..9bea4ffbe2cd43a8c6a9ebd349b54eb5cd8f531e 100644 (file)
@@ -1232,7 +1232,7 @@ brw_blorp_build_nir_shader(struct blorp_context *blorp, void *mem_ctx,
           (key->dst_samples <= 1));
 
    nir_builder b;
-   nir_builder_init_simple_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT, NULL);
+   blorp_nir_init_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT, NULL);
 
    struct brw_blorp_blit_vars v;
    brw_blorp_blit_vars_init(&b, &v, key);
index 0b26755e90a656e9a482bbbd4f9905602440a70a..1ca0c44835e33328cc370f194342844dcd64b9c8 100644 (file)
@@ -63,8 +63,7 @@ blorp_params_get_clear_kernel(struct blorp_batch *batch,
    void *mem_ctx = ralloc_context(NULL);
 
    nir_builder b;
-   nir_builder_init_simple_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT, NULL);
-   b.shader->info.name = ralloc_strdup(b.shader, "BLORP-clear");
+   blorp_nir_init_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT, "BLORP-clear");
 
    nir_variable *v_color =
       BLORP_CREATE_NIR_INPUT(b.shader, clear_color, glsl_vec4_type());
@@ -146,8 +145,7 @@ blorp_params_get_layer_offset_vs(struct blorp_batch *batch,
    void *mem_ctx = ralloc_context(NULL);
 
    nir_builder b;
-   nir_builder_init_simple_shader(&b, mem_ctx, MESA_SHADER_VERTEX, NULL);
-   b.shader->info.name = ralloc_strdup(b.shader, "BLORP-layer-offset-vs");
+   blorp_nir_init_shader(&b, mem_ctx, MESA_SHADER_VERTEX, "BLORP-layer-offset-vs");
 
    const struct glsl_type *uvec4_type = glsl_vector_type(GLSL_TYPE_UINT, 4);
 
@@ -957,8 +955,8 @@ blorp_params_get_mcs_partial_resolve_kernel(struct blorp_batch *batch,
    void *mem_ctx = ralloc_context(NULL);
 
    nir_builder b;
-   nir_builder_init_simple_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT, NULL);
-   b.shader->info.name = ralloc_strdup(b.shader, "BLORP-mcs-partial-resolve");
+   blorp_nir_init_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT,
+                         "BLORP-mcs-partial-resolve");
 
    nir_variable *v_color =
       BLORP_CREATE_NIR_INPUT(b.shader, clear_color, glsl_vec4_type());
index 7f23abdef4d2db9922a331c694c9a21c0d9e2e70..28c34d19da6bab5e2d9abc104cdab95dfbc804e8 100644 (file)
 
 #include "compiler/nir/nir_builder.h"
 
+static inline void
+blorp_nir_init_shader(nir_builder *b,
+                      void *mem_ctx,
+                      gl_shader_stage stage,
+                      const char *name)
+{
+   nir_builder_init_simple_shader(b, mem_ctx, stage, NULL);
+   if (name != NULL)
+      b->shader->info.name = ralloc_strdup(b->shader, name);
+}
+
 static inline nir_ssa_def *
 blorp_nir_frag_coord(nir_builder *b)
 {