It's unfortunately been a while since I've done anything with glsl_to_tgsi. What are the "various functions that modify the TGSI IR and try to propagate changes about that up to the gl_program"? If I can see where it is in the code, I can probably remember if there's a reason it was done that way.
Bryan On 11/16/2011 01:13 PM, Ian Romanick wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > If glUniform1i and friends are going to dump data directly in > driver-allocated, the pointers have to be updated when the storage > moves. This should fix the regressions seen with commit 7199096. > > I'm not sure if this is the only place that needs this treatment. I'm > a little uncertain about the various functions in st_glsl_to_tgsi that > modify the TGSI IR and try to propagate changes about that up to the > gl_program. That seems sketchy to me. > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> > Cc: Vadim Girlin <vadimgir...@gmail.com> > Cc: Bryan Cain <bryanca...@gmail.com> > --- > src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 14 ++++++++++++++ > 1 files changed, 14 insertions(+), 0 deletions(-) > > diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > index 0bf6766..c8385bb 100644 > --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > @@ -4571,6 +4571,13 @@ st_translate_program( > t->pointSizeOutIndex = -1; > t->prevInstWrotePointSize = GL_FALSE; > > + for (i = 0; i < program->shader_program->NumUserUniformStorage; i++) { > + struct gl_uniform_storage *const storage = > + &program->shader_program->UniformStorage[i]; > + > + _mesa_uniform_detach_all_driver_storage(storage); > + } > + > /* > * Declare input attributes. > */ > @@ -4797,6 +4804,13 @@ st_translate_program( > t->insn[t->labels[i].branch_target]); > } > > + /* This has to be done last. Any operation the can cause > + * prog->ParameterValues to get reallocated (e.g., anything that adds a > + * program constant) has to happen before creating this linkage. > + */ > + _mesa_associate_uniform_storage(ctx, program->shader_program, > + proginfo->Parameters); > + > out: > if (t) { > FREE(t->insn); _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev