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