draw_vertex.h revision 690a9de40b20092ae9027dc52d7b26a48995bbff
1690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul/************************************************************************** 2690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * 3690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. 4690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * All Rights Reserved. 5690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * 6690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * Permission is hereby granted, free of charge, to any person obtaining a 7690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * copy of this software and associated documentation files (the 8690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * "Software"), to deal in the Software without restriction, including 9690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * without limitation the rights to use, copy, modify, merge, publish, 10690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * distribute, sub license, and/or sell copies of the Software, and to 11690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * permit persons to whom the Software is furnished to do so, subject to 12690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * the following conditions: 13690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * 14690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * The above copyright notice and this permission notice (including the 15690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * next paragraph) shall be included in all copies or substantial portions 16690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * of the Software. 17690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * 18690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * 26690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul **************************************************************************/ 27690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 28690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul/* Author: 29690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * Brian Paul 30690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul */ 31690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 32690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 33690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#ifndef DRAW_VERTEX_H 34690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define DRAW_VERTEX_H 35690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 36690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 37690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul/*** 38690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *** XXX There's a lot of legacy tokens here that'll eventually go away. 39690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *** (at least we don't include vf/vf.h anymore) 40690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul ***/ 41690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 42690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 43690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paulenum { 44690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_POS = 0, 45690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_WEIGHT = 1, 46690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_NORMAL = 2, 47690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_COLOR0 = 3, 48690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_COLOR1 = 4, 49690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_FOG = 5, 50690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_COLOR_INDEX = 6, 51690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_EDGEFLAG = 7, 52690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_TEX0 = 8, 53690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_TEX1 = 9, 54690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_TEX2 = 10, 55690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_TEX3 = 11, 56690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_TEX4 = 12, 57690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_TEX5 = 13, 58690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_TEX6 = 14, 59690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_TEX7 = 15, 60690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VAR0 = 16, 61690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VAR1 = 17, 62690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VAR2 = 18, 63690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VAR3 = 19, 64690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VAR4 = 20, 65690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VAR5 = 21, 66690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VAR6 = 22, 67690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VAR7 = 23, 68690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_POINTSIZE = 24, 69690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_BFC0 = 25, 70690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_BFC1 = 26, 71690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_CLIP_POS = 27, 72690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_VERTEX_HEADER = 28, 73690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul VF_ATTRIB_MAX = 29 74690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul}; 75690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 76690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define MAX_VARYING 8 77690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paulenum 78690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul{ 79690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_WPOS = 0, 80690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_COL0 = 1, 81690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_COL1 = 2, 82690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_FOGC = 3, 83690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_TEX0 = 4, 84690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_TEX1 = 5, 85690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_TEX2 = 6, 86690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_TEX3 = 7, 87690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_TEX4 = 8, 88690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_TEX5 = 9, 89690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_TEX6 = 10, 90690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_TEX7 = 11, 91690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_VAR0 = 12, /**< shader varying */ 92690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_ATTRIB_MAX = (FRAG_ATTRIB_VAR0 + MAX_VARYING) 93690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul}; 94690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 95690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_WPOS (1 << FRAG_ATTRIB_WPOS) 96690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_COL0 (1 << FRAG_ATTRIB_COL0) 97690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_COL1 (1 << FRAG_ATTRIB_COL1) 98690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_FOGC (1 << FRAG_ATTRIB_FOGC) 99690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_TEX0 (1 << FRAG_ATTRIB_TEX0) 100690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 101690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 102690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 103690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define MAX_DRAW_BUFFERS 4 104690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 105690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paulenum 106690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul{ 107690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_RESULT_COLR = 0, 108690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_RESULT_COLH = 1, 109690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_RESULT_DEPR = 2, 110690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_RESULT_DATA0 = 3, 111690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul FRAG_RESULT_MAX = (FRAG_RESULT_DATA0 + MAX_DRAW_BUFFERS) 112690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul}; 113690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 114690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 115690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 116690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define MAX_VERT_ATTRIBS 12 /* OK? */ 117690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 118690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_OMIT 0 119690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_1F 1 120690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_2F 2 121690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_3F 3 122690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_4F 4 123690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_4F_VIEWPORT 4 124690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_4UB 5 125690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 126690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 127690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paulstruct vertex_info 128690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul{ 129690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul uint num_attribs; 130690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul uint hwfmt[2]; /**< hardware format info for this format */ 131690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul uint attr_mask; /**< mask of VF_ATTR_ bits */ 132690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul uint slot_to_attrib[MAX_VERT_ATTRIBS]; 133690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul uint attrib_to_slot[VF_ATTRIB_MAX]; 134690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul uint interp_mode[MAX_VERT_ATTRIBS]; 135690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul uint format[MAX_VERT_ATTRIBS]; /**< FORMAT_x */ 136690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul uint size; /**< total vertex size in dwords */ 137690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul}; 138690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 139690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 140690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul 141690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#endif /* DRAW_VERTEX_H */ 142