tnl.h revision af69d88d
17117f1b4Smrg/* 27117f1b4Smrg * Mesa 3-D graphics library 37117f1b4Smrg * 47117f1b4Smrg * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. 57117f1b4Smrg * 67117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a 77117f1b4Smrg * copy of this software and associated documentation files (the "Software"), 87117f1b4Smrg * to deal in the Software without restriction, including without limitation 97117f1b4Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 107117f1b4Smrg * and/or sell copies of the Software, and to permit persons to whom the 117117f1b4Smrg * Software is furnished to do so, subject to the following conditions: 127117f1b4Smrg * 137117f1b4Smrg * The above copyright notice and this permission notice shall be included 147117f1b4Smrg * in all copies or substantial portions of the Software. 157117f1b4Smrg * 167117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 177117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 187117f1b4Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19af69d88dSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20af69d88dSmrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21af69d88dSmrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22af69d88dSmrg * OTHER DEALINGS IN THE SOFTWARE. 237117f1b4Smrg * 247117f1b4Smrg * Authors: 25af69d88dSmrg * Keith Whitwell <keithw@vmware.com> 267117f1b4Smrg */ 277117f1b4Smrg 287117f1b4Smrg#ifndef _TNL_H 297117f1b4Smrg#define _TNL_H 307117f1b4Smrg 313464ebd5Sriastradh#include "main/glheader.h" 327117f1b4Smrg 333464ebd5Sriastradhstruct gl_client_array; 343464ebd5Sriastradhstruct gl_context; 353464ebd5Sriastradhstruct gl_program; 367117f1b4Smrg 377117f1b4Smrg 387117f1b4Smrg/* These are the public-access functions exported from tnl. (A few 397117f1b4Smrg * more are currently hooked into dispatch directly by the module 407117f1b4Smrg * itself.) 417117f1b4Smrg */ 427117f1b4Smrgextern GLboolean 433464ebd5Sriastradh_tnl_CreateContext( struct gl_context *ctx ); 447117f1b4Smrg 457117f1b4Smrgextern void 463464ebd5Sriastradh_tnl_DestroyContext( struct gl_context *ctx ); 477117f1b4Smrg 487117f1b4Smrgextern void 493464ebd5Sriastradh_tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ); 507117f1b4Smrg 517117f1b4Smrg/* Functions to revive the tnl module after being unhooked from 527117f1b4Smrg * dispatch and/or driver callbacks. 537117f1b4Smrg */ 547117f1b4Smrg 557117f1b4Smrgextern void 563464ebd5Sriastradh_tnl_wakeup( struct gl_context *ctx ); 577117f1b4Smrg 587117f1b4Smrg/* Driver configuration options: 597117f1b4Smrg */ 607117f1b4Smrgextern void 613464ebd5Sriastradh_tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag ); 627117f1b4Smrg 637117f1b4Smrg 647117f1b4Smrg/* Control whether T&L does per-vertex fog 657117f1b4Smrg */ 667117f1b4Smrgextern void 673464ebd5Sriastradh_tnl_allow_vertex_fog( struct gl_context *ctx, GLboolean value ); 687117f1b4Smrg 697117f1b4Smrgextern void 703464ebd5Sriastradh_tnl_allow_pixel_fog( struct gl_context *ctx, GLboolean value ); 717117f1b4Smrg 72cdc920a0Smrgextern GLboolean 733464ebd5Sriastradh_tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program); 747117f1b4Smrg 757117f1b4Smrgstruct _mesa_prim; 767117f1b4Smrgstruct _mesa_index_buffer; 777117f1b4Smrg 787117f1b4Smrgvoid 793464ebd5Sriastradh_tnl_draw_prims( struct gl_context *ctx, 804a49301eSmrg const struct _mesa_prim *prim, 814a49301eSmrg GLuint nr_prims, 824a49301eSmrg const struct _mesa_index_buffer *ib, 834a49301eSmrg GLboolean index_bounds_valid, 844a49301eSmrg GLuint min_index, 85af69d88dSmrg GLuint max_index, 86af69d88dSmrg struct gl_transform_feedback_object *tfb_vertcount, 87af69d88dSmrg struct gl_buffer_object *indirect ); 884a49301eSmrg 894a49301eSmrgextern void 90af69d88dSmrg_tnl_RasterPos(struct gl_context *ctx, const GLfloat vObj[4]); 91c1f859d4Smrg 92c1f859d4Smrgextern void 93af69d88dSmrg_tnl_validate_shine_tables( struct gl_context *ctx ); 94c1f859d4Smrg 957117f1b4Smrg#endif 96