diff options
author | Brian Paul <[email protected]> | 2011-10-07 10:55:43 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-10-07 10:58:53 -0600 |
commit | 793d29d6d3fd0df72aabe4648bf6814ec2d4aecd (patch) | |
tree | 8aedab7e896e170e99fe5fe1728081dda49af6fa /src | |
parent | cea946307f319cc7cf3e2cf730be34cd51047965 (diff) |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/tnl/t_vb_program.c | 14 |
1 files 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; } } |