Module: Mesa Branch: master Commit: f562b13bc7d0b4fd954d285a9325e94167b16bf5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f562b13bc7d0b4fd954d285a9325e94167b16bf5
Author: Timothy Arceri <timothy.arc...@collabora.com> Date: Thu Dec 1 13:37:38 2016 +1100 i965: keep gl_program shader info in sync after gather info It's possible that nir_shader was cloned and it no longer contains a pointer to the shader_info in gl_program. So we need to copy shader_info back to gl_program if that is the case. Fixes a regression with NIR_TEST_CLONE=true Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98840 --- src/mesa/drivers/dri/i965/brw_program.c | 11 ++++++++++- src/mesa/drivers/dri/i965/brw_program.h | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index a502b8e..7f69977 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -64,7 +64,7 @@ brw_nir_lower_uniforms(nir_shader *nir, bool is_scalar) nir_shader * brw_create_nir(struct brw_context *brw, const struct gl_shader_program *shader_prog, - const struct gl_program *prog, + struct gl_program *prog, gl_shader_stage stage, bool is_scalar) { @@ -107,6 +107,15 @@ brw_create_nir(struct brw_context *brw, nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir)); + /* nir_shader may have been cloned so make sure shader_info is in sync */ + if (nir->info != &prog->info) { + const char *name = prog->info.name; + const char *label = prog->info.label; + prog->info = *nir->info; + prog->info.name = name; + prog->info.label = label; + } + if (shader_prog) { NIR_PASS_V(nir, nir_lower_samplers, shader_prog); NIR_PASS_V(nir, nir_lower_atomics, shader_prog); diff --git a/src/mesa/drivers/dri/i965/brw_program.h b/src/mesa/drivers/dri/i965/brw_program.h index 43bc625..6eda165 100644 --- a/src/mesa/drivers/dri/i965/brw_program.h +++ b/src/mesa/drivers/dri/i965/brw_program.h @@ -34,7 +34,7 @@ struct brw_context; struct nir_shader *brw_create_nir(struct brw_context *brw, const struct gl_shader_program *shader_prog, - const struct gl_program *prog, + struct gl_program *prog, gl_shader_stage stage, bool is_scalar); _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit