home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mesa5.zip / mesa5src.zip / array_cache / ac_context.h < prev    next >
C/C++ Source or Header  |  2002-10-29  |  3KB  |  101 lines

  1. /* $Id: ac_context.h,v 1.5 2002/10/29 20:28:58 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  4.1
  6.  *
  7.  * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
  8.  *
  9.  * Permission is hereby granted, free of charge, to any person obtaining a
  10.  * copy of this software and associated documentation files (the "Software"),
  11.  * to deal in the Software without restriction, including without limitation
  12.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  13.  * and/or sell copies of the Software, and to permit persons to whom the
  14.  * Software is furnished to do so, subject to the following conditions:
  15.  *
  16.  * The above copyright notice and this permission notice shall be included
  17.  * in all copies or substantial portions of the Software.
  18.  *
  19.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  20.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  21.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  22.  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  23.  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  24.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25.  *
  26.  * Authors:
  27.  *    Keith Whitwell <keith@tungstengraphics.com>
  28.  */
  29.  
  30. #ifndef _AC_CONTEXT_H
  31. #define _AC_CONTEXT_H
  32.  
  33. #include "glheader.h"
  34. #include "mtypes.h"
  35.  
  36. #include "array_cache/acache.h"
  37.  
  38. /* These are used to make the ctx->Current values look like
  39.  * arrays (with zero StrideB).
  40.  */
  41. struct ac_arrays {
  42.    struct gl_client_array Vertex;
  43.    struct gl_client_array Normal;
  44.    struct gl_client_array Color;
  45.    struct gl_client_array SecondaryColor;
  46.    struct gl_client_array FogCoord;
  47.    struct gl_client_array Index;
  48.    struct gl_client_array TexCoord[MAX_TEXTURE_UNITS];
  49.    struct gl_client_array EdgeFlag;
  50.    struct gl_client_array Attrib[VERT_ATTRIB_MAX];  /* GL_NV_vertex_program */
  51. };
  52.  
  53. struct ac_array_pointers {
  54.    struct gl_client_array *Vertex;
  55.    struct gl_client_array *Normal;
  56.    struct gl_client_array *Color;
  57.    struct gl_client_array *SecondaryColor;
  58.    struct gl_client_array *FogCoord;
  59.    struct gl_client_array *Index;
  60.    struct gl_client_array *TexCoord[MAX_TEXTURE_UNITS];
  61.    struct gl_client_array *EdgeFlag;
  62.    struct gl_client_array *Attrib[VERT_ATTRIB_MAX];  /* GL_NV_vertex_program */
  63. };
  64.  
  65. struct ac_array_flags {
  66.    GLboolean Vertex;
  67.    GLboolean Normal;
  68.    GLboolean Color;
  69.    GLboolean SecondaryColor;
  70.    GLboolean FogCoord;
  71.    GLboolean Index;
  72.    GLboolean TexCoord[MAX_TEXTURE_UNITS];
  73.    GLboolean EdgeFlag;
  74.    GLboolean Attrib[VERT_ATTRIB_MAX];  /* GL_NV_vertex_program */
  75. };
  76.  
  77.  
  78. typedef struct {
  79.    GLuint NewState;        /* not needed? */
  80.    GLuint NewArrayState;
  81.  
  82.    /* Facility for importing and caching array data:
  83.     */
  84.    struct ac_arrays Fallback;
  85.    struct ac_arrays Cache;
  86.    struct ac_arrays Raw;
  87.    struct ac_array_flags IsCached;
  88.    GLuint start;
  89.    GLuint count;
  90.  
  91.    /* Facility for importing element lists:
  92.     */
  93.    GLuint *Elts;
  94.    GLuint elt_size;
  95.  
  96. } ACcontext;
  97.  
  98. #define AC_CONTEXT(ctx) ((ACcontext *)ctx->acache_context)
  99.  
  100. #endif
  101.