st/glsl_to_nir: gather next_stage in shader_info
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
2f175bfe5d
commit
2ca5d9548f
|
@ -64,6 +64,11 @@ typedef struct shader_info {
|
||||||
/** The shader stage, such as MESA_SHADER_VERTEX. */
|
/** The shader stage, such as MESA_SHADER_VERTEX. */
|
||||||
gl_shader_stage stage;
|
gl_shader_stage stage;
|
||||||
|
|
||||||
|
/** The shader stage in a non SSO linked program that follows this stage,
|
||||||
|
* such as MESA_SHADER_FRAGMENT.
|
||||||
|
*/
|
||||||
|
gl_shader_stage next_stage;
|
||||||
|
|
||||||
/* Number of textures used by this shader */
|
/* Number of textures used by this shader */
|
||||||
unsigned num_textures;
|
unsigned num_textures;
|
||||||
/* Number of uniform buffers used by this shader */
|
/* Number of uniform buffers used by this shader */
|
||||||
|
|
|
@ -362,6 +362,21 @@ st_glsl_to_nir(struct st_context *st, struct gl_program *prog,
|
||||||
|
|
||||||
nir_shader *nir = glsl_to_nir(shader_program, stage, options);
|
nir_shader *nir = glsl_to_nir(shader_program, stage, options);
|
||||||
|
|
||||||
|
/* Set the next shader stage hint for VS and TES. */
|
||||||
|
if (!nir->info.separate_shader &&
|
||||||
|
(nir->info.stage == MESA_SHADER_VERTEX ||
|
||||||
|
nir->info.stage == MESA_SHADER_TESS_EVAL)) {
|
||||||
|
|
||||||
|
unsigned prev_stages = (1 << (prog->info.stage + 1)) - 1;
|
||||||
|
unsigned stages_mask =
|
||||||
|
~prev_stages & shader_program->data->linked_stages;
|
||||||
|
|
||||||
|
nir->info.next_stage = stages_mask ?
|
||||||
|
(gl_shader_stage) ffs(stages_mask) : MESA_SHADER_FRAGMENT;
|
||||||
|
} else {
|
||||||
|
nir->info.next_stage = MESA_SHADER_FRAGMENT;
|
||||||
|
}
|
||||||
|
|
||||||
nir_variable_mode mask =
|
nir_variable_mode mask =
|
||||||
(nir_variable_mode) (nir_var_shader_in | nir_var_shader_out);
|
(nir_variable_mode) (nir_var_shader_in | nir_var_shader_out);
|
||||||
nir_remove_dead_variables(nir, mask);
|
nir_remove_dead_variables(nir, mask);
|
||||||
|
|
Loading…
Reference in New Issue