From 793d29d6d3fd0df72aabe4648bf6814ec2d4aecd Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 7 Oct 2011 10:55:43 -0600 Subject: [PATCH] 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. --- src/mesa/tnl/t_vb_program.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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; } } -- 2.30.2