X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fdlist.h;h=22b696f50c18c2658923e681e7f1882d44dc80d9;hb=a55452530f7525e9cf5d2619bef66a61b488b4af;hp=1a5b391e760d395f492c835298c403df77c630e2;hpb=21f6978c532eae50d9daefd481b5ab936225fd27;p=mesa.git diff --git a/src/mesa/main/dlist.h b/src/mesa/main/dlist.h index 1a5b391e760..22b696f50c1 100644 --- a/src/mesa/main/dlist.h +++ b/src/mesa/main/dlist.h @@ -5,9 +5,8 @@ /* * Mesa 3-D graphics library - * Version: 5.1 * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -22,9 +21,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ @@ -32,72 +32,105 @@ #ifndef DLIST_H #define DLIST_H +#include +#include "main/mtypes.h" -#include "mtypes.h" +/** + * Describes the location and size of a glBitmap image in a texture atlas. + */ +struct gl_bitmap_glyph +{ + unsigned short x, y, w, h; /**< position and size in the texture */ + float xorig, yorig; /**< bitmap origin */ + float xmove, ymove; /**< rasterpos move */ +}; -#if _HAVE_FULL_GL -extern void _mesa_init_lists( void ); +/** + * Describes a set of glBitmap display lists which live in a texture atlas. + * The idea is when we see a code sequence of glListBase(b), glCallLists(n) + * we're probably drawing bitmap font glyphs. We try to put all the bitmap + * glyphs into one texture map then render the glCallLists as a textured + * quadstrip. + */ +struct gl_bitmap_atlas +{ + bool complete; /**< Is the atlas ready to use? */ + bool incomplete; /**< Did we fail to construct this atlas? */ -extern void _mesa_destroy_list( GLcontext *ctx, GLuint list ); + unsigned numBitmaps; + unsigned texWidth, texHeight; + struct gl_texture_object *texObj; + struct gl_texture_image *texImage; -extern void GLAPIENTRY _mesa_CallList( GLuint list ); + unsigned glyphHeight; -extern void GLAPIENTRY _mesa_CallLists( GLsizei n, GLenum type, const GLvoid *lists ); + struct gl_bitmap_glyph *glyphs; +}; -extern void GLAPIENTRY _mesa_DeleteLists( GLuint list, GLsizei range ); +void +_mesa_delete_bitmap_atlas(struct gl_context *ctx, + struct gl_bitmap_atlas *atlas); -extern void GLAPIENTRY _mesa_EndList( void ); -extern GLuint GLAPIENTRY _mesa_GenLists( GLsizei range ); +GLboolean GLAPIENTRY +_mesa_IsList(GLuint list); -extern GLboolean GLAPIENTRY _mesa_IsList( GLuint list ); +void GLAPIENTRY +_mesa_DeleteLists(GLuint list, GLsizei range); -extern void GLAPIENTRY _mesa_ListBase( GLuint base ); +GLuint GLAPIENTRY +_mesa_GenLists(GLsizei range); -extern void GLAPIENTRY _mesa_NewList( GLuint list, GLenum mode ); +void GLAPIENTRY +_mesa_NewList(GLuint name, GLenum mode); -extern void _mesa_init_dlist_table( struct _glapi_table *table ); +void GLAPIENTRY +_mesa_EndList(void); -extern void _mesa_save_error( GLcontext *ctx, GLenum error, const char *s ); +void GLAPIENTRY +_mesa_CallList(GLuint list); -extern void _mesa_compile_error( GLcontext *ctx, GLenum error, const char *s ); +void GLAPIENTRY +_mesa_CallLists(GLsizei n, GLenum type, const GLvoid *lists); +void GLAPIENTRY +_mesa_ListBase(GLuint base); -extern void *_mesa_alloc_instruction( GLcontext *ctx, int opcode, GLint sz ); +struct gl_display_list * +_mesa_lookup_list(struct gl_context *ctx, GLuint list); -extern GLint _mesa_alloc_opcode( GLcontext *ctx, GLuint sz, - void (*execute)( GLcontext *, void * ), - void (*destroy)( GLcontext *, void * ), - void (*print)( GLcontext *, void * ) ); +void +_mesa_compile_error(struct gl_context *ctx, GLenum error, const char *s); -extern void GLAPIENTRY _mesa_save_EvalMesh2(GLenum mode, GLint i1, GLint i2, - GLint j1, GLint j2 ); -extern void GLAPIENTRY _mesa_save_EvalMesh1( GLenum mode, GLint i1, GLint i2 ); -extern void GLAPIENTRY _mesa_save_CallLists( GLsizei n, GLenum type, const GLvoid *lists ); -extern void GLAPIENTRY _mesa_save_CallList( GLuint list ); -extern void _mesa_init_display_list( GLcontext * ctx ); -extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt ); +void * +_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz); +void * +_mesa_dlist_alloc_aligned(struct gl_context *ctx, GLuint opcode, GLuint bytes); -#else +GLint +_mesa_dlist_alloc_opcode(struct gl_context *ctx, GLuint sz, + void (*execute)(struct gl_context *, void *), + void (*destroy)(struct gl_context *, void *), + void (*print)(struct gl_context *, void *, FILE *)); -/** No-op */ -#define _mesa_init_lists() ((void)0) +void +_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist); -/** No-op */ -#define _mesa_destroy_list(c,l) ((void)0) +void +_mesa_initialize_save_table(const struct gl_context *); -/** No-op */ -#define _mesa_init_dlist_table(t,ts) ((void)0) +void +_mesa_install_dlist_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt); -/** No-op */ -#define _mesa_init_display_list(c) ((void)0) +void +_mesa_init_display_list(struct gl_context * ctx); -/** No-op */ -#define _mesa_save_vtxfmt_init(v) ((void)0) +void +_mesa_free_display_list_data(struct gl_context *ctx); -#endif -#endif +#endif /* DLIST_H */