On 11/07/2013 12:06 AM, Chris Forbes wrote:
V2: Check for mapping failure (thanks Brian)

Signed-off-by: Chris Forbes <chr...@ijw.co.nz>
---
  src/mesa/vbo/vbo_primitive_restart.c | 33 +++++++++++++++++++++++++++++++++
  1 file changed, 33 insertions(+)

diff --git a/src/mesa/vbo/vbo_primitive_restart.c 
b/src/mesa/vbo/vbo_primitive_restart.c
index 48d04e1..ee84f10 100644
--- a/src/mesa/vbo/vbo_primitive_restart.c
+++ b/src/mesa/vbo/vbo_primitive_restart.c
@@ -180,6 +180,39 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
     GLboolean map_ib = ib->obj->Name && !ib->obj->Pointer;
     void *ptr;

+   /* If there is an indirect buffer, map it and extract the draw params */
+   if (indirect && prims[0].is_indirect) {
+      struct _mesa_prim new_prim = *prims;
+      struct _mesa_index_buffer new_ib = *ib;
+      const uint32_t *indirect_params;
+      if (!ctx->Driver.MapBufferRange(ctx, 0, indirect->Size, GL_MAP_READ_BIT,
+            (struct gl_buffer_object *)indirect)) {
+
+         /* something went wrong with mapping, give up */
+         _mesa_error(ctx, GL_INVALID_OPERATION,
+                     "failed to map indirect buffer for sw primitive restart");

I suspect we'd only hit this if we ran out of memory earlier and failed to allocate the buffer. So, I'd probably report GL_OUT_OF_MEMORY here. I think we do that in other places where mapping fails too.

The rest of the core Mesa changes look OK to me.  For those:
Reviewed-by: Brian Paul <bri...@vmware.com>


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to