/** * Initialize the display list compiler */ void vbo_save_api_init( struct vbo_save_context *save ) { GLcontext *ctx = save->ctx; GLuint i; save->opcode_vertex_list = _mesa_alloc_opcode( ctx, sizeof(struct vbo_save_vertex_list), vbo_save_playback_vertex_list, vbo_destroy_vertex_list, vbo_print_vertex_list ); ctx->Driver.NotifySaveBegin = vbo_save_NotifyBegin; _save_vtxfmt_init( ctx ); _save_current_init( ctx ); /* These will actually get set again when binding/drawing */ for (i = 0; i < VBO_ATTRIB_MAX; i++) save->inputs[i] = &save->arrays[i]; /* Hook our array functions into the outside-begin-end vtxfmt in * ctx->ListState. */ ctx->ListState.ListVtxfmt.Rectf = _save_OBE_Rectf; ctx->ListState.ListVtxfmt.DrawArrays = _save_OBE_DrawArrays; ctx->ListState.ListVtxfmt.DrawElements = _save_OBE_DrawElements; ctx->ListState.ListVtxfmt.DrawRangeElements = _save_OBE_DrawRangeElements; _mesa_install_save_vtxfmt( ctx, &ctx->ListState.ListVtxfmt ); }
/** * Initialize the display list compiler */ void _tnl_save_init( GLcontext *ctx ) { TNLcontext *tnl = TNL_CONTEXT(ctx); struct tnl_vertex_arrays *tmp = &tnl->save_inputs; GLuint i; for (i = 0; i < _TNL_ATTRIB_MAX; i++) _mesa_vector4f_init( &tmp->Attribs[i], 0, 0); tnl->save.opcode_vertex_list = _mesa_alloc_opcode( ctx, sizeof(struct tnl_vertex_list), _tnl_playback_vertex_list, _tnl_destroy_vertex_list, _tnl_print_vertex_list ); ctx->Driver.NotifySaveBegin = _save_NotifyBegin; _save_vtxfmt_init( ctx ); _save_current_init( ctx ); /* Hook our array functions into the outside-begin-end vtxfmt in * ctx->ListState. */ ctx->ListState.ListVtxfmt.Rectf = _save_OBE_Rectf; ctx->ListState.ListVtxfmt.DrawArrays = _save_OBE_DrawArrays; ctx->ListState.ListVtxfmt.DrawElements = _save_OBE_DrawElements; ctx->ListState.ListVtxfmt.DrawRangeElements = _save_OBE_DrawRangeElements; _mesa_install_save_vtxfmt( ctx, &ctx->ListState.ListVtxfmt ); }