1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL ES Utilities
3*35238bceSAndroid Build Coastguard Worker * ------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker *
5*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker *
7*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker *
11*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker *
13*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker *
19*35238bceSAndroid Build Coastguard Worker *//*!
20*35238bceSAndroid Build Coastguard Worker * \file
21*35238bceSAndroid Build Coastguard Worker * \brief Reference context utils
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "sglrReferenceUtils.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp"
26*35238bceSAndroid Build Coastguard Worker
27*35238bceSAndroid Build Coastguard Worker namespace sglr
28*35238bceSAndroid Build Coastguard Worker {
29*35238bceSAndroid Build Coastguard Worker namespace rr_util
30*35238bceSAndroid Build Coastguard Worker {
31*35238bceSAndroid Build Coastguard Worker
mapGLPureIntegerVertexAttributeType(uint32_t type)32*35238bceSAndroid Build Coastguard Worker rr::VertexAttribType mapGLPureIntegerVertexAttributeType(uint32_t type)
33*35238bceSAndroid Build Coastguard Worker {
34*35238bceSAndroid Build Coastguard Worker switch (type)
35*35238bceSAndroid Build Coastguard Worker {
36*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_BYTE:
37*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_PURE_UINT8;
38*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_SHORT:
39*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_PURE_UINT16;
40*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_INT:
41*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_PURE_UINT32;
42*35238bceSAndroid Build Coastguard Worker case GL_BYTE:
43*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_PURE_INT8;
44*35238bceSAndroid Build Coastguard Worker case GL_SHORT:
45*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_PURE_INT16;
46*35238bceSAndroid Build Coastguard Worker case GL_INT:
47*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_PURE_INT32;
48*35238bceSAndroid Build Coastguard Worker default:
49*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
50*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_LAST;
51*35238bceSAndroid Build Coastguard Worker }
52*35238bceSAndroid Build Coastguard Worker }
53*35238bceSAndroid Build Coastguard Worker
mapGLFloatVertexAttributeType(uint32_t type,bool normalizedInteger,int size,glu::ContextType ctxType)54*35238bceSAndroid Build Coastguard Worker rr::VertexAttribType mapGLFloatVertexAttributeType(uint32_t type, bool normalizedInteger, int size,
55*35238bceSAndroid Build Coastguard Worker glu::ContextType ctxType)
56*35238bceSAndroid Build Coastguard Worker {
57*35238bceSAndroid Build Coastguard Worker const bool useClampingNormalization = (ctxType.getProfile() == glu::PROFILE_ES && ctxType.getMajorVersion() >= 3) ||
58*35238bceSAndroid Build Coastguard Worker (ctxType.getMajorVersion() == 4 && ctxType.getMinorVersion() >= 2);
59*35238bceSAndroid Build Coastguard Worker const bool bgraComponentOrder = (size == GL_BGRA);
60*35238bceSAndroid Build Coastguard Worker
61*35238bceSAndroid Build Coastguard Worker switch (type)
62*35238bceSAndroid Build Coastguard Worker {
63*35238bceSAndroid Build Coastguard Worker case GL_FLOAT:
64*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_FLOAT;
65*35238bceSAndroid Build Coastguard Worker
66*35238bceSAndroid Build Coastguard Worker case GL_HALF_FLOAT:
67*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_HALF;
68*35238bceSAndroid Build Coastguard Worker
69*35238bceSAndroid Build Coastguard Worker case GL_FIXED:
70*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_FIXED;
71*35238bceSAndroid Build Coastguard Worker
72*35238bceSAndroid Build Coastguard Worker case GL_DOUBLE:
73*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_DOUBLE;
74*35238bceSAndroid Build Coastguard Worker
75*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_BYTE:
76*35238bceSAndroid Build Coastguard Worker if (!normalizedInteger)
77*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_UINT8;
78*35238bceSAndroid Build Coastguard Worker else
79*35238bceSAndroid Build Coastguard Worker return (!bgraComponentOrder) ? (rr::VERTEXATTRIBTYPE_NONPURE_UNORM8) :
80*35238bceSAndroid Build Coastguard Worker (rr::VERTEXATTRIBTYPE_NONPURE_UNORM8_BGRA);
81*35238bceSAndroid Build Coastguard Worker
82*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_SHORT:
83*35238bceSAndroid Build Coastguard Worker if (!normalizedInteger)
84*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_UINT16;
85*35238bceSAndroid Build Coastguard Worker else
86*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_UNORM16;
87*35238bceSAndroid Build Coastguard Worker
88*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_INT:
89*35238bceSAndroid Build Coastguard Worker if (!normalizedInteger)
90*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_UINT32;
91*35238bceSAndroid Build Coastguard Worker else
92*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_UNORM32;
93*35238bceSAndroid Build Coastguard Worker
94*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_INT_2_10_10_10_REV:
95*35238bceSAndroid Build Coastguard Worker if (!normalizedInteger)
96*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_UINT_2_10_10_10_REV;
97*35238bceSAndroid Build Coastguard Worker else
98*35238bceSAndroid Build Coastguard Worker return (!bgraComponentOrder) ? (rr::VERTEXATTRIBTYPE_NONPURE_UNORM_2_10_10_10_REV) :
99*35238bceSAndroid Build Coastguard Worker (rr::VERTEXATTRIBTYPE_NONPURE_UNORM_2_10_10_10_REV_BGRA);
100*35238bceSAndroid Build Coastguard Worker
101*35238bceSAndroid Build Coastguard Worker case GL_BYTE:
102*35238bceSAndroid Build Coastguard Worker if (!normalizedInteger)
103*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_INT8;
104*35238bceSAndroid Build Coastguard Worker else if (useClampingNormalization)
105*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_SNORM8_CLAMP;
106*35238bceSAndroid Build Coastguard Worker else
107*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_SNORM8_SCALE;
108*35238bceSAndroid Build Coastguard Worker
109*35238bceSAndroid Build Coastguard Worker case GL_SHORT:
110*35238bceSAndroid Build Coastguard Worker if (!normalizedInteger)
111*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_INT16;
112*35238bceSAndroid Build Coastguard Worker else if (useClampingNormalization)
113*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_SNORM16_CLAMP;
114*35238bceSAndroid Build Coastguard Worker else
115*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_SNORM16_SCALE;
116*35238bceSAndroid Build Coastguard Worker
117*35238bceSAndroid Build Coastguard Worker case GL_INT:
118*35238bceSAndroid Build Coastguard Worker if (!normalizedInteger)
119*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_INT32;
120*35238bceSAndroid Build Coastguard Worker else if (useClampingNormalization)
121*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_SNORM32_CLAMP;
122*35238bceSAndroid Build Coastguard Worker else
123*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_SNORM32_SCALE;
124*35238bceSAndroid Build Coastguard Worker
125*35238bceSAndroid Build Coastguard Worker case GL_INT_2_10_10_10_REV:
126*35238bceSAndroid Build Coastguard Worker if (!normalizedInteger)
127*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_NONPURE_INT_2_10_10_10_REV;
128*35238bceSAndroid Build Coastguard Worker else if (useClampingNormalization)
129*35238bceSAndroid Build Coastguard Worker return (!bgraComponentOrder) ? (rr::VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_CLAMP) :
130*35238bceSAndroid Build Coastguard Worker (rr::VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_CLAMP_BGRA);
131*35238bceSAndroid Build Coastguard Worker else
132*35238bceSAndroid Build Coastguard Worker return (!bgraComponentOrder) ? (rr::VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_SCALE) :
133*35238bceSAndroid Build Coastguard Worker (rr::VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_SCALE_BGRA);
134*35238bceSAndroid Build Coastguard Worker
135*35238bceSAndroid Build Coastguard Worker default:
136*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
137*35238bceSAndroid Build Coastguard Worker return rr::VERTEXATTRIBTYPE_LAST;
138*35238bceSAndroid Build Coastguard Worker }
139*35238bceSAndroid Build Coastguard Worker }
140*35238bceSAndroid Build Coastguard Worker
mapGLSize(int size)141*35238bceSAndroid Build Coastguard Worker int mapGLSize(int size)
142*35238bceSAndroid Build Coastguard Worker {
143*35238bceSAndroid Build Coastguard Worker switch (size)
144*35238bceSAndroid Build Coastguard Worker {
145*35238bceSAndroid Build Coastguard Worker case 1:
146*35238bceSAndroid Build Coastguard Worker return 1;
147*35238bceSAndroid Build Coastguard Worker case 2:
148*35238bceSAndroid Build Coastguard Worker return 2;
149*35238bceSAndroid Build Coastguard Worker case 3:
150*35238bceSAndroid Build Coastguard Worker return 3;
151*35238bceSAndroid Build Coastguard Worker case 4:
152*35238bceSAndroid Build Coastguard Worker return 4;
153*35238bceSAndroid Build Coastguard Worker case GL_BGRA:
154*35238bceSAndroid Build Coastguard Worker return 4;
155*35238bceSAndroid Build Coastguard Worker
156*35238bceSAndroid Build Coastguard Worker default:
157*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
158*35238bceSAndroid Build Coastguard Worker return 0;
159*35238bceSAndroid Build Coastguard Worker }
160*35238bceSAndroid Build Coastguard Worker }
161*35238bceSAndroid Build Coastguard Worker
mapGLPrimitiveType(uint32_t type)162*35238bceSAndroid Build Coastguard Worker rr::PrimitiveType mapGLPrimitiveType(uint32_t type)
163*35238bceSAndroid Build Coastguard Worker {
164*35238bceSAndroid Build Coastguard Worker switch (type)
165*35238bceSAndroid Build Coastguard Worker {
166*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLES:
167*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_TRIANGLES;
168*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLE_STRIP:
169*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_TRIANGLE_STRIP;
170*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLE_FAN:
171*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_TRIANGLE_FAN;
172*35238bceSAndroid Build Coastguard Worker case GL_LINES:
173*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_LINES;
174*35238bceSAndroid Build Coastguard Worker case GL_LINE_STRIP:
175*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_LINE_STRIP;
176*35238bceSAndroid Build Coastguard Worker case GL_LINE_LOOP:
177*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_LINE_LOOP;
178*35238bceSAndroid Build Coastguard Worker case GL_POINTS:
179*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_POINTS;
180*35238bceSAndroid Build Coastguard Worker case GL_LINES_ADJACENCY:
181*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_LINES_ADJACENCY;
182*35238bceSAndroid Build Coastguard Worker case GL_LINE_STRIP_ADJACENCY:
183*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_LINE_STRIP_ADJACENCY;
184*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLES_ADJACENCY:
185*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_TRIANGLES_ADJACENCY;
186*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLE_STRIP_ADJACENCY:
187*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_TRIANGLE_STRIP_ADJACENCY;
188*35238bceSAndroid Build Coastguard Worker default:
189*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
190*35238bceSAndroid Build Coastguard Worker return rr::PRIMITIVETYPE_LAST;
191*35238bceSAndroid Build Coastguard Worker }
192*35238bceSAndroid Build Coastguard Worker }
193*35238bceSAndroid Build Coastguard Worker
mapGLIndexType(uint32_t type)194*35238bceSAndroid Build Coastguard Worker rr::IndexType mapGLIndexType(uint32_t type)
195*35238bceSAndroid Build Coastguard Worker {
196*35238bceSAndroid Build Coastguard Worker switch (type)
197*35238bceSAndroid Build Coastguard Worker {
198*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_BYTE:
199*35238bceSAndroid Build Coastguard Worker return rr::INDEXTYPE_UINT8;
200*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_SHORT:
201*35238bceSAndroid Build Coastguard Worker return rr::INDEXTYPE_UINT16;
202*35238bceSAndroid Build Coastguard Worker case GL_UNSIGNED_INT:
203*35238bceSAndroid Build Coastguard Worker return rr::INDEXTYPE_UINT32;
204*35238bceSAndroid Build Coastguard Worker default:
205*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
206*35238bceSAndroid Build Coastguard Worker return rr::INDEXTYPE_LAST;
207*35238bceSAndroid Build Coastguard Worker }
208*35238bceSAndroid Build Coastguard Worker }
209*35238bceSAndroid Build Coastguard Worker
mapGLGeometryShaderOutputType(uint32_t primitive)210*35238bceSAndroid Build Coastguard Worker rr::GeometryShaderOutputType mapGLGeometryShaderOutputType(uint32_t primitive)
211*35238bceSAndroid Build Coastguard Worker {
212*35238bceSAndroid Build Coastguard Worker switch (primitive)
213*35238bceSAndroid Build Coastguard Worker {
214*35238bceSAndroid Build Coastguard Worker case GL_POINTS:
215*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADEROUTPUTTYPE_POINTS;
216*35238bceSAndroid Build Coastguard Worker case GL_LINE_STRIP:
217*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADEROUTPUTTYPE_LINE_STRIP;
218*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLE_STRIP:
219*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADEROUTPUTTYPE_TRIANGLE_STRIP;
220*35238bceSAndroid Build Coastguard Worker default:
221*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
222*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADEROUTPUTTYPE_LAST;
223*35238bceSAndroid Build Coastguard Worker }
224*35238bceSAndroid Build Coastguard Worker }
225*35238bceSAndroid Build Coastguard Worker
mapGLGeometryShaderInputType(uint32_t primitive)226*35238bceSAndroid Build Coastguard Worker rr::GeometryShaderInputType mapGLGeometryShaderInputType(uint32_t primitive)
227*35238bceSAndroid Build Coastguard Worker {
228*35238bceSAndroid Build Coastguard Worker switch (primitive)
229*35238bceSAndroid Build Coastguard Worker {
230*35238bceSAndroid Build Coastguard Worker case GL_POINTS:
231*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_POINTS;
232*35238bceSAndroid Build Coastguard Worker case GL_LINES:
233*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_LINES;
234*35238bceSAndroid Build Coastguard Worker case GL_LINE_STRIP:
235*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_LINES;
236*35238bceSAndroid Build Coastguard Worker case GL_LINE_LOOP:
237*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_LINES;
238*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLES:
239*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES;
240*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLE_STRIP:
241*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES;
242*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLE_FAN:
243*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES;
244*35238bceSAndroid Build Coastguard Worker case GL_LINES_ADJACENCY:
245*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_LINES_ADJACENCY;
246*35238bceSAndroid Build Coastguard Worker case GL_LINE_STRIP_ADJACENCY:
247*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_LINES_ADJACENCY;
248*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLES_ADJACENCY:
249*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES_ADJACENCY;
250*35238bceSAndroid Build Coastguard Worker case GL_TRIANGLE_STRIP_ADJACENCY:
251*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES_ADJACENCY;
252*35238bceSAndroid Build Coastguard Worker default:
253*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
254*35238bceSAndroid Build Coastguard Worker return rr::GEOMETRYSHADERINPUTTYPE_LAST;
255*35238bceSAndroid Build Coastguard Worker }
256*35238bceSAndroid Build Coastguard Worker }
257*35238bceSAndroid Build Coastguard Worker
mapGLTestFunc(uint32_t func)258*35238bceSAndroid Build Coastguard Worker rr::TestFunc mapGLTestFunc(uint32_t func)
259*35238bceSAndroid Build Coastguard Worker {
260*35238bceSAndroid Build Coastguard Worker switch (func)
261*35238bceSAndroid Build Coastguard Worker {
262*35238bceSAndroid Build Coastguard Worker case GL_ALWAYS:
263*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_ALWAYS;
264*35238bceSAndroid Build Coastguard Worker case GL_EQUAL:
265*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_EQUAL;
266*35238bceSAndroid Build Coastguard Worker case GL_GEQUAL:
267*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_GEQUAL;
268*35238bceSAndroid Build Coastguard Worker case GL_GREATER:
269*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_GREATER;
270*35238bceSAndroid Build Coastguard Worker case GL_LEQUAL:
271*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_LEQUAL;
272*35238bceSAndroid Build Coastguard Worker case GL_LESS:
273*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_LESS;
274*35238bceSAndroid Build Coastguard Worker case GL_NEVER:
275*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_NEVER;
276*35238bceSAndroid Build Coastguard Worker case GL_NOTEQUAL:
277*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_NOTEQUAL;
278*35238bceSAndroid Build Coastguard Worker default:
279*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
280*35238bceSAndroid Build Coastguard Worker return rr::TESTFUNC_LAST;
281*35238bceSAndroid Build Coastguard Worker }
282*35238bceSAndroid Build Coastguard Worker }
283*35238bceSAndroid Build Coastguard Worker
mapGLStencilOp(uint32_t op)284*35238bceSAndroid Build Coastguard Worker rr::StencilOp mapGLStencilOp(uint32_t op)
285*35238bceSAndroid Build Coastguard Worker {
286*35238bceSAndroid Build Coastguard Worker switch (op)
287*35238bceSAndroid Build Coastguard Worker {
288*35238bceSAndroid Build Coastguard Worker case GL_KEEP:
289*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_KEEP;
290*35238bceSAndroid Build Coastguard Worker case GL_ZERO:
291*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_ZERO;
292*35238bceSAndroid Build Coastguard Worker case GL_REPLACE:
293*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_REPLACE;
294*35238bceSAndroid Build Coastguard Worker case GL_INCR:
295*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_INCR;
296*35238bceSAndroid Build Coastguard Worker case GL_DECR:
297*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_DECR;
298*35238bceSAndroid Build Coastguard Worker case GL_INCR_WRAP:
299*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_INCR_WRAP;
300*35238bceSAndroid Build Coastguard Worker case GL_DECR_WRAP:
301*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_DECR_WRAP;
302*35238bceSAndroid Build Coastguard Worker case GL_INVERT:
303*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_INVERT;
304*35238bceSAndroid Build Coastguard Worker default:
305*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
306*35238bceSAndroid Build Coastguard Worker return rr::STENCILOP_LAST;
307*35238bceSAndroid Build Coastguard Worker }
308*35238bceSAndroid Build Coastguard Worker }
309*35238bceSAndroid Build Coastguard Worker
mapGLBlendEquation(uint32_t equation)310*35238bceSAndroid Build Coastguard Worker rr::BlendEquation mapGLBlendEquation(uint32_t equation)
311*35238bceSAndroid Build Coastguard Worker {
312*35238bceSAndroid Build Coastguard Worker switch (equation)
313*35238bceSAndroid Build Coastguard Worker {
314*35238bceSAndroid Build Coastguard Worker case GL_FUNC_ADD:
315*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADD;
316*35238bceSAndroid Build Coastguard Worker case GL_FUNC_SUBTRACT:
317*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_SUBTRACT;
318*35238bceSAndroid Build Coastguard Worker case GL_FUNC_REVERSE_SUBTRACT:
319*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_REVERSE_SUBTRACT;
320*35238bceSAndroid Build Coastguard Worker case GL_MIN:
321*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_MIN;
322*35238bceSAndroid Build Coastguard Worker case GL_MAX:
323*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_MAX;
324*35238bceSAndroid Build Coastguard Worker default:
325*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
326*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_LAST;
327*35238bceSAndroid Build Coastguard Worker }
328*35238bceSAndroid Build Coastguard Worker }
329*35238bceSAndroid Build Coastguard Worker
mapGLBlendEquationAdvanced(uint32_t equation)330*35238bceSAndroid Build Coastguard Worker rr::BlendEquationAdvanced mapGLBlendEquationAdvanced(uint32_t equation)
331*35238bceSAndroid Build Coastguard Worker {
332*35238bceSAndroid Build Coastguard Worker switch (equation)
333*35238bceSAndroid Build Coastguard Worker {
334*35238bceSAndroid Build Coastguard Worker case GL_MULTIPLY_KHR:
335*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_MULTIPLY;
336*35238bceSAndroid Build Coastguard Worker case GL_SCREEN_KHR:
337*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_SCREEN;
338*35238bceSAndroid Build Coastguard Worker case GL_OVERLAY_KHR:
339*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_OVERLAY;
340*35238bceSAndroid Build Coastguard Worker case GL_DARKEN_KHR:
341*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_DARKEN;
342*35238bceSAndroid Build Coastguard Worker case GL_LIGHTEN_KHR:
343*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_LIGHTEN;
344*35238bceSAndroid Build Coastguard Worker case GL_COLORDODGE_KHR:
345*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_COLORDODGE;
346*35238bceSAndroid Build Coastguard Worker case GL_COLORBURN_KHR:
347*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_COLORBURN;
348*35238bceSAndroid Build Coastguard Worker case GL_HARDLIGHT_KHR:
349*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_HARDLIGHT;
350*35238bceSAndroid Build Coastguard Worker case GL_SOFTLIGHT_KHR:
351*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_SOFTLIGHT;
352*35238bceSAndroid Build Coastguard Worker case GL_DIFFERENCE_KHR:
353*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_DIFFERENCE;
354*35238bceSAndroid Build Coastguard Worker case GL_EXCLUSION_KHR:
355*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_EXCLUSION;
356*35238bceSAndroid Build Coastguard Worker case GL_HSL_HUE_KHR:
357*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_HSL_HUE;
358*35238bceSAndroid Build Coastguard Worker case GL_HSL_SATURATION_KHR:
359*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_HSL_SATURATION;
360*35238bceSAndroid Build Coastguard Worker case GL_HSL_COLOR_KHR:
361*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_HSL_COLOR;
362*35238bceSAndroid Build Coastguard Worker case GL_HSL_LUMINOSITY_KHR:
363*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_HSL_LUMINOSITY;
364*35238bceSAndroid Build Coastguard Worker default:
365*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
366*35238bceSAndroid Build Coastguard Worker return rr::BLENDEQUATION_ADVANCED_LAST;
367*35238bceSAndroid Build Coastguard Worker }
368*35238bceSAndroid Build Coastguard Worker }
369*35238bceSAndroid Build Coastguard Worker
mapGLBlendFunc(uint32_t func)370*35238bceSAndroid Build Coastguard Worker rr::BlendFunc mapGLBlendFunc(uint32_t func)
371*35238bceSAndroid Build Coastguard Worker {
372*35238bceSAndroid Build Coastguard Worker switch (func)
373*35238bceSAndroid Build Coastguard Worker {
374*35238bceSAndroid Build Coastguard Worker case GL_ZERO:
375*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ZERO;
376*35238bceSAndroid Build Coastguard Worker case GL_ONE:
377*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE;
378*35238bceSAndroid Build Coastguard Worker case GL_SRC_COLOR:
379*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_SRC_COLOR;
380*35238bceSAndroid Build Coastguard Worker case GL_ONE_MINUS_SRC_COLOR:
381*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE_MINUS_SRC_COLOR;
382*35238bceSAndroid Build Coastguard Worker case GL_DST_COLOR:
383*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_DST_COLOR;
384*35238bceSAndroid Build Coastguard Worker case GL_ONE_MINUS_DST_COLOR:
385*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE_MINUS_DST_COLOR;
386*35238bceSAndroid Build Coastguard Worker case GL_SRC_ALPHA:
387*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_SRC_ALPHA;
388*35238bceSAndroid Build Coastguard Worker case GL_ONE_MINUS_SRC_ALPHA:
389*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE_MINUS_SRC_ALPHA;
390*35238bceSAndroid Build Coastguard Worker case GL_DST_ALPHA:
391*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_DST_ALPHA;
392*35238bceSAndroid Build Coastguard Worker case GL_ONE_MINUS_DST_ALPHA:
393*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE_MINUS_DST_ALPHA;
394*35238bceSAndroid Build Coastguard Worker case GL_CONSTANT_COLOR:
395*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_CONSTANT_COLOR;
396*35238bceSAndroid Build Coastguard Worker case GL_ONE_MINUS_CONSTANT_COLOR:
397*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE_MINUS_CONSTANT_COLOR;
398*35238bceSAndroid Build Coastguard Worker case GL_CONSTANT_ALPHA:
399*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_CONSTANT_ALPHA;
400*35238bceSAndroid Build Coastguard Worker case GL_ONE_MINUS_CONSTANT_ALPHA:
401*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE_MINUS_CONSTANT_ALPHA;
402*35238bceSAndroid Build Coastguard Worker case GL_SRC_ALPHA_SATURATE:
403*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_SRC_ALPHA_SATURATE;
404*35238bceSAndroid Build Coastguard Worker case GL_SRC1_COLOR:
405*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_SRC1_COLOR;
406*35238bceSAndroid Build Coastguard Worker case GL_ONE_MINUS_SRC1_COLOR:
407*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE_MINUS_SRC1_COLOR;
408*35238bceSAndroid Build Coastguard Worker case GL_SRC1_ALPHA:
409*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_SRC1_ALPHA;
410*35238bceSAndroid Build Coastguard Worker case GL_ONE_MINUS_SRC1_ALPHA:
411*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_ONE_MINUS_SRC1_ALPHA;
412*35238bceSAndroid Build Coastguard Worker default:
413*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
414*35238bceSAndroid Build Coastguard Worker return rr::BLENDFUNC_LAST;
415*35238bceSAndroid Build Coastguard Worker }
416*35238bceSAndroid Build Coastguard Worker }
417*35238bceSAndroid Build Coastguard Worker
418*35238bceSAndroid Build Coastguard Worker } // namespace rr_util
419*35238bceSAndroid Build Coastguard Worker } // namespace sglr
420