1 /* 2 * Mesa 3-D graphics library 3 * Version: 7.1 4 * 5 * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a 8 * copy of this software and associated documentation files (the "Software"), 9 * to deal in the Software without restriction, including without limitation 10 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11 * and/or sell copies of the Software, and to permit persons to whom the 12 * Software is furnished to do so, subject to the following conditions: 13 * 14 * The above copyright notice and this permission notice shall be included 15 * in all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 21 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 * 24 * Authors: 25 * Keith Whitwell <keith@tungstengraphics.com> 26 */ 27 28 #ifndef _TNL_H 29 #define _TNL_H 30 31 #include "main/glheader.h" 32 33 struct gl_client_array; 34 struct gl_context; 35 struct gl_program; 36 37 38 /* These are the public-access functions exported from tnl. (A few 39 * more are currently hooked into dispatch directly by the module 40 * itself.) 41 */ 42 extern GLboolean 43 _tnl_CreateContext( struct gl_context *ctx ); 44 45 extern void 46 _tnl_DestroyContext( struct gl_context *ctx ); 47 48 extern void 49 _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ); 50 51 /* Functions to revive the tnl module after being unhooked from 52 * dispatch and/or driver callbacks. 53 */ 54 55 extern void 56 _tnl_wakeup( struct gl_context *ctx ); 57 58 /* Driver configuration options: 59 */ 60 extern void 61 _tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag ); 62 63 64 /* Control whether T&L does per-vertex fog 65 */ 66 extern void 67 _tnl_allow_vertex_fog( struct gl_context *ctx, GLboolean value ); 68 69 extern void 70 _tnl_allow_pixel_fog( struct gl_context *ctx, GLboolean value ); 71 72 extern GLboolean 73 _tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program); 74 75 struct _mesa_prim; 76 struct _mesa_index_buffer; 77 78 void 79 _tnl_draw_prims( struct gl_context *ctx, 80 const struct gl_client_array *arrays[], 81 const struct _mesa_prim *prim, 82 GLuint nr_prims, 83 const struct _mesa_index_buffer *ib, 84 GLuint min_index, 85 GLuint max_index); 86 87 void 88 _tnl_vbo_draw_prims( struct gl_context *ctx, 89 const struct _mesa_prim *prim, 90 GLuint nr_prims, 91 const struct _mesa_index_buffer *ib, 92 GLboolean index_bounds_valid, 93 GLuint min_index, 94 GLuint max_index, 95 struct gl_transform_feedback_object *tfb_vertcount ); 96 97 extern void 98 _mesa_load_tracked_matrices(struct gl_context *ctx); 99 100 extern void 101 _tnl_RasterPos(struct gl_context *ctx, const GLfloat vObj[4]); 102 103 extern void 104 _tnl_validate_shine_tables( struct gl_context *ctx ); 105 106 #endif 107