|
|
|
|
|
|
|
|
|
|
|
|
|
|
node->prim_store->refcount++; |
|
|
node->prim_store->refcount++; |
|
|
|
|
|
|
|
|
if (node->prims[0].no_current_update) { |
|
|
|
|
|
|
|
|
if (save->no_current_update) { |
|
|
node->current_data = NULL; |
|
|
node->current_data = NULL; |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
|
|
|
|
|
|
struct vbo_save_context *save = &vbo_context(ctx)->save; |
|
|
struct vbo_save_context *save = &vbo_context(ctx)->save; |
|
|
GLint i = save->prim_count - 1; |
|
|
GLint i = save->prim_count - 1; |
|
|
GLenum mode; |
|
|
GLenum mode; |
|
|
GLboolean no_current_update; |
|
|
|
|
|
|
|
|
|
|
|
assert(i < (GLint) save->prim_max); |
|
|
assert(i < (GLint) save->prim_max); |
|
|
assert(i >= 0); |
|
|
assert(i >= 0); |
|
|
|
|
|
|
|
|
*/ |
|
|
*/ |
|
|
save->prims[i].count = (save->vert_count - save->prims[i].start); |
|
|
save->prims[i].count = (save->vert_count - save->prims[i].start); |
|
|
mode = save->prims[i].mode; |
|
|
mode = save->prims[i].mode; |
|
|
no_current_update = save->prims[i].no_current_update; |
|
|
|
|
|
|
|
|
|
|
|
/* store the copied vertices, and allocate a new list. |
|
|
/* store the copied vertices, and allocate a new list. |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
/* Restart interrupted primitive |
|
|
/* Restart interrupted primitive |
|
|
*/ |
|
|
*/ |
|
|
save->prims[0].mode = mode; |
|
|
save->prims[0].mode = mode; |
|
|
save->prims[0].no_current_update = no_current_update; |
|
|
|
|
|
save->prims[0].begin = 0; |
|
|
save->prims[0].begin = 0; |
|
|
save->prims[0].end = 0; |
|
|
save->prims[0].end = 0; |
|
|
save->prims[0].pad = 0; |
|
|
save->prims[0].pad = 0; |
|
|
|
|
|
|
|
|
save->prims[i].mode = mode & VBO_SAVE_PRIM_MODE_MASK; |
|
|
save->prims[i].mode = mode & VBO_SAVE_PRIM_MODE_MASK; |
|
|
save->prims[i].begin = 1; |
|
|
save->prims[i].begin = 1; |
|
|
save->prims[i].end = 0; |
|
|
save->prims[i].end = 0; |
|
|
save->prims[i].no_current_update = |
|
|
|
|
|
(mode & VBO_SAVE_PRIM_NO_CURRENT_UPDATE) ? 1 : 0; |
|
|
|
|
|
save->prims[i].pad = 0; |
|
|
save->prims[i].pad = 0; |
|
|
save->prims[i].start = save->vert_count; |
|
|
save->prims[i].start = save->vert_count; |
|
|
save->prims[i].count = 0; |
|
|
save->prims[i].count = 0; |
|
|
|
|
|
|
|
|
save->prims[i].base_instance = 0; |
|
|
save->prims[i].base_instance = 0; |
|
|
save->prims[i].is_indirect = 0; |
|
|
save->prims[i].is_indirect = 0; |
|
|
|
|
|
|
|
|
|
|
|
save->no_current_update = |
|
|
|
|
|
(mode & VBO_SAVE_PRIM_NO_CURRENT_UPDATE) ? 1 : 0; |
|
|
|
|
|
|
|
|
if (save->out_of_memory) { |
|
|
if (save->out_of_memory) { |
|
|
_mesa_install_save_vtxfmt(ctx, &save->vtxfmt_noop); |
|
|
_mesa_install_save_vtxfmt(ctx, &save->vtxfmt_noop); |
|
|
} |
|
|
} |