Mesa (master): draw: handle out of memory conditions

Brian Paul brianp at kemper.freedesktop.org
Fri Nov 11 14:11:52 UTC 2011


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

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Nov 10 09:51:57 2011 -0700

draw: handle out of memory conditions

If the vbuf backend fails to allocate a vertex buffer, don't crash
or assert.

---

 src/gallium/auxiliary/draw/draw_pipe_vbuf.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pipe_vbuf.c b/src/gallium/auxiliary/draw/draw_pipe_vbuf.c
index a9b0f22..578433c 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_vbuf.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_vbuf.c
@@ -130,7 +130,7 @@ static INLINE ushort
 emit_vertex( struct vbuf_stage *vbuf,
              struct vertex_header *vertex )
 {
-   if(vertex->vertex_id == UNDEFINED_VERTEX_ID) {      
+   if (vertex->vertex_id == UNDEFINED_VERTEX_ID && vbuf->vertex_ptr) {
       /* Hmm - vertices are emitted one at a time - better make sure
        * set_buffer is efficient.  Consider a special one-shot mode for
        * translate.
@@ -357,8 +357,10 @@ vbuf_flush_vertices( struct vbuf_stage *vbuf )
 static void 
 vbuf_alloc_vertices( struct vbuf_stage *vbuf )
 {
-   assert(!vbuf->nr_indices);
-   assert(!vbuf->vertices);
+   if (vbuf->vertex_ptr) {
+      assert(!vbuf->nr_indices);
+      assert(!vbuf->vertices);
+   }
    
    /* Allocate a new vertex buffer */
    vbuf->max_vertices = vbuf->render->max_vertex_buffer_bytes / vbuf->vertex_size;




More information about the mesa-commit mailing list