Lines Matching defs:save
108 struct vbo_save_context *save = &vbo_context(ctx)->save;
111 GLuint sz = save->vertex_size;
113 GLfloat *dst = save->copied.buffer;
188 struct vbo_save_context *save = &vbo_context(ctx)->save;
202 save->out_of_memory =
210 save->out_of_memory = GL_TRUE;
213 if (save->out_of_memory) {
215 _mesa_install_save_vtxfmt(ctx, &save->vtxfmt_noop);
288 struct vbo_save_context *save = &vbo_context(ctx)->save;
290 save->prim = save->prim_store->buffer + save->prim_store->used;
291 save->buffer = save->vertex_store->buffer + save->vertex_store->used;
293 assert(save->buffer == save->buffer_ptr);
295 if (save->vertex_size)
296 save->max_vert = ((VBO_SAVE_BUFFER_SIZE - save->vertex_store->used) /
297 save->vertex_size);
299 save->max_vert = 0;
301 save->vert_count = 0;
302 save->prim_count = 0;
303 save->prim_max = VBO_SAVE_PRIM_SIZE - save->prim_store->used;
304 save->dangling_attr_ref = 0;
315 struct vbo_save_context *save = &vbo_context(ctx)->save;
322 _mesa_dlist_alloc(ctx, save->opcode_vertex_list, sizeof(*node));
329 memcpy(node->attrsz, save->attrsz, sizeof(node->attrsz));
330 memcpy(node->attrtype, save->attrtype, sizeof(node->attrtype));
331 node->vertex_size = save->vertex_size;
333 (save->buffer - save->vertex_store->buffer) * sizeof(GLfloat);
334 node->count = save->vert_count;
335 node->wrap_count = save->copied.nr;
336 node->dangling_attr_ref = save->dangling_attr_ref;
337 node->prim = save->prim;
338 node->prim_count = save->prim_count;
339 node->vertex_store = save->vertex_store;
340 node->prim_store = save->prim_store;
359 const char *buffer = (const char *) save->vertex_store->buffer;
376 if (save->dangling_attr_ref)
379 save->vertex_store->used += save->vertex_size * node->count;
380 save->prim_store->used += node->prim_count;
384 save->copied.nr = _save_copy_vertices(ctx, node, save->buffer);
394 (const GLfloat *) ((const char *) save->
406 if (save->vertex_store->used >
407 VBO_SAVE_BUFFER_SIZE - 16 * (save->vertex_size + 4)) {
411 vbo_save_unmap_vertex_store(ctx, save->vertex_store);
415 save->vertex_store->refcount--;
416 assert(save->vertex_store->refcount != 0);
417 save->vertex_store = NULL;
421 save->vertex_store = alloc_vertex_store(ctx);
422 save->buffer_ptr = vbo_save_map_vertex_store(ctx, save->vertex_store);
423 save->out_of_memory = save->buffer_ptr == NULL;
426 if (save->prim_store->used > VBO_SAVE_PRIM_SIZE - 6) {
427 save->prim_store->refcount--;
428 assert(save->prim_store->refcount != 0);
429 save->prim_store = alloc_prim_store(ctx);
444 struct vbo_save_context *save = &vbo_context(ctx)->save;
445 GLint i = save->prim_count - 1;
450 assert(i < (GLint) save->prim_max);
455 save->prim[i].count = (save->vert_count - save->prim[i].start);
456 mode = save->prim[i].mode;
457 weak = save->prim[i].weak;
458 no_current_update = save->prim[i].no_current_update;
466 save->prim[0].mode = mode;
467 save->prim[0].weak = weak;
468 save->prim[0].no_current_update = no_current_update;
469 save->prim[0].begin = 0;
470 save->prim[0].end = 0;
471 save->prim[0].pad = 0;
472 save->prim[0].start = 0;
473 save->prim[0].count = 0;
474 save->prim[0].num_instances = 1;
475 save->prim[0].base_instance = 0;
476 save->prim_count = 1;
487 struct vbo_save_context *save = &vbo_context(ctx)->save;
488 GLfloat *data = save->copied.buffer;
497 assert(save->max_vert - save->vert_count > save->copied.nr);
499 for (i = 0; i < save->copied.nr; i++) {
500 memcpy(save->buffer_ptr, data, save->vertex_size * sizeof(GLfloat));
501 data += save->vertex_size;
502 save->buffer_ptr += save->vertex_size;
503 save->vert_count++;
511 struct vbo_save_context *save = &vbo_context(ctx)->save;
515 if (save->attrsz[i]) {
516 save->currentsz[i][0] = save->attrsz[i];
517 COPY_CLEAN_4V_TYPE_AS_FLOAT(save->current[i], save->attrsz[i],
518 save->attrptr[i], save->attrtype[i]);
527 struct vbo_save_context *save = &vbo_context(ctx)->save;
531 switch (save->attrsz[i]) {
533 save->attrptr[i][3] = save->current[i][3];
535 save->attrptr[i][2] = save->current[i][2];
537 save->attrptr[i][1] = save->current[i][1];
539 save->attrptr[i][0] = save->current[i][0];
552 struct vbo_save_context *save = &vbo_context(ctx)->save;
560 if (save->vert_count)
563 assert(save->copied.nr == 0);
573 oldsz = save->attrsz[attr];
574 save->attrsz[attr] = newsz;
576 save->vertex_size += newsz - oldsz;
577 save->max_vert = ((VBO_SAVE_BUFFER_SIZE - save->vertex_store->used) /
578 save->vertex_size);
579 save->vert_count = 0;
583 for (i = 0, tmp = save->vertex; i < VBO_ATTRIB_MAX; i++) {
584 if (save->attrsz[i]) {
585 save->attrptr[i] = tmp;
586 tmp += save->attrsz[i];
589 save->attrptr[i] = NULL; /* will not be dereferenced. */
603 if (save->copied.nr) {
604 GLfloat *data = save->copied.buffer;
605 GLfloat *dest = save->buffer;
610 if (attr != VBO_ATTRIB_POS && save->currentsz[attr][0] == 0) {
612 save->dangling_attr_ref = GL_TRUE;
615 for (i = 0; i < save->copied.nr; i++) {
617 if (save->attrsz[j]) {
621 save->attrtype[j]);
626 COPY_SZ_4V(dest, newsz, save->current[attr]);
631 GLint sz = save->attrsz[j];
640 save->buffer_ptr = dest;
641 save->vert_count += save->copied.nr;
649 struct vbo_save_context *save = &vbo_context(ctx)->save;
651 if (sz > save->attrsz[attr]) {
657 else if (sz < save->active_sz[attr]) {
659 const GLfloat *id = vbo_get_default_vals_as_float(save->attrtype[attr]);
664 for (i = sz; i <= save->attrsz[attr]; i++)
665 save->attrptr[attr][i - 1] = id[i - 1];
668 save->active_sz[attr] = sz;
675 struct vbo_save_context *save = &vbo_context(ctx)->save;
679 save->attrsz[i] = 0;
680 save->active_sz[i] = 0;
683 save->vertex_size = 0;
699 struct vbo_save_context *save = &vbo_context(ctx)->save; \
701 if (save->active_sz[A] != N) \
705 GLfloat *dest = save->attrptr[A]; \
710 save->attrtype[A] = T; \
716 for (i = 0; i < save->vertex_size; i++) \
717 save->buffer_ptr[i] = save->vertex[i]; \
719 save->buffer_ptr += save->vertex_size; \
721 if (++save->vert_count >= save->max_vert) \
742 * Save a glMaterial call found between glBegin/End.
797 struct vbo_save_context *save = &vbo_context(ctx)->save;
799 if (save->vert_count || save->prim_count) {
800 if (save->prim_count > 0) {
802 GLint i = save->prim_count - 1;
803 save->prim[i].count = save->vert_count - save->prim[i].start;
810 save->dangling_attr_ref = 1;
818 if (save->out_of_memory) {
819 _mesa_install_save_vtxfmt(ctx, &save->vtxfmt_noop);
833 CALL_EvalCoord1f(ctx->Save, (u));
841 CALL_EvalCoord1fv(ctx->Save, (v));
849 CALL_EvalCoord2f(ctx->Save, (u, v));
857 CALL_EvalCoord2fv(ctx->Save, (v));
865 CALL_EvalPoint1(ctx->Save, (i));
873 CALL_EvalPoint2(ctx->Save, (i, j));
881 CALL_CallList(ctx->Save, (l));
889 CALL_CallLists(ctx->Save, (n, type, v));
900 struct vbo_save_context *save = &vbo_context(ctx)->save;
902 GLuint i = save->prim_count++;
904 assert(i < save->prim_max);
905 save->prim[i].mode = mode & VBO_SAVE_PRIM_MODE_MASK;
906 save->prim[i].begin = 1;
907 save->prim[i].end = 0;
908 save->prim[i].weak = (mode & VBO_SAVE_PRIM_WEAK) ? 1 : 0;
909 save->prim[i].no_current_update =
911 save->prim[i].pad = 0;
912 save->prim[i].start = save->vert_count;
913 save->prim[i].count = 0;
914 save->prim[i].num_instances = 1;
915 save->prim[i].base_instance = 0;
917 if (save->out_of_memory) {
918 _mesa_install_save_vtxfmt(ctx, &save->vtxfmt_noop);
921 _mesa_install_save_vtxfmt(ctx, &save->vtxfmt);
932 struct vbo_save_context *save = &vbo_context(ctx)->save;
933 GLint i = save->prim_count - 1;
936 save->prim[i].end = 1;
937 save->prim[i].count = (save->vert_count - save->prim[i].start);
939 if (i == (GLint) save->prim_max - 1) {
941 assert(save->copied.nr == 0);
948 if (save->out_of_memory) {
949 _mesa_install_save_vtxfmt(ctx, &save->vtxfmt_noop);
1193 save = &vbo_context(ctx)->save;
1199 if (save->out_of_memory)
1223 struct vbo_save_context *save = &vbo_context(ctx)->save;
1229 if (save->out_of_memory)
1271 struct vbo_save_context *save = &vbo_context(ctx)->save;
1277 if (save->out_of_memory)
1320 struct vbo_save_context *save = &vbo_context(ctx)->save;
1321 GLvertexformat *vfmt = &save->vtxfmt;
1475 struct vbo_save_context *save = &vbo_context(ctx)->save;
1483 if (save->vert_count || save->prim_count)
1496 struct vbo_save_context *save = &vbo_context(ctx)->save;
1501 if (!save->prim_store)
1502 save->prim_store = alloc_prim_store(ctx);
1504 if (!save->vertex_store)
1505 save->vertex_store = alloc_vertex_store(ctx);
1507 save->buffer_ptr = vbo_save_map_vertex_store(ctx, save->vertex_store);
1518 struct vbo_save_context *save = &vbo_context(ctx)->save;
1524 if (save->prim_count > 0) {
1525 GLint i = save->prim_count - 1;
1527 save->prim[i].end = 0;
1528 save->prim[i].count = (save->vert_count - save->prim[i].start);
1534 save->dangling_attr_ref = 1;
1544 vbo_save_unmap_vertex_store(ctx, save->vertex_store);
1546 assert(save->vertex_size == 0);
1553 struct vbo_save_context *save = &vbo_context(ctx)->save;
1554 save->replay_flags |= dlist->Flags;
1561 struct vbo_save_context *save = &vbo_context(ctx)->save;
1567 save->replay_flags &= VBO_SAVE_FALLBACK;
1621 struct vbo_save_context *save = &vbo_context(ctx)->save;
1627 save->currentsz[i] = &ctx->ListState.ActiveAttribSize[j];
1628 save->current[i] = ctx->ListState.CurrentAttrib[j];
1634 save->currentsz[i] = &ctx->ListState.ActiveMaterialSize[j];
1635 save->current[i] = ctx->ListState.CurrentMaterial[j];
1644 vbo_save_api_init(struct vbo_save_context *save)
1646 struct gl_context *ctx = save->ctx;
1649 save->opcode_vertex_list =
1660 _mesa_noop_vtxfmt_init(&save->vtxfmt_noop);
1664 save->inputs[i] = &save->arrays[i];