Mesa (master): tnl: fix result vector allocation regression

Brian Paul brianp at kemper.freedesktop.org
Fri Oct 7 09:59:59 PDT 2011


Module: Mesa
Branch: master
Commit: 793d29d6d3fd0df72aabe4648bf6814ec2d4aecd
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=793d29d6d3fd0df72aabe4648bf6814ec2d4aecd

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Oct  7 10:55:43 2011 -0600

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 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 cc5e856..367dfd5 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;
       }
    }
 



More information about the mesa-commit mailing list