radv: validate shaders after linking passes
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5244 Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12448>
This commit is contained in:
parent
75c80be484
commit
1e710f7a2c
|
@ -2829,6 +2829,8 @@ radv_link_shaders(struct radv_pipeline *pipeline,
|
|||
|
||||
for (int i = 1; i < shader_count; ++i) {
|
||||
nir_lower_io_arrays_to_elements(ordered_shaders[i], ordered_shaders[i - 1]);
|
||||
nir_validate_shader(ordered_shaders[i], "after nir_lower_io_arrays_to_elements");
|
||||
nir_validate_shader(ordered_shaders[i - 1], "after nir_lower_io_arrays_to_elements");
|
||||
}
|
||||
|
||||
for (int i = 0; i < shader_count; ++i) {
|
||||
|
@ -2961,6 +2963,9 @@ radv_link_shaders(struct radv_pipeline *pipeline,
|
|||
|
||||
for (int i = 1; !optimize_conservatively && (i < shader_count); ++i) {
|
||||
if (nir_link_opt_varyings(ordered_shaders[i], ordered_shaders[i - 1])) {
|
||||
nir_validate_shader(ordered_shaders[i], "after nir_link_opt_varyings");
|
||||
nir_validate_shader(ordered_shaders[i - 1], "after nir_link_opt_varyings");
|
||||
|
||||
NIR_PASS(_, ordered_shaders[i - 1], nir_opt_constant_folding);
|
||||
NIR_PASS(_, ordered_shaders[i - 1], nir_opt_algebraic);
|
||||
NIR_PASS(_, ordered_shaders[i - 1], nir_opt_dce);
|
||||
|
@ -2972,6 +2977,8 @@ radv_link_shaders(struct radv_pipeline *pipeline,
|
|||
bool progress = nir_remove_unused_varyings(ordered_shaders[i], ordered_shaders[i - 1]);
|
||||
|
||||
nir_compact_varyings(ordered_shaders[i], ordered_shaders[i - 1], true);
|
||||
nir_validate_shader(ordered_shaders[i], "after nir_compact_varyings");
|
||||
nir_validate_shader(ordered_shaders[i - 1], "after nir_compact_varyings");
|
||||
if (ordered_shaders[i]->info.stage == MESA_SHADER_MESH) {
|
||||
/* nir_compact_varyings can change the location of per-vertex and per-primitive outputs */
|
||||
nir_shader_gather_info(ordered_shaders[i], nir_shader_get_entrypoint(ordered_shaders[i]));
|
||||
|
|
Loading…
Reference in New Issue