diff options
author | Brian Paul <[email protected]> | 2012-04-30 14:44:26 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2012-05-01 08:14:23 -0600 |
commit | 8dd3e341b337ca2d22bcc0e7548a78a6c36ca77d (patch) | |
tree | 7be219b7a56722414a889148ec7e1f06e01512de /src/gallium/drivers | |
parent | b5752e16e82d4375171d157cb116a81ea025ea7b (diff) |
svga: check for and skip null vertex buffer pointers
Fixes regressions with google earth and other things.
Reviewed-by: José Fonseca <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/svga/svga_swtnl_draw.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/gallium/drivers/svga/svga_swtnl_draw.c b/src/gallium/drivers/svga/svga_swtnl_draw.c index 377026411f2..bb6870f6572 100644 --- a/src/gallium/drivers/svga/svga_swtnl_draw.c +++ b/src/gallium/drivers/svga/svga_swtnl_draw.c @@ -66,12 +66,14 @@ svga_swtnl_draw_vbo(struct svga_context *svga, * Map vertex buffers */ for (i = 0; i < svga->curr.num_vertex_buffers; i++) { - map = pipe_buffer_map(&svga->pipe, - svga->curr.vb[i].buffer, - PIPE_TRANSFER_READ, - &vb_transfer[i]); - - draw_set_mapped_vertex_buffer(draw, i, map); + if (svga->curr.vb[i].buffer) { + map = pipe_buffer_map(&svga->pipe, + svga->curr.vb[i].buffer, + PIPE_TRANSFER_READ, + &vb_transfer[i]); + + draw_set_mapped_vertex_buffer(draw, i, map); + } } /* TODO move this to update_swtnl_draw */ @@ -109,8 +111,10 @@ svga_swtnl_draw_vbo(struct svga_context *svga, * unmap vertex/index buffers */ for (i = 0; i < svga->curr.num_vertex_buffers; i++) { - pipe_buffer_unmap(&svga->pipe, vb_transfer[i]); - draw_set_mapped_vertex_buffer(draw, i, NULL); + if (svga->curr.vb[i].buffer) { + pipe_buffer_unmap(&svga->pipe, vb_transfer[i]); + draw_set_mapped_vertex_buffer(draw, i, NULL); + } } if (ib_transfer) { |