Import some bits Mesa's mtypes.h
This commit is contained in:
221
main/mtypes.h
Normal file
221
main/mtypes.h
Normal file
@@ -0,0 +1,221 @@
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 7.7
|
||||
*
|
||||
* Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 2009 VMware, Inc. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file mtypes.h
|
||||
* Main Mesa data structures.
|
||||
*
|
||||
* Please try to mark derived values with a leading underscore ('_').
|
||||
*/
|
||||
|
||||
#ifndef MTYPES_H
|
||||
#define MTYPES_H
|
||||
|
||||
#define MAX_DRAW_BUFFERS 8
|
||||
#define MAX_VARYING 16
|
||||
|
||||
/**
|
||||
* Indexes for vertex program attributes.
|
||||
* GL_NV_vertex_program aliases generic attributes over the conventional
|
||||
* attributes. In GL_ARB_vertex_program shader the aliasing is optional.
|
||||
* In GL_ARB_vertex_shader / OpenGL 2.0 the aliasing is disallowed (the
|
||||
* generic attributes are distinct/separate).
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
VERT_ATTRIB_POS = 0,
|
||||
VERT_ATTRIB_WEIGHT = 1,
|
||||
VERT_ATTRIB_NORMAL = 2,
|
||||
VERT_ATTRIB_COLOR0 = 3,
|
||||
VERT_ATTRIB_COLOR1 = 4,
|
||||
VERT_ATTRIB_FOG = 5,
|
||||
VERT_ATTRIB_COLOR_INDEX = 6,
|
||||
VERT_ATTRIB_POINT_SIZE = 6, /*alias*/
|
||||
VERT_ATTRIB_EDGEFLAG = 7,
|
||||
VERT_ATTRIB_TEX0 = 8,
|
||||
VERT_ATTRIB_TEX1 = 9,
|
||||
VERT_ATTRIB_TEX2 = 10,
|
||||
VERT_ATTRIB_TEX3 = 11,
|
||||
VERT_ATTRIB_TEX4 = 12,
|
||||
VERT_ATTRIB_TEX5 = 13,
|
||||
VERT_ATTRIB_TEX6 = 14,
|
||||
VERT_ATTRIB_TEX7 = 15,
|
||||
VERT_ATTRIB_GENERIC0 = 16,
|
||||
VERT_ATTRIB_GENERIC1 = 17,
|
||||
VERT_ATTRIB_GENERIC2 = 18,
|
||||
VERT_ATTRIB_GENERIC3 = 19,
|
||||
VERT_ATTRIB_GENERIC4 = 20,
|
||||
VERT_ATTRIB_GENERIC5 = 21,
|
||||
VERT_ATTRIB_GENERIC6 = 22,
|
||||
VERT_ATTRIB_GENERIC7 = 23,
|
||||
VERT_ATTRIB_GENERIC8 = 24,
|
||||
VERT_ATTRIB_GENERIC9 = 25,
|
||||
VERT_ATTRIB_GENERIC10 = 26,
|
||||
VERT_ATTRIB_GENERIC11 = 27,
|
||||
VERT_ATTRIB_GENERIC12 = 28,
|
||||
VERT_ATTRIB_GENERIC13 = 29,
|
||||
VERT_ATTRIB_GENERIC14 = 30,
|
||||
VERT_ATTRIB_GENERIC15 = 31,
|
||||
VERT_ATTRIB_MAX = 32
|
||||
} gl_vert_attrib;
|
||||
|
||||
/**
|
||||
* Bitflags for vertex attributes.
|
||||
* These are used in bitfields in many places.
|
||||
*/
|
||||
/*@{*/
|
||||
#define VERT_BIT_POS (1 << VERT_ATTRIB_POS)
|
||||
#define VERT_BIT_WEIGHT (1 << VERT_ATTRIB_WEIGHT)
|
||||
#define VERT_BIT_NORMAL (1 << VERT_ATTRIB_NORMAL)
|
||||
#define VERT_BIT_COLOR0 (1 << VERT_ATTRIB_COLOR0)
|
||||
#define VERT_BIT_COLOR1 (1 << VERT_ATTRIB_COLOR1)
|
||||
#define VERT_BIT_FOG (1 << VERT_ATTRIB_FOG)
|
||||
#define VERT_BIT_COLOR_INDEX (1 << VERT_ATTRIB_COLOR_INDEX)
|
||||
#define VERT_BIT_EDGEFLAG (1 << VERT_ATTRIB_EDGEFLAG)
|
||||
#define VERT_BIT_TEX0 (1 << VERT_ATTRIB_TEX0)
|
||||
#define VERT_BIT_TEX1 (1 << VERT_ATTRIB_TEX1)
|
||||
#define VERT_BIT_TEX2 (1 << VERT_ATTRIB_TEX2)
|
||||
#define VERT_BIT_TEX3 (1 << VERT_ATTRIB_TEX3)
|
||||
#define VERT_BIT_TEX4 (1 << VERT_ATTRIB_TEX4)
|
||||
#define VERT_BIT_TEX5 (1 << VERT_ATTRIB_TEX5)
|
||||
#define VERT_BIT_TEX6 (1 << VERT_ATTRIB_TEX6)
|
||||
#define VERT_BIT_TEX7 (1 << VERT_ATTRIB_TEX7)
|
||||
#define VERT_BIT_GENERIC0 (1 << VERT_ATTRIB_GENERIC0)
|
||||
#define VERT_BIT_GENERIC1 (1 << VERT_ATTRIB_GENERIC1)
|
||||
#define VERT_BIT_GENERIC2 (1 << VERT_ATTRIB_GENERIC2)
|
||||
#define VERT_BIT_GENERIC3 (1 << VERT_ATTRIB_GENERIC3)
|
||||
#define VERT_BIT_GENERIC4 (1 << VERT_ATTRIB_GENERIC4)
|
||||
#define VERT_BIT_GENERIC5 (1 << VERT_ATTRIB_GENERIC5)
|
||||
#define VERT_BIT_GENERIC6 (1 << VERT_ATTRIB_GENERIC6)
|
||||
#define VERT_BIT_GENERIC7 (1 << VERT_ATTRIB_GENERIC7)
|
||||
#define VERT_BIT_GENERIC8 (1 << VERT_ATTRIB_GENERIC8)
|
||||
#define VERT_BIT_GENERIC9 (1 << VERT_ATTRIB_GENERIC9)
|
||||
#define VERT_BIT_GENERIC10 (1 << VERT_ATTRIB_GENERIC10)
|
||||
#define VERT_BIT_GENERIC11 (1 << VERT_ATTRIB_GENERIC11)
|
||||
#define VERT_BIT_GENERIC12 (1 << VERT_ATTRIB_GENERIC12)
|
||||
#define VERT_BIT_GENERIC13 (1 << VERT_ATTRIB_GENERIC13)
|
||||
#define VERT_BIT_GENERIC14 (1 << VERT_ATTRIB_GENERIC14)
|
||||
#define VERT_BIT_GENERIC15 (1 << VERT_ATTRIB_GENERIC15)
|
||||
|
||||
#define VERT_BIT_TEX(u) (1 << (VERT_ATTRIB_TEX0 + (u)))
|
||||
#define VERT_BIT_GENERIC(g) (1 << (VERT_ATTRIB_GENERIC0 + (g)))
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**
|
||||
* Indexes for vertex program result attributes
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
VERT_RESULT_HPOS = 0,
|
||||
VERT_RESULT_COL0 = 1,
|
||||
VERT_RESULT_COL1 = 2,
|
||||
VERT_RESULT_FOGC = 3,
|
||||
VERT_RESULT_TEX0 = 4,
|
||||
VERT_RESULT_TEX1 = 5,
|
||||
VERT_RESULT_TEX2 = 6,
|
||||
VERT_RESULT_TEX3 = 7,
|
||||
VERT_RESULT_TEX4 = 8,
|
||||
VERT_RESULT_TEX5 = 9,
|
||||
VERT_RESULT_TEX6 = 10,
|
||||
VERT_RESULT_TEX7 = 11,
|
||||
VERT_RESULT_PSIZ = 12,
|
||||
VERT_RESULT_BFC0 = 13,
|
||||
VERT_RESULT_BFC1 = 14,
|
||||
VERT_RESULT_EDGE = 15,
|
||||
VERT_RESULT_VAR0 = 16, /**< shader varying */
|
||||
VERT_RESULT_MAX = (VERT_RESULT_VAR0 + MAX_VARYING)
|
||||
} gl_vert_result;
|
||||
|
||||
|
||||
/**
|
||||
* Indexes for fragment program input attributes.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
FRAG_ATTRIB_WPOS = 0,
|
||||
FRAG_ATTRIB_COL0 = 1,
|
||||
FRAG_ATTRIB_COL1 = 2,
|
||||
FRAG_ATTRIB_FOGC = 3,
|
||||
FRAG_ATTRIB_TEX0 = 4,
|
||||
FRAG_ATTRIB_TEX1 = 5,
|
||||
FRAG_ATTRIB_TEX2 = 6,
|
||||
FRAG_ATTRIB_TEX3 = 7,
|
||||
FRAG_ATTRIB_TEX4 = 8,
|
||||
FRAG_ATTRIB_TEX5 = 9,
|
||||
FRAG_ATTRIB_TEX6 = 10,
|
||||
FRAG_ATTRIB_TEX7 = 11,
|
||||
FRAG_ATTRIB_FACE = 12, /**< front/back face */
|
||||
FRAG_ATTRIB_PNTC = 13, /**< sprite/point coord */
|
||||
FRAG_ATTRIB_VAR0 = 14, /**< shader varying */
|
||||
FRAG_ATTRIB_MAX = (FRAG_ATTRIB_VAR0 + MAX_VARYING)
|
||||
} gl_frag_attrib;
|
||||
|
||||
/**
|
||||
* Bitflags for fragment program input attributes.
|
||||
*/
|
||||
/*@{*/
|
||||
#define FRAG_BIT_WPOS (1 << FRAG_ATTRIB_WPOS)
|
||||
#define FRAG_BIT_COL0 (1 << FRAG_ATTRIB_COL0)
|
||||
#define FRAG_BIT_COL1 (1 << FRAG_ATTRIB_COL1)
|
||||
#define FRAG_BIT_FOGC (1 << FRAG_ATTRIB_FOGC)
|
||||
#define FRAG_BIT_FACE (1 << FRAG_ATTRIB_FACE)
|
||||
#define FRAG_BIT_PNTC (1 << FRAG_ATTRIB_PNTC)
|
||||
#define FRAG_BIT_TEX0 (1 << FRAG_ATTRIB_TEX0)
|
||||
#define FRAG_BIT_TEX1 (1 << FRAG_ATTRIB_TEX1)
|
||||
#define FRAG_BIT_TEX2 (1 << FRAG_ATTRIB_TEX2)
|
||||
#define FRAG_BIT_TEX3 (1 << FRAG_ATTRIB_TEX3)
|
||||
#define FRAG_BIT_TEX4 (1 << FRAG_ATTRIB_TEX4)
|
||||
#define FRAG_BIT_TEX5 (1 << FRAG_ATTRIB_TEX5)
|
||||
#define FRAG_BIT_TEX6 (1 << FRAG_ATTRIB_TEX6)
|
||||
#define FRAG_BIT_TEX7 (1 << FRAG_ATTRIB_TEX7)
|
||||
#define FRAG_BIT_VAR0 (1 << FRAG_ATTRIB_VAR0)
|
||||
|
||||
#define FRAG_BIT_TEX(U) (FRAG_BIT_TEX0 << (U))
|
||||
#define FRAG_BIT_VAR(V) (FRAG_BIT_VAR0 << (V))
|
||||
|
||||
#define FRAG_BITS_TEX_ANY (FRAG_BIT_TEX0| \
|
||||
FRAG_BIT_TEX1| \
|
||||
FRAG_BIT_TEX2| \
|
||||
FRAG_BIT_TEX3| \
|
||||
FRAG_BIT_TEX4| \
|
||||
FRAG_BIT_TEX5| \
|
||||
FRAG_BIT_TEX6| \
|
||||
FRAG_BIT_TEX7)
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**
|
||||
* Fragment program results
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
FRAG_RESULT_DEPTH = 0,
|
||||
FRAG_RESULT_COLOR = 1,
|
||||
FRAG_RESULT_DATA0 = 2,
|
||||
FRAG_RESULT_MAX = (FRAG_RESULT_DATA0 + MAX_DRAW_BUFFERS)
|
||||
} gl_frag_result;
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user