Mesa (master): i965: keep gl_program shader info in sync after gather info
Timothy Arceri
tarceri at kemper.freedesktop.org
Tue Dec 20 04:51:06 UTC 2016
Module: Mesa
Branch: master
Commit: f562b13bc7d0b4fd954d285a9325e94167b16bf5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f562b13bc7d0b4fd954d285a9325e94167b16bf5
Author: Timothy Arceri <timothy.arceri at 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);
More information about the mesa-commit
mailing list