tnl.h revision 3464ebd5
17117f1b4Smrg/*
27117f1b4Smrg * Mesa 3-D graphics library
37117f1b4Smrg * Version:  7.1
47117f1b4Smrg *
57117f1b4Smrg * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
67117f1b4Smrg *
77117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a
87117f1b4Smrg * copy of this software and associated documentation files (the "Software"),
97117f1b4Smrg * to deal in the Software without restriction, including without limitation
107117f1b4Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
117117f1b4Smrg * and/or sell copies of the Software, and to permit persons to whom the
127117f1b4Smrg * Software is furnished to do so, subject to the following conditions:
137117f1b4Smrg *
147117f1b4Smrg * The above copyright notice and this permission notice shall be included
157117f1b4Smrg * in all copies or substantial portions of the Software.
167117f1b4Smrg *
177117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
187117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
197117f1b4Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
207117f1b4Smrg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
217117f1b4Smrg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
227117f1b4Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
237117f1b4Smrg *
247117f1b4Smrg * Authors:
257117f1b4Smrg *    Keith Whitwell <keith@tungstengraphics.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,
807117f1b4Smrg		 const struct gl_client_array *arrays[],
817117f1b4Smrg		 const struct _mesa_prim *prim,
827117f1b4Smrg		 GLuint nr_prims,
837117f1b4Smrg		 const struct _mesa_index_buffer *ib,
847117f1b4Smrg		 GLuint min_index,
857117f1b4Smrg		 GLuint max_index);
867117f1b4Smrg
874a49301eSmrgvoid
883464ebd5Sriastradh_tnl_vbo_draw_prims( struct gl_context *ctx,
894a49301eSmrg		     const struct gl_client_array *arrays[],
904a49301eSmrg		     const struct _mesa_prim *prim,
914a49301eSmrg		     GLuint nr_prims,
924a49301eSmrg		     const struct _mesa_index_buffer *ib,
934a49301eSmrg		     GLboolean index_bounds_valid,
944a49301eSmrg		     GLuint min_index,
954a49301eSmrg		     GLuint max_index);
964a49301eSmrg
974a49301eSmrgextern void
983464ebd5Sriastradh_mesa_load_tracked_matrices(struct gl_context *ctx);
99c1f859d4Smrg
100c1f859d4Smrgextern void
1013464ebd5Sriastradh_tnl_RasterPos(struct gl_context *ctx, const GLfloat vObj[4]);
102c1f859d4Smrg
1037117f1b4Smrg#endif
104