1 /* 2 * Mesa 3-D graphics library 3 * 4 * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation 9 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 * and/or sell copies of the Software, and to permit persons to whom the 11 * Software is furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included 14 * in all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 * OTHER DEALINGS IN THE SOFTWARE. 23 * 24 * Authors: 25 * Keith Whitwell <keithw@vmware.com> 26 */ 27 28 #ifndef _TNL_H 29 #define _TNL_H 30 31 #include "main/glheader.h" 32 33 struct gl_vertex_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 _mesa_prim *prim, 81 GLuint nr_prims, 82 const struct _mesa_index_buffer *ib, 83 GLboolean index_bounds_valid, 84 GLuint min_index, 85 GLuint max_index, 86 struct gl_transform_feedback_object *tfb_vertcount, 87 unsigned stream, 88 struct gl_buffer_object *indirect ); 89 90 extern void 91 _tnl_RasterPos(struct gl_context *ctx, const GLfloat vObj[4]); 92 93 extern void 94 _tnl_validate_shine_tables( struct gl_context *ctx ); 95 96 #endif 97