From aa661306828b8c76c1511f05e0fae577f06477b8 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 10 Nov 2011 09:51:57 -0700 Subject: [PATCH] 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 file 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; -- 2.7.4