nir: Move GS data to nir_shader_info
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 2 Oct 2015 01:27:38 +0000 (18:27 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 2 Oct 2015 21:22:53 +0000 (14:22 -0700)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/nir/glsl_to_nir.cpp
src/glsl/nir/nir.c
src/glsl/nir/nir.h
src/glsl/nir/nir_lower_gs_intrinsics.c

index 6820962b38ec9eeef52368ee193fa29301f21332..4dd628700656be2b896b225b6abf1b0b27576f68 100644 (file)
@@ -150,8 +150,6 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
       if (sh->Program->SamplersUsed & (1 << i))
          num_textures = i;
 
-   shader->gs.vertices_out = sh->Geom.VerticesOut;
-   shader->gs.invocations = sh->Geom.Invocations;
    shader->info.name = ralloc_asprintf(shader, "GLSL%d", sh->Name);
    shader->info.num_textures = num_textures;
    shader->info.num_ubos = sh->NumUniformBlocks;
@@ -164,6 +162,8 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
    shader->info.uses_texture_gather = sh->Program->UsesGather;
    shader->info.uses_clip_distance_out = sh->Program->UsesClipDistanceOut;
    shader->info.separate_shader = shader_prog->SeparateShader;
+   shader->info.gs.vertices_out = sh->Geom.VerticesOut;
+   shader->info.gs.invocations = sh->Geom.Invocations;
 
    return shader;
 }
index 7a469a6ccf8fec2f49ae54b87cd9faa48f5077b1..e12da80528113ea47ed8a3595c2c573281d857ea 100644 (file)
@@ -55,9 +55,6 @@ nir_shader_create(void *mem_ctx,
 
    shader->stage = stage;
 
-   shader->gs.vertices_out = 0;
-   shader->gs.invocations = 0;
-
    return shader;
 }
 
index 0c06d675a4db92d73937725cc4036e469a1abbed..c83ef50cee3f67d4a53d9713336df016716ca05c 100644 (file)
@@ -1483,6 +1483,14 @@ typedef struct nir_shader_info {
 
    /* Whether or not separate shader objects were used */
    bool separate_shader;
+
+   struct {
+      /** The maximum number of vertices the geometry shader might write. */
+      unsigned vertices_out;
+
+      /** 1 .. MAX_GEOMETRY_SHADER_INVOCATIONS */
+      unsigned invocations;
+   } gs;
 } nir_shader_info;
 
 typedef struct nir_shader {
@@ -1527,14 +1535,6 @@ typedef struct nir_shader {
 
    /** The shader stage, such as MESA_SHADER_VERTEX. */
    gl_shader_stage stage;
-
-   struct {
-      /** The maximum number of vertices the geometry shader might write. */
-      unsigned vertices_out;
-
-      /** 1 .. MAX_GEOMETRY_SHADER_INVOCATIONS */
-      unsigned invocations;
-   } gs;
 } nir_shader;
 
 #define nir_foreach_overload(shader, overload)                        \
index 2ee4e5c45d6a91bbaa5d764f1ad0f114373d9a65..e0d067885d82bda3c818716df36c50e13c1086c7 100644 (file)
@@ -76,7 +76,7 @@ rewrite_emit_vertex(nir_intrinsic_instr *intrin, struct state *state)
    b->cursor = nir_before_instr(&intrin->instr);
    nir_ssa_def *count = nir_load_var(b, state->vertex_count_var);
 
-   nir_ssa_def *max_vertices = nir_imm_int(b, b->shader->gs.vertices_out);
+   nir_ssa_def *max_vertices = nir_imm_int(b, b->shader->info.gs.vertices_out);
 
    /* Create: if (vertex_count < max_vertices) and insert it.
     *