xref: /aosp_15_r20/external/deqp/framework/opengl/simplereference/sglrReferenceUtils.cpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
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