1 /************************************************************************** 2 * 3 * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial portions 16 * of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 * 26 **************************************************************************/ 27 28 29 #include "main/glheader.h" 30 #include "main/context.h" 31 #include "main/macros.h" 32 #include "main/enums.h" 33 #include "main/colormac.h" 34 #include "main/dd.h" 35 36 #include "intel_screen.h" 37 #include "intel_context.h" 38 39 int 40 intel_translate_shadow_compare_func(GLenum func) 41 { 42 switch (func) { 43 case GL_NEVER: 44 return COMPAREFUNC_ALWAYS; 45 case GL_LESS: 46 return COMPAREFUNC_LEQUAL; 47 case GL_LEQUAL: 48 return COMPAREFUNC_LESS; 49 case GL_GREATER: 50 return COMPAREFUNC_GEQUAL; 51 case GL_GEQUAL: 52 return COMPAREFUNC_GREATER; 53 case GL_NOTEQUAL: 54 return COMPAREFUNC_EQUAL; 55 case GL_EQUAL: 56 return COMPAREFUNC_NOTEQUAL; 57 case GL_ALWAYS: 58 return COMPAREFUNC_NEVER; 59 } 60 61 fprintf(stderr, "Unknown value in %s: %x\n", __FUNCTION__, func); 62 return COMPAREFUNC_NEVER; 63 } 64 65 int 66 intel_translate_compare_func(GLenum func) 67 { 68 switch (func) { 69 case GL_NEVER: 70 return COMPAREFUNC_NEVER; 71 case GL_LESS: 72 return COMPAREFUNC_LESS; 73 case GL_LEQUAL: 74 return COMPAREFUNC_LEQUAL; 75 case GL_GREATER: 76 return COMPAREFUNC_GREATER; 77 case GL_GEQUAL: 78 return COMPAREFUNC_GEQUAL; 79 case GL_NOTEQUAL: 80 return COMPAREFUNC_NOTEQUAL; 81 case GL_EQUAL: 82 return COMPAREFUNC_EQUAL; 83 case GL_ALWAYS: 84 return COMPAREFUNC_ALWAYS; 85 } 86 87 fprintf(stderr, "Unknown value in %s: %x\n", __FUNCTION__, func); 88 return COMPAREFUNC_ALWAYS; 89 } 90 91 int 92 intel_translate_stencil_op(GLenum op) 93 { 94 switch (op) { 95 case GL_KEEP: 96 return STENCILOP_KEEP; 97 case GL_ZERO: 98 return STENCILOP_ZERO; 99 case GL_REPLACE: 100 return STENCILOP_REPLACE; 101 case GL_INCR: 102 return STENCILOP_INCRSAT; 103 case GL_DECR: 104 return STENCILOP_DECRSAT; 105 case GL_INCR_WRAP: 106 return STENCILOP_INCR; 107 case GL_DECR_WRAP: 108 return STENCILOP_DECR; 109 case GL_INVERT: 110 return STENCILOP_INVERT; 111 default: 112 return STENCILOP_ZERO; 113 } 114 } 115 116 int 117 intel_translate_blend_factor(GLenum factor) 118 { 119 switch (factor) { 120 case GL_ZERO: 121 return BLENDFACT_ZERO; 122 case GL_SRC_ALPHA: 123 return BLENDFACT_SRC_ALPHA; 124 case GL_ONE: 125 return BLENDFACT_ONE; 126 case GL_SRC_COLOR: 127 return BLENDFACT_SRC_COLR; 128 case GL_ONE_MINUS_SRC_COLOR: 129 return BLENDFACT_INV_SRC_COLR; 130 case GL_DST_COLOR: 131 return BLENDFACT_DST_COLR; 132 case GL_ONE_MINUS_DST_COLOR: 133 return BLENDFACT_INV_DST_COLR; 134 case GL_ONE_MINUS_SRC_ALPHA: 135 return BLENDFACT_INV_SRC_ALPHA; 136 case GL_DST_ALPHA: 137 return BLENDFACT_DST_ALPHA; 138 case GL_ONE_MINUS_DST_ALPHA: 139 return BLENDFACT_INV_DST_ALPHA; 140 case GL_SRC_ALPHA_SATURATE: 141 return BLENDFACT_SRC_ALPHA_SATURATE; 142 case GL_CONSTANT_COLOR: 143 return BLENDFACT_CONST_COLOR; 144 case GL_ONE_MINUS_CONSTANT_COLOR: 145 return BLENDFACT_INV_CONST_COLOR; 146 case GL_CONSTANT_ALPHA: 147 return BLENDFACT_CONST_ALPHA; 148 case GL_ONE_MINUS_CONSTANT_ALPHA: 149 return BLENDFACT_INV_CONST_ALPHA; 150 } 151 152 fprintf(stderr, "Unknown value in %s: %x\n", __FUNCTION__, factor); 153 return BLENDFACT_ZERO; 154 } 155 156 int 157 intel_translate_logic_op(GLenum opcode) 158 { 159 switch (opcode) { 160 case GL_CLEAR: 161 return LOGICOP_CLEAR; 162 case GL_AND: 163 return LOGICOP_AND; 164 case GL_AND_REVERSE: 165 return LOGICOP_AND_RVRSE; 166 case GL_COPY: 167 return LOGICOP_COPY; 168 case GL_COPY_INVERTED: 169 return LOGICOP_COPY_INV; 170 case GL_AND_INVERTED: 171 return LOGICOP_AND_INV; 172 case GL_NOOP: 173 return LOGICOP_NOOP; 174 case GL_XOR: 175 return LOGICOP_XOR; 176 case GL_OR: 177 return LOGICOP_OR; 178 case GL_OR_INVERTED: 179 return LOGICOP_OR_INV; 180 case GL_NOR: 181 return LOGICOP_NOR; 182 case GL_EQUIV: 183 return LOGICOP_EQUIV; 184 case GL_INVERT: 185 return LOGICOP_INV; 186 case GL_OR_REVERSE: 187 return LOGICOP_OR_RVRSE; 188 case GL_NAND: 189 return LOGICOP_NAND; 190 case GL_SET: 191 return LOGICOP_SET; 192 default: 193 return LOGICOP_SET; 194 } 195 } 196