X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fdlist.h;h=1ac17d5bb09d927d052eba8e50c6a7915b527f57;hb=05bacdb9170edc408a86ca315f195b9aabdd3651;hp=f37a93a7f4bf4e6631bcdc1f0f72900e2b641747;hpb=b57abd3bea29e95e5dee2524c3f1be4b26017c0f;p=mesa.git diff --git a/src/mesa/main/dlist.h b/src/mesa/main/dlist.h index f37a93a7f4b..1ac17d5bb09 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. * @@ -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,81 +32,105 @@ #ifndef DLIST_H #define DLIST_H +#include -#include "main/mtypes.h" +struct gl_context; +/** + * 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 FEATURE_dlist -#define _MESA_INIT_DLIST_FUNCTIONS(driver, impl) \ - do { \ - (driver)->NewList = impl ## NewList; \ - (driver)->EndList = impl ## EndList; \ - (driver)->BeginCallList = impl ## BeginCallList; \ - (driver)->EndCallList = impl ## EndCallList; \ - (driver)->SaveFlushVertices = impl ## SaveFlushVertices; \ - (driver)->NotifySaveBegin = impl ## NotifyBegin; \ - } while (0) +/** + * 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? */ -#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) \ - do { \ - (vfmt)->CallList = impl ## CallList; \ - (vfmt)->CallLists = impl ## CallLists; \ - } while (0) + 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; +}; +void +_mesa_delete_bitmap_atlas(struct gl_context *ctx, + struct gl_bitmap_atlas *atlas); -extern void _mesa_compile_error( GLcontext *ctx, GLenum error, const char *s ); -extern void *_mesa_dlist_alloc(GLcontext *ctx, GLuint opcode, GLuint sz); +GLboolean GLAPIENTRY +_mesa_IsList(GLuint list); -extern GLint _mesa_dlist_alloc_opcode( GLcontext *ctx, GLuint sz, - void (*execute)( GLcontext *, void * ), - void (*destroy)( GLcontext *, void * ), - void (*print)( GLcontext *, void * ) ); +void GLAPIENTRY +_mesa_DeleteLists(GLuint list, GLsizei range); -extern void _mesa_delete_list(GLcontext *ctx, struct gl_display_list *dlist); +GLuint GLAPIENTRY +_mesa_GenLists(GLsizei range); -extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt ); +void GLAPIENTRY +_mesa_NewList(GLuint name, GLenum mode); -extern void _mesa_init_save_table( struct _glapi_table *table ); +void GLAPIENTRY +_mesa_EndList(void); -extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt); +void GLAPIENTRY +_mesa_CallList(GLuint list); -extern void _mesa_init_dlist_dispatch(struct _glapi_table *disp); +void GLAPIENTRY +_mesa_CallLists(GLsizei n, GLenum type, const GLvoid *lists); -#else /* FEATURE_dlist */ +void GLAPIENTRY +_mesa_ListBase(GLuint base); -#define _MESA_INIT_DLIST_FUNCTIONS(driver, impl) do { } while (0) -#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) do { } while (0) +struct gl_display_list * +_mesa_lookup_list(struct gl_context *ctx, GLuint list); -static INLINE void -_mesa_delete_list(GLcontext *ctx, struct gl_display_list *dlist) -{ - /* there should be no list to delete */ - ASSERT_NO_FEATURE(); -} +void +_mesa_compile_error(struct gl_context *ctx, GLenum error, const char *s); -static INLINE void -_mesa_install_dlist_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt) -{ -} +void * +_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz); -static INLINE void -_mesa_init_dlist_dispatch(struct _glapi_table *disp) -{ -} +void * +_mesa_dlist_alloc_aligned(struct gl_context *ctx, GLuint opcode, GLuint bytes); + +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 *)); -#endif /* FEATURE_dlist */ +void +_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist); + +void +_mesa_initialize_save_table(const struct gl_context *); + +void +_mesa_install_dlist_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt); -extern void _mesa_init_display_list( GLcontext * ctx ); +void +_mesa_init_display_list(struct gl_context * ctx); -extern void _mesa_free_display_list_data(GLcontext *ctx); +void +_mesa_free_display_list_data(struct gl_context *ctx); #endif /* DLIST_H */