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