X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fdlist.h;h=22b696f50c18c2658923e681e7f1882d44dc80d9;hb=a55452530f7525e9cf5d2619bef66a61b488b4af;hp=b67f5b535e71e331db7a3f5f612216679579e0a1;hpb=3d8d5b298a268b119d840bc9bae0ee9e0c9244a9;p=mesa.git diff --git a/src/mesa/main/dlist.h b/src/mesa/main/dlist.h index b67f5b535e7..22b696f50c1 100644 --- a/src/mesa/main/dlist.h +++ b/src/mesa/main/dlist.h @@ -5,7 +5,6 @@ /* * Mesa 3-D graphics library - * Version: 6.5.1 * * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. * @@ -33,53 +32,105 @@ #ifndef DLIST_H #define DLIST_H - +#include #include "main/mtypes.h" -#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) \ - do { \ - (vfmt)->CallList = impl ## CallList; \ - (vfmt)->CallLists = impl ## CallLists; \ - } while (0) +/** + * 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 */ +}; + + +/** + * 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? */ + + unsigned numBitmaps; + unsigned texWidth, texHeight; + struct gl_texture_object *texObj; + struct gl_texture_image *texImage; + + unsigned glyphHeight; + + struct gl_bitmap_glyph *glyphs; +}; + +void +_mesa_delete_bitmap_atlas(struct gl_context *ctx, + struct gl_bitmap_atlas *atlas); + GLboolean GLAPIENTRY _mesa_IsList(GLuint list); + void GLAPIENTRY _mesa_DeleteLists(GLuint list, GLsizei range); + GLuint GLAPIENTRY _mesa_GenLists(GLsizei range); + void GLAPIENTRY _mesa_NewList(GLuint name, GLenum mode); + void GLAPIENTRY _mesa_EndList(void); + void GLAPIENTRY -_mesa_CallList( GLuint list ); +_mesa_CallList(GLuint list); + void GLAPIENTRY -_mesa_CallLists( GLsizei n, GLenum type, const GLvoid *lists ); +_mesa_CallLists(GLsizei n, GLenum type, const GLvoid *lists); + void GLAPIENTRY _mesa_ListBase(GLuint base); +struct gl_display_list * +_mesa_lookup_list(struct gl_context *ctx, GLuint list); + +void +_mesa_compile_error(struct gl_context *ctx, GLenum error, const char *s); -extern void _mesa_compile_error( struct gl_context *ctx, GLenum error, const char *s ); +void * +_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz); -extern 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); -extern 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 * ) ); +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 *)); -extern void _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist); +void +_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist); -extern void _mesa_initialize_save_table(const struct gl_context *); +void +_mesa_initialize_save_table(const struct gl_context *); -extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt); +void +_mesa_install_dlist_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt); -extern void _mesa_init_display_list( struct gl_context * ctx ); +void +_mesa_init_display_list(struct gl_context * ctx); -extern void _mesa_free_display_list_data(struct gl_context *ctx); +void +_mesa_free_display_list_data(struct gl_context *ctx); #endif /* DLIST_H */