mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 08:10:09 +01:00
nir/info: Move the GS info into a stage-specific info union
This way we can have other stage-specific info without consuming too much extra space. While we're at it, we make sure that the geometry info is only set if we're actually a goemetry shader. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
parent
16619477bc
commit
fe399f3a69
2 changed files with 18 additions and 8 deletions
|
|
@ -164,11 +164,19 @@ 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;
|
||||
shader->info.has_transform_feedback_varyings =
|
||||
shader_prog->TransformFeedback.NumVarying > 0;
|
||||
|
||||
switch (stage) {
|
||||
case MESA_SHADER_GEOMETRY:
|
||||
shader->info.gs.vertices_out = sh->Geom.VerticesOut;
|
||||
shader->info.gs.invocations = sh->Geom.Invocations;
|
||||
break;
|
||||
|
||||
default:
|
||||
break; /* No stage-specific info */
|
||||
}
|
||||
|
||||
return shader;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1493,13 +1493,15 @@ typedef struct nir_shader_info {
|
|||
/** Was this shader linked with any transform feedback varyings? */
|
||||
bool has_transform_feedback_varyings;
|
||||
|
||||
struct {
|
||||
/** The maximum number of vertices the geometry shader might write. */
|
||||
unsigned vertices_out;
|
||||
union {
|
||||
struct {
|
||||
/** The maximum number of vertices the geometry shader might write. */
|
||||
unsigned vertices_out;
|
||||
|
||||
/** 1 .. MAX_GEOMETRY_SHADER_INVOCATIONS */
|
||||
unsigned invocations;
|
||||
} gs;
|
||||
/** 1 .. MAX_GEOMETRY_SHADER_INVOCATIONS */
|
||||
unsigned invocations;
|
||||
} gs;
|
||||
};
|
||||
} nir_shader_info;
|
||||
|
||||
typedef struct nir_shader {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue