Timothy Arceri <[email protected]> writes: > This will help allow us to store gl_program in the CurrentProgram array rather > than gl_shader_program which will allow a bunch of simplifications. > > Note that we make LinkedTransformFeedback a pointer so we don't waste > memory creating a struct for each stage. We also store a pointer to > the gl_program that will contain the pointer in gl_shader_program so > we can get easy access to the correct stage. > --- > src/compiler/glsl/link_varyings.cpp | 34 > +++++++++++++-------------- > src/compiler/glsl/linker.cpp | 30 ++++++++++++++++------- > src/mesa/drivers/dri/i965/brw_ff_gs.c | 2 +- > src/mesa/drivers/dri/i965/gen6_gs_visitor.cpp | 2 +- > src/mesa/drivers/dri/i965/gen6_sol.c | 9 +++---- > src/mesa/drivers/dri/i965/gen7_sol_state.c | 6 ++--- > src/mesa/main/mtypes.h | 6 +++-- > src/mesa/main/shader_query.cpp | 8 +++---- > src/mesa/main/transformfeedback.c | 2 +- > src/mesa/state_tracker/st_cb_xformfb.c | 8 +++---- > src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 2 +- > src/mesa/state_tracker/st_program.c | 2 +- > 12 files changed, 63 insertions(+), 48 deletions(-) >
> @@ -4589,6 +4590,19 @@ link_varyings_and_uniforms(unsigned first, unsigned
> last,
> varying_names = prog->TransformFeedback.VaryingNames;
> }
>
> + /* Find the program used for xfb. Even if we don't use xfb we still want
> to
> + * set this so we can fill the default values for program interface query.
> + */
> + prog->xfb_program = prog->_LinkedShaders[last]->Program;
> + int next = last == MESA_SHADER_FRAGMENT ? last - 1 : last;
> + for (int i = next; i >= 0; i--) {
> + if (prog->_LinkedShaders[i] == NULL)
> + continue;
> +
> + prog->xfb_program = prog->_LinkedShaders[i]->Program;
> + break;
> + }
I think the loop would be nicer as
for (int i = MESA_SHADER_GEOMETRY; i >= MESA_SHADER_VERTEX; i--)
to match transformfeedback.c's get_xfb_source(). Other than that,
Reviewed-by: Eric Anholt <[email protected]>
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
