1 /**************************************************************************
2 *
3 * Copyright 2003 VMware, Inc.
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 VMWARE 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/dd.h"
34
35 #include "intel_screen.h"
36 #include "intel_context.h"
37
38 int
intel_translate_shadow_compare_func(GLenum func)39 intel_translate_shadow_compare_func(GLenum func)
40 {
41 switch (func) {
42 case GL_NEVER:
43 return COMPAREFUNC_ALWAYS;
44 case GL_LESS:
45 return COMPAREFUNC_LEQUAL;
46 case GL_LEQUAL:
47 return COMPAREFUNC_LESS;
48 case GL_GREATER:
49 return COMPAREFUNC_GEQUAL;
50 case GL_GEQUAL:
51 return COMPAREFUNC_GREATER;
52 case GL_NOTEQUAL:
53 return COMPAREFUNC_EQUAL;
54 case GL_EQUAL:
55 return COMPAREFUNC_NOTEQUAL;
56 case GL_ALWAYS:
57 return COMPAREFUNC_NEVER;
58 }
59
60 fprintf(stderr, "Unknown value in %s: %x\n", __func__, func);
61 return COMPAREFUNC_NEVER;
62 }
63
64 int
intel_translate_compare_func(GLenum func)65 intel_translate_compare_func(GLenum func)
66 {
67 switch (func) {
68 case GL_NEVER:
69 return COMPAREFUNC_NEVER;
70 case GL_LESS:
71 return COMPAREFUNC_LESS;
72 case GL_LEQUAL:
73 return COMPAREFUNC_LEQUAL;
74 case GL_GREATER:
75 return COMPAREFUNC_GREATER;
76 case GL_GEQUAL:
77 return COMPAREFUNC_GEQUAL;
78 case GL_NOTEQUAL:
79 return COMPAREFUNC_NOTEQUAL;
80 case GL_EQUAL:
81 return COMPAREFUNC_EQUAL;
82 case GL_ALWAYS:
83 return COMPAREFUNC_ALWAYS;
84 }
85
86 fprintf(stderr, "Unknown value in %s: %x\n", __func__, func);
87 return COMPAREFUNC_ALWAYS;
88 }
89
90 int
intel_translate_stencil_op(GLenum op)91 intel_translate_stencil_op(GLenum op)
92 {
93 switch (op) {
94 case GL_KEEP:
95 return STENCILOP_KEEP;
96 case GL_ZERO:
97 return STENCILOP_ZERO;
98 case GL_REPLACE:
99 return STENCILOP_REPLACE;
100 case GL_INCR:
101 return STENCILOP_INCRSAT;
102 case GL_DECR:
103 return STENCILOP_DECRSAT;
104 case GL_INCR_WRAP:
105 return STENCILOP_INCR;
106 case GL_DECR_WRAP:
107 return STENCILOP_DECR;
108 case GL_INVERT:
109 return STENCILOP_INVERT;
110 default:
111 return STENCILOP_ZERO;
112 }
113 }
114
115 int
intel_translate_blend_factor(GLenum factor)116 intel_translate_blend_factor(GLenum factor)
117 {
118 switch (factor) {
119 case GL_ZERO:
120 return BLENDFACT_ZERO;
121 case GL_SRC_ALPHA:
122 return BLENDFACT_SRC_ALPHA;
123 case GL_ONE:
124 return BLENDFACT_ONE;
125 case GL_SRC_COLOR:
126 return BLENDFACT_SRC_COLR;
127 case GL_ONE_MINUS_SRC_COLOR:
128 return BLENDFACT_INV_SRC_COLR;
129 case GL_DST_COLOR:
130 return BLENDFACT_DST_COLR;
131 case GL_ONE_MINUS_DST_COLOR:
132 return BLENDFACT_INV_DST_COLR;
133 case GL_ONE_MINUS_SRC_ALPHA:
134 return BLENDFACT_INV_SRC_ALPHA;
135 case GL_DST_ALPHA:
136 return BLENDFACT_DST_ALPHA;
137 case GL_ONE_MINUS_DST_ALPHA:
138 return BLENDFACT_INV_DST_ALPHA;
139 case GL_SRC_ALPHA_SATURATE:
140 return BLENDFACT_SRC_ALPHA_SATURATE;
141 case GL_CONSTANT_COLOR:
142 return BLENDFACT_CONST_COLOR;
143 case GL_ONE_MINUS_CONSTANT_COLOR:
144 return BLENDFACT_INV_CONST_COLOR;
145 case GL_CONSTANT_ALPHA:
146 return BLENDFACT_CONST_ALPHA;
147 case GL_ONE_MINUS_CONSTANT_ALPHA:
148 return BLENDFACT_INV_CONST_ALPHA;
149 }
150
151 fprintf(stderr, "Unknown value in %s: %x\n", __func__, factor);
152 return BLENDFACT_ZERO;
153 }
154
155 int
intel_translate_logic_op(GLenum opcode)156 intel_translate_logic_op(GLenum opcode)
157 {
158 switch (opcode) {
159 case GL_CLEAR:
160 return LOGICOP_CLEAR;
161 case GL_AND:
162 return LOGICOP_AND;
163 case GL_AND_REVERSE:
164 return LOGICOP_AND_RVRSE;
165 case GL_COPY:
166 return LOGICOP_COPY;
167 case GL_COPY_INVERTED:
168 return LOGICOP_COPY_INV;
169 case GL_AND_INVERTED:
170 return LOGICOP_AND_INV;
171 case GL_NOOP:
172 return LOGICOP_NOOP;
173 case GL_XOR:
174 return LOGICOP_XOR;
175 case GL_OR:
176 return LOGICOP_OR;
177 case GL_OR_INVERTED:
178 return LOGICOP_OR_INV;
179 case GL_NOR:
180 return LOGICOP_NOR;
181 case GL_EQUIV:
182 return LOGICOP_EQUIV;
183 case GL_INVERT:
184 return LOGICOP_INV;
185 case GL_OR_REVERSE:
186 return LOGICOP_OR_RVRSE;
187 case GL_NAND:
188 return LOGICOP_NAND;
189 case GL_SET:
190 return LOGICOP_SET;
191 default:
192 return LOGICOP_SET;
193 }
194 }
195