1bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez/* 2bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * Copyright (C) 2007-2010 The Nouveau Project. 3bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * All Rights Reserved. 4bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * 5bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * Permission is hereby granted, free of charge, to any person obtaining 6bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * a copy of this software and associated documentation files (the 7bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * "Software"), to deal in the Software without restriction, including 8bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * without limitation the rights to use, copy, modify, merge, publish, 9bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * distribute, sublicense, and/or sell copies of the Software, and to 10bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * permit persons to whom the Software is furnished to do so, subject to 11bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * the following conditions: 12bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * 13bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * The above copyright notice and this permission notice (including the 14bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * next paragraph) shall be included in all copies or substantial 15bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * portions of the Software. 16bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * 17bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 21bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 22bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * 25bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez */ 26bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 27bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#ifndef __NOUVEAU_GLDEFS_H__ 28bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#define __NOUVEAU_GLDEFS_H__ 29bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 30bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 31bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_blend_func(unsigned func) 32bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 33bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (func) { 34bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ZERO: 35bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0000; 36bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ONE: 37bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0001; 38bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_SRC_COLOR: 39bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0300; 40bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ONE_MINUS_SRC_COLOR: 41bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0301; 42bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_SRC_ALPHA: 43bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0302; 44bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ONE_MINUS_SRC_ALPHA: 45bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0303; 46bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_DST_ALPHA: 47bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0304; 48bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ONE_MINUS_DST_ALPHA: 49bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0305; 50bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_DST_COLOR: 51bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0306; 52bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ONE_MINUS_DST_COLOR: 53bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0307; 54bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_SRC_ALPHA_SATURATE: 55bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0308; 56bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_CONSTANT_COLOR: 57bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8001; 58bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ONE_MINUS_CONSTANT_COLOR: 59bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8002; 60bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_CONSTANT_ALPHA: 61bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8003; 62bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ONE_MINUS_CONSTANT_ALPHA: 63bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8004; 64bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 65bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 66bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 67bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 68bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 69bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 70bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_blend_eqn(unsigned eqn) 71bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 72bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (eqn) { 73bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_FUNC_ADD: 74bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8006; 75bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_MIN: 76bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8007; 77bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_MAX: 78bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8008; 79bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_FUNC_SUBTRACT: 80bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x800a; 81bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_FUNC_REVERSE_SUBTRACT: 82bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x800b; 83bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 84bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 85bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 86bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 87bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 88bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 89bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_logicop_func(unsigned func) 90bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 91bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (func) { 92bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_CLEAR: 93bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1500; 94bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_NOR: 95bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1508; 96bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_AND_INVERTED: 97bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1504; 98bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_COPY_INVERTED: 99bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x150c; 100bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_AND_REVERSE: 101bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1502; 102bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_INVERT: 103bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x150a; 104bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_XOR: 105bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1506; 106bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_NAND: 107bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x150e; 108bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_AND: 109bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1501; 110bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_EQUIV: 111bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1509; 112bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_NOOP: 113bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1505; 114bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_OR_INVERTED: 115bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x150d; 116bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_COPY: 117bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1503; 118bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_OR_REVERSE: 119bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x150b; 120bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_OR: 121bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1507; 122bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_SET: 123bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x150f; 124bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 125bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 126bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 127bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 128bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 129bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 130bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_comparison_op(unsigned op) 131bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 132bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (op) { 133bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_NEVER: 134bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0200; 135bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LESS: 136bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0201; 137bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_EQUAL: 138bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0202; 139bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LEQUAL: 140bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0203; 141bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_GREATER: 142bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0204; 143bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_NOTEQUAL: 144bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0205; 145bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_GEQUAL: 146bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0206; 147bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ALWAYS: 148bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0207; 149bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 150bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 151bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 152bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 153bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 154bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 155bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_polygon_mode(unsigned mode) 156bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 157bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (mode) { 158bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_POINT: 159bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1b00; 160bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LINE: 161bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1b01; 162bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_FILL: 163bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1b02; 164bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 165bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 166bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 167bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 168bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 169bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 170bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_stencil_op(unsigned op) 171bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 172bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (op) { 173bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_ZERO: 174bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0000; 175bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_INVERT: 176bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x150a; 177bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_KEEP: 178bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1e00; 179bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_REPLACE: 180bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1e01; 181bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_INCR: 182bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1e02; 183bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_DECR: 184bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1e03; 185bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_INCR_WRAP_EXT: 186bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8507; 187bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_DECR_WRAP_EXT: 188bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x8508; 189bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 190bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 191bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 192bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 193bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 194bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 195bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_primitive(unsigned prim) 196bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 197bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (prim) { 198bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_POINTS: 199bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0001; 200bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LINES: 201bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0002; 202bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LINE_LOOP: 203bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0003; 204bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LINE_STRIP: 205bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0004; 206bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_TRIANGLES: 207bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0005; 208bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_TRIANGLE_STRIP: 209bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0006; 210bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_TRIANGLE_FAN: 211bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0007; 212bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_QUADS: 213bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0008; 214bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_QUAD_STRIP: 215bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x0009; 216bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_POLYGON: 217bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x000a; 218bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 219bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 220bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 221bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 222bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 223bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 224bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_wrap_mode(unsigned wrap) 225bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 226bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (wrap) { 227bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_REPEAT: 228bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1; 229bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_MIRRORED_REPEAT: 230bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x2; 23182c4af33b0d860e27f4c2d3b3d2401c7549de355Francisco Jerez case GL_CLAMP: 232bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_CLAMP_TO_EDGE: 233bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x3; 234bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_CLAMP_TO_BORDER: 235bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x4; 236bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 237bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 238bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 239bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 240bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 241bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstatic inline unsigned 242bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jereznvgl_filter_mode(unsigned filter) 243bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez{ 244bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez switch (filter) { 245bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_NEAREST: 246bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x1; 247bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LINEAR: 248bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x2; 249bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_NEAREST_MIPMAP_NEAREST: 250bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x3; 251bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LINEAR_MIPMAP_NEAREST: 252bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x4; 253bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_NEAREST_MIPMAP_LINEAR: 254bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x5; 255bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez case GL_LINEAR_MIPMAP_LINEAR: 256bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez return 0x6; 257bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez default: 258bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez assert(0); 259bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez } 260bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez} 261bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez 262c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerezstatic inline unsigned 263c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jereznvgl_texgen_mode(unsigned mode) 264c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez{ 265c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez switch (mode) { 266c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez case GL_EYE_LINEAR: 267c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez return 0x2400; 268c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez case GL_OBJECT_LINEAR: 269c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez return 0x2401; 270c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez case GL_SPHERE_MAP: 271c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez return 0x2402; 272c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez case GL_NORMAL_MAP: 273c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez return 0x8511; 274c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez case GL_REFLECTION_MAP: 275c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez return 0x8512; 276c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez default: 277c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez assert(0); 278c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez } 279c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez} 280c944fb5ffe7cf16154d6395001f43a6c965cab1fFrancisco Jerez 281bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#endif 282