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 33struct gl_client_array; 34struct gl_context; 35struct 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 */ 42extern GLboolean 43_tnl_CreateContext( struct gl_context *ctx ); 44 45extern void 46_tnl_DestroyContext( struct gl_context *ctx ); 47 48extern 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 55extern void 56_tnl_wakeup( struct gl_context *ctx ); 57 58/* Driver configuration options: 59 */ 60extern void 61_tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag ); 62 63 64/* Control whether T&L does per-vertex fog 65 */ 66extern void 67_tnl_allow_vertex_fog( struct gl_context *ctx, GLboolean value ); 68 69extern void 70_tnl_allow_pixel_fog( struct gl_context *ctx, GLboolean value ); 71 72extern GLboolean 73_tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program); 74 75struct _mesa_prim; 76struct _mesa_index_buffer; 77 78void 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 87void 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 97extern void 98_mesa_load_tracked_matrices(struct gl_context *ctx); 99 100extern void 101_tnl_RasterPos(struct gl_context *ctx, const GLfloat vObj[4]); 102 103extern void 104_tnl_validate_shine_tables( struct gl_context *ctx ); 105 106#endif 107