From: Brian Paul Date: Fri, 7 Oct 2011 16:55:43 +0000 (-0600) Subject: tnl: fix result vector allocation regression X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=793d29d6d3fd0df72aabe4648bf6814ec2d4aecd;p=mesa.git tnl: fix result vector allocation regression We need to allocate all the output vectors. Fixes a regression from commit f7f678331d5e95d2266fe6b3ea1cfa47d6421065 Fixes fd.o bugs 41441 and 41492. --- diff --git a/src/mesa/tnl/t_vb_program.c b/src/mesa/tnl/t_vb_program.c index cc5e85634c4..367dfd5bb23 100644 --- a/src/mesa/tnl/t_vb_program.c +++ b/src/mesa/tnl/t_vb_program.c @@ -336,11 +336,17 @@ run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) for (i = 0; i < VERT_RESULT_MAX; i++) { if (program->Base.OutputsWritten & BITFIELD64_BIT(i)) { outputs[numOutputs++] = i; + } + } - if (!store->results[i].data) { - _mesa_vector4f_alloc( &store->results[i], 0, VB->Size, 32 ); - store->results[i].size = 4; - } + /* Allocate result vectors. We delay this until now to avoid allocating + * memory that would never be used if we don't run the software tnl pipeline. + */ + if (!store->results[0].storage) { + for (i = 0; i < VERT_RESULT_MAX; i++) { + assert(!store->results[i].storage); + _mesa_vector4f_alloc( &store->results[i], 0, VB->Size, 32 ); + store->results[i].size = 4; } }