1*8975f5c5SAndroid Build Coastguard Worker // Copyright 2018 The ANGLE Project Authors. All rights reserved.
2*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
4*8975f5c5SAndroid Build Coastguard Worker //
5*8975f5c5SAndroid Build Coastguard Worker // PackedGLEnums.cpp:
6*8975f5c5SAndroid Build Coastguard Worker // Declares ANGLE-specific enums classes for GLEnum and functions operating
7*8975f5c5SAndroid Build Coastguard Worker // on them.
8*8975f5c5SAndroid Build Coastguard Worker
9*8975f5c5SAndroid Build Coastguard Worker #include "common/PackedEnums.h"
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker #include "common/utilities.h"
12*8975f5c5SAndroid Build Coastguard Worker
13*8975f5c5SAndroid Build Coastguard Worker namespace gl
14*8975f5c5SAndroid Build Coastguard Worker {
15*8975f5c5SAndroid Build Coastguard Worker
TextureTargetToType(TextureTarget target)16*8975f5c5SAndroid Build Coastguard Worker TextureType TextureTargetToType(TextureTarget target)
17*8975f5c5SAndroid Build Coastguard Worker {
18*8975f5c5SAndroid Build Coastguard Worker switch (target)
19*8975f5c5SAndroid Build Coastguard Worker {
20*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::CubeMapNegativeX:
21*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::CubeMapNegativeY:
22*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::CubeMapNegativeZ:
23*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::CubeMapPositiveX:
24*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::CubeMapPositiveY:
25*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::CubeMapPositiveZ:
26*8975f5c5SAndroid Build Coastguard Worker return TextureType::CubeMap;
27*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::CubeMapArray:
28*8975f5c5SAndroid Build Coastguard Worker return TextureType::CubeMapArray;
29*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::External:
30*8975f5c5SAndroid Build Coastguard Worker return TextureType::External;
31*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::Rectangle:
32*8975f5c5SAndroid Build Coastguard Worker return TextureType::Rectangle;
33*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::_2D:
34*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2D;
35*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::_2DArray:
36*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2DArray;
37*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::_2DMultisample:
38*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2DMultisample;
39*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::_2DMultisampleArray:
40*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2DMultisampleArray;
41*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::_3D:
42*8975f5c5SAndroid Build Coastguard Worker return TextureType::_3D;
43*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::VideoImage:
44*8975f5c5SAndroid Build Coastguard Worker return TextureType::VideoImage;
45*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::Buffer:
46*8975f5c5SAndroid Build Coastguard Worker return TextureType::Buffer;
47*8975f5c5SAndroid Build Coastguard Worker case TextureTarget::InvalidEnum:
48*8975f5c5SAndroid Build Coastguard Worker return TextureType::InvalidEnum;
49*8975f5c5SAndroid Build Coastguard Worker default:
50*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
51*8975f5c5SAndroid Build Coastguard Worker return TextureType::InvalidEnum;
52*8975f5c5SAndroid Build Coastguard Worker }
53*8975f5c5SAndroid Build Coastguard Worker }
54*8975f5c5SAndroid Build Coastguard Worker
IsCubeMapFaceTarget(TextureTarget target)55*8975f5c5SAndroid Build Coastguard Worker bool IsCubeMapFaceTarget(TextureTarget target)
56*8975f5c5SAndroid Build Coastguard Worker {
57*8975f5c5SAndroid Build Coastguard Worker return TextureTargetToType(target) == TextureType::CubeMap;
58*8975f5c5SAndroid Build Coastguard Worker }
59*8975f5c5SAndroid Build Coastguard Worker
NonCubeTextureTypeToTarget(TextureType type)60*8975f5c5SAndroid Build Coastguard Worker TextureTarget NonCubeTextureTypeToTarget(TextureType type)
61*8975f5c5SAndroid Build Coastguard Worker {
62*8975f5c5SAndroid Build Coastguard Worker switch (type)
63*8975f5c5SAndroid Build Coastguard Worker {
64*8975f5c5SAndroid Build Coastguard Worker case TextureType::External:
65*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::External;
66*8975f5c5SAndroid Build Coastguard Worker case TextureType::Rectangle:
67*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::Rectangle;
68*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2D:
69*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::_2D;
70*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DArray:
71*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::_2DArray;
72*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DMultisample:
73*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::_2DMultisample;
74*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DMultisampleArray:
75*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::_2DMultisampleArray;
76*8975f5c5SAndroid Build Coastguard Worker case TextureType::_3D:
77*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::_3D;
78*8975f5c5SAndroid Build Coastguard Worker case TextureType::CubeMapArray:
79*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::CubeMapArray;
80*8975f5c5SAndroid Build Coastguard Worker case TextureType::VideoImage:
81*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::VideoImage;
82*8975f5c5SAndroid Build Coastguard Worker case TextureType::Buffer:
83*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::Buffer;
84*8975f5c5SAndroid Build Coastguard Worker default:
85*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
86*8975f5c5SAndroid Build Coastguard Worker return TextureTarget::InvalidEnum;
87*8975f5c5SAndroid Build Coastguard Worker }
88*8975f5c5SAndroid Build Coastguard Worker }
89*8975f5c5SAndroid Build Coastguard Worker
90*8975f5c5SAndroid Build Coastguard Worker // Check that we can do arithmetic on TextureTarget to convert from / to cube map faces
91*8975f5c5SAndroid Build Coastguard Worker static_assert(static_cast<uint8_t>(TextureTarget::CubeMapNegativeX) -
92*8975f5c5SAndroid Build Coastguard Worker static_cast<uint8_t>(TextureTarget::CubeMapPositiveX) ==
93*8975f5c5SAndroid Build Coastguard Worker 1u,
94*8975f5c5SAndroid Build Coastguard Worker "");
95*8975f5c5SAndroid Build Coastguard Worker static_assert(static_cast<uint8_t>(TextureTarget::CubeMapPositiveY) -
96*8975f5c5SAndroid Build Coastguard Worker static_cast<uint8_t>(TextureTarget::CubeMapPositiveX) ==
97*8975f5c5SAndroid Build Coastguard Worker 2u,
98*8975f5c5SAndroid Build Coastguard Worker "");
99*8975f5c5SAndroid Build Coastguard Worker static_assert(static_cast<uint8_t>(TextureTarget::CubeMapNegativeY) -
100*8975f5c5SAndroid Build Coastguard Worker static_cast<uint8_t>(TextureTarget::CubeMapPositiveX) ==
101*8975f5c5SAndroid Build Coastguard Worker 3u,
102*8975f5c5SAndroid Build Coastguard Worker "");
103*8975f5c5SAndroid Build Coastguard Worker static_assert(static_cast<uint8_t>(TextureTarget::CubeMapPositiveZ) -
104*8975f5c5SAndroid Build Coastguard Worker static_cast<uint8_t>(TextureTarget::CubeMapPositiveX) ==
105*8975f5c5SAndroid Build Coastguard Worker 4u,
106*8975f5c5SAndroid Build Coastguard Worker "");
107*8975f5c5SAndroid Build Coastguard Worker static_assert(static_cast<uint8_t>(TextureTarget::CubeMapNegativeZ) -
108*8975f5c5SAndroid Build Coastguard Worker static_cast<uint8_t>(TextureTarget::CubeMapPositiveX) ==
109*8975f5c5SAndroid Build Coastguard Worker 5u,
110*8975f5c5SAndroid Build Coastguard Worker "");
111*8975f5c5SAndroid Build Coastguard Worker
CubeFaceIndexToTextureTarget(size_t face)112*8975f5c5SAndroid Build Coastguard Worker TextureTarget CubeFaceIndexToTextureTarget(size_t face)
113*8975f5c5SAndroid Build Coastguard Worker {
114*8975f5c5SAndroid Build Coastguard Worker ASSERT(face < 6u);
115*8975f5c5SAndroid Build Coastguard Worker return static_cast<TextureTarget>(static_cast<uint8_t>(TextureTarget::CubeMapPositiveX) + face);
116*8975f5c5SAndroid Build Coastguard Worker }
117*8975f5c5SAndroid Build Coastguard Worker
CubeMapTextureTargetToFaceIndex(TextureTarget target)118*8975f5c5SAndroid Build Coastguard Worker size_t CubeMapTextureTargetToFaceIndex(TextureTarget target)
119*8975f5c5SAndroid Build Coastguard Worker {
120*8975f5c5SAndroid Build Coastguard Worker ASSERT(IsCubeMapFaceTarget(target));
121*8975f5c5SAndroid Build Coastguard Worker return static_cast<uint8_t>(target) - static_cast<uint8_t>(TextureTarget::CubeMapPositiveX);
122*8975f5c5SAndroid Build Coastguard Worker }
123*8975f5c5SAndroid Build Coastguard Worker
SamplerTypeToTextureType(GLenum samplerType)124*8975f5c5SAndroid Build Coastguard Worker TextureType SamplerTypeToTextureType(GLenum samplerType)
125*8975f5c5SAndroid Build Coastguard Worker {
126*8975f5c5SAndroid Build Coastguard Worker switch (samplerType)
127*8975f5c5SAndroid Build Coastguard Worker {
128*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_2D:
129*8975f5c5SAndroid Build Coastguard Worker case GL_INT_SAMPLER_2D:
130*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_SAMPLER_2D:
131*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_2D_SHADOW:
132*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2D;
133*8975f5c5SAndroid Build Coastguard Worker
134*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_EXTERNAL_OES:
135*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT:
136*8975f5c5SAndroid Build Coastguard Worker return TextureType::External;
137*8975f5c5SAndroid Build Coastguard Worker
138*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_CUBE:
139*8975f5c5SAndroid Build Coastguard Worker case GL_INT_SAMPLER_CUBE:
140*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_SAMPLER_CUBE:
141*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_CUBE_SHADOW:
142*8975f5c5SAndroid Build Coastguard Worker return TextureType::CubeMap;
143*8975f5c5SAndroid Build Coastguard Worker
144*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_CUBE_MAP_ARRAY:
145*8975f5c5SAndroid Build Coastguard Worker case GL_INT_SAMPLER_CUBE_MAP_ARRAY:
146*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY:
147*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW:
148*8975f5c5SAndroid Build Coastguard Worker return TextureType::CubeMapArray;
149*8975f5c5SAndroid Build Coastguard Worker
150*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_2D_ARRAY:
151*8975f5c5SAndroid Build Coastguard Worker case GL_INT_SAMPLER_2D_ARRAY:
152*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
153*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_2D_ARRAY_SHADOW:
154*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2DArray;
155*8975f5c5SAndroid Build Coastguard Worker
156*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_3D:
157*8975f5c5SAndroid Build Coastguard Worker case GL_INT_SAMPLER_3D:
158*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_SAMPLER_3D:
159*8975f5c5SAndroid Build Coastguard Worker return TextureType::_3D;
160*8975f5c5SAndroid Build Coastguard Worker
161*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_2D_MULTISAMPLE:
162*8975f5c5SAndroid Build Coastguard Worker case GL_INT_SAMPLER_2D_MULTISAMPLE:
163*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
164*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2DMultisample;
165*8975f5c5SAndroid Build Coastguard Worker
166*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_2D_MULTISAMPLE_ARRAY:
167*8975f5c5SAndroid Build Coastguard Worker case GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY:
168*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY:
169*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2DMultisampleArray;
170*8975f5c5SAndroid Build Coastguard Worker
171*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_BUFFER:
172*8975f5c5SAndroid Build Coastguard Worker case GL_INT_SAMPLER_BUFFER:
173*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_SAMPLER_BUFFER:
174*8975f5c5SAndroid Build Coastguard Worker return TextureType::Buffer;
175*8975f5c5SAndroid Build Coastguard Worker
176*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_2D_RECT_ANGLE:
177*8975f5c5SAndroid Build Coastguard Worker return TextureType::Rectangle;
178*8975f5c5SAndroid Build Coastguard Worker
179*8975f5c5SAndroid Build Coastguard Worker case GL_SAMPLER_VIDEO_IMAGE_WEBGL:
180*8975f5c5SAndroid Build Coastguard Worker return TextureType::VideoImage;
181*8975f5c5SAndroid Build Coastguard Worker
182*8975f5c5SAndroid Build Coastguard Worker default:
183*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
184*8975f5c5SAndroid Build Coastguard Worker return TextureType::InvalidEnum;
185*8975f5c5SAndroid Build Coastguard Worker }
186*8975f5c5SAndroid Build Coastguard Worker }
187*8975f5c5SAndroid Build Coastguard Worker
ImageTypeToTextureType(GLenum imageType)188*8975f5c5SAndroid Build Coastguard Worker TextureType ImageTypeToTextureType(GLenum imageType)
189*8975f5c5SAndroid Build Coastguard Worker {
190*8975f5c5SAndroid Build Coastguard Worker switch (imageType)
191*8975f5c5SAndroid Build Coastguard Worker {
192*8975f5c5SAndroid Build Coastguard Worker case GL_IMAGE_2D:
193*8975f5c5SAndroid Build Coastguard Worker case GL_INT_IMAGE_2D:
194*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_IMAGE_2D:
195*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2D;
196*8975f5c5SAndroid Build Coastguard Worker
197*8975f5c5SAndroid Build Coastguard Worker case GL_IMAGE_CUBE:
198*8975f5c5SAndroid Build Coastguard Worker case GL_INT_IMAGE_CUBE:
199*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_IMAGE_CUBE:
200*8975f5c5SAndroid Build Coastguard Worker return TextureType::CubeMap;
201*8975f5c5SAndroid Build Coastguard Worker
202*8975f5c5SAndroid Build Coastguard Worker case GL_IMAGE_CUBE_MAP_ARRAY:
203*8975f5c5SAndroid Build Coastguard Worker case GL_INT_IMAGE_CUBE_MAP_ARRAY:
204*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY:
205*8975f5c5SAndroid Build Coastguard Worker return TextureType::CubeMapArray;
206*8975f5c5SAndroid Build Coastguard Worker
207*8975f5c5SAndroid Build Coastguard Worker case GL_IMAGE_2D_ARRAY:
208*8975f5c5SAndroid Build Coastguard Worker case GL_INT_IMAGE_2D_ARRAY:
209*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_IMAGE_2D_ARRAY:
210*8975f5c5SAndroid Build Coastguard Worker return TextureType::_2DArray;
211*8975f5c5SAndroid Build Coastguard Worker
212*8975f5c5SAndroid Build Coastguard Worker case GL_IMAGE_3D:
213*8975f5c5SAndroid Build Coastguard Worker case GL_INT_IMAGE_3D:
214*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_IMAGE_3D:
215*8975f5c5SAndroid Build Coastguard Worker return TextureType::_3D;
216*8975f5c5SAndroid Build Coastguard Worker
217*8975f5c5SAndroid Build Coastguard Worker case GL_IMAGE_BUFFER:
218*8975f5c5SAndroid Build Coastguard Worker case GL_INT_IMAGE_BUFFER:
219*8975f5c5SAndroid Build Coastguard Worker case GL_UNSIGNED_INT_IMAGE_BUFFER:
220*8975f5c5SAndroid Build Coastguard Worker return TextureType::Buffer;
221*8975f5c5SAndroid Build Coastguard Worker
222*8975f5c5SAndroid Build Coastguard Worker default:
223*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
224*8975f5c5SAndroid Build Coastguard Worker return TextureType::InvalidEnum;
225*8975f5c5SAndroid Build Coastguard Worker }
226*8975f5c5SAndroid Build Coastguard Worker }
227*8975f5c5SAndroid Build Coastguard Worker
IsMultisampled(TextureType type)228*8975f5c5SAndroid Build Coastguard Worker bool IsMultisampled(TextureType type)
229*8975f5c5SAndroid Build Coastguard Worker {
230*8975f5c5SAndroid Build Coastguard Worker switch (type)
231*8975f5c5SAndroid Build Coastguard Worker {
232*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DMultisample:
233*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DMultisampleArray:
234*8975f5c5SAndroid Build Coastguard Worker return true;
235*8975f5c5SAndroid Build Coastguard Worker default:
236*8975f5c5SAndroid Build Coastguard Worker return false;
237*8975f5c5SAndroid Build Coastguard Worker }
238*8975f5c5SAndroid Build Coastguard Worker }
239*8975f5c5SAndroid Build Coastguard Worker
IsArrayTextureType(TextureType type)240*8975f5c5SAndroid Build Coastguard Worker bool IsArrayTextureType(TextureType type)
241*8975f5c5SAndroid Build Coastguard Worker {
242*8975f5c5SAndroid Build Coastguard Worker switch (type)
243*8975f5c5SAndroid Build Coastguard Worker {
244*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DArray:
245*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DMultisampleArray:
246*8975f5c5SAndroid Build Coastguard Worker case TextureType::CubeMapArray:
247*8975f5c5SAndroid Build Coastguard Worker return true;
248*8975f5c5SAndroid Build Coastguard Worker default:
249*8975f5c5SAndroid Build Coastguard Worker return false;
250*8975f5c5SAndroid Build Coastguard Worker }
251*8975f5c5SAndroid Build Coastguard Worker }
252*8975f5c5SAndroid Build Coastguard Worker
IsLayeredTextureType(TextureType type)253*8975f5c5SAndroid Build Coastguard Worker bool IsLayeredTextureType(TextureType type)
254*8975f5c5SAndroid Build Coastguard Worker {
255*8975f5c5SAndroid Build Coastguard Worker switch (type)
256*8975f5c5SAndroid Build Coastguard Worker {
257*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DArray:
258*8975f5c5SAndroid Build Coastguard Worker case TextureType::_2DMultisampleArray:
259*8975f5c5SAndroid Build Coastguard Worker case TextureType::_3D:
260*8975f5c5SAndroid Build Coastguard Worker case TextureType::CubeMap:
261*8975f5c5SAndroid Build Coastguard Worker case TextureType::CubeMapArray:
262*8975f5c5SAndroid Build Coastguard Worker return true;
263*8975f5c5SAndroid Build Coastguard Worker default:
264*8975f5c5SAndroid Build Coastguard Worker return false;
265*8975f5c5SAndroid Build Coastguard Worker }
266*8975f5c5SAndroid Build Coastguard Worker }
267*8975f5c5SAndroid Build Coastguard Worker
IsStaticBufferUsage(BufferUsage useage)268*8975f5c5SAndroid Build Coastguard Worker bool IsStaticBufferUsage(BufferUsage useage)
269*8975f5c5SAndroid Build Coastguard Worker {
270*8975f5c5SAndroid Build Coastguard Worker switch (useage)
271*8975f5c5SAndroid Build Coastguard Worker {
272*8975f5c5SAndroid Build Coastguard Worker case BufferUsage::StaticCopy:
273*8975f5c5SAndroid Build Coastguard Worker case BufferUsage::StaticDraw:
274*8975f5c5SAndroid Build Coastguard Worker case BufferUsage::StaticRead:
275*8975f5c5SAndroid Build Coastguard Worker return true;
276*8975f5c5SAndroid Build Coastguard Worker default:
277*8975f5c5SAndroid Build Coastguard Worker return false;
278*8975f5c5SAndroid Build Coastguard Worker }
279*8975f5c5SAndroid Build Coastguard Worker }
280*8975f5c5SAndroid Build Coastguard Worker
operator <<(std::ostream & os,PrimitiveMode value)281*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &os, PrimitiveMode value)
282*8975f5c5SAndroid Build Coastguard Worker {
283*8975f5c5SAndroid Build Coastguard Worker switch (value)
284*8975f5c5SAndroid Build Coastguard Worker {
285*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::LineLoop:
286*8975f5c5SAndroid Build Coastguard Worker os << "GL_LINE_LOOP";
287*8975f5c5SAndroid Build Coastguard Worker break;
288*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::Lines:
289*8975f5c5SAndroid Build Coastguard Worker os << "GL_LINES";
290*8975f5c5SAndroid Build Coastguard Worker break;
291*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::LinesAdjacency:
292*8975f5c5SAndroid Build Coastguard Worker os << "GL_LINES_ADJACENCY";
293*8975f5c5SAndroid Build Coastguard Worker break;
294*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::LineStrip:
295*8975f5c5SAndroid Build Coastguard Worker os << "GL_LINE_STRIP";
296*8975f5c5SAndroid Build Coastguard Worker break;
297*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::LineStripAdjacency:
298*8975f5c5SAndroid Build Coastguard Worker os << "GL_LINE_STRIP_ADJANCENCY";
299*8975f5c5SAndroid Build Coastguard Worker break;
300*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::Patches:
301*8975f5c5SAndroid Build Coastguard Worker os << "GL_PATCHES";
302*8975f5c5SAndroid Build Coastguard Worker break;
303*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::Points:
304*8975f5c5SAndroid Build Coastguard Worker os << "GL_POINTS";
305*8975f5c5SAndroid Build Coastguard Worker break;
306*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::TriangleFan:
307*8975f5c5SAndroid Build Coastguard Worker os << "GL_TRIANGLE_FAN";
308*8975f5c5SAndroid Build Coastguard Worker break;
309*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::Triangles:
310*8975f5c5SAndroid Build Coastguard Worker os << "GL_TRIANGLES";
311*8975f5c5SAndroid Build Coastguard Worker break;
312*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::TrianglesAdjacency:
313*8975f5c5SAndroid Build Coastguard Worker os << "GL_TRIANGLES_ADJANCENCY";
314*8975f5c5SAndroid Build Coastguard Worker break;
315*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::TriangleStrip:
316*8975f5c5SAndroid Build Coastguard Worker os << "GL_TRIANGLE_STRIP";
317*8975f5c5SAndroid Build Coastguard Worker break;
318*8975f5c5SAndroid Build Coastguard Worker case PrimitiveMode::TriangleStripAdjacency:
319*8975f5c5SAndroid Build Coastguard Worker os << "GL_TRIANGLE_STRIP_ADJACENCY";
320*8975f5c5SAndroid Build Coastguard Worker break;
321*8975f5c5SAndroid Build Coastguard Worker default:
322*8975f5c5SAndroid Build Coastguard Worker os << "GL_INVALID_ENUM";
323*8975f5c5SAndroid Build Coastguard Worker break;
324*8975f5c5SAndroid Build Coastguard Worker }
325*8975f5c5SAndroid Build Coastguard Worker return os;
326*8975f5c5SAndroid Build Coastguard Worker }
327*8975f5c5SAndroid Build Coastguard Worker
operator <<(std::ostream & os,DrawElementsType value)328*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &os, DrawElementsType value)
329*8975f5c5SAndroid Build Coastguard Worker {
330*8975f5c5SAndroid Build Coastguard Worker switch (value)
331*8975f5c5SAndroid Build Coastguard Worker {
332*8975f5c5SAndroid Build Coastguard Worker case DrawElementsType::UnsignedByte:
333*8975f5c5SAndroid Build Coastguard Worker os << "GL_UNSIGNED_BYTE";
334*8975f5c5SAndroid Build Coastguard Worker break;
335*8975f5c5SAndroid Build Coastguard Worker case DrawElementsType::UnsignedShort:
336*8975f5c5SAndroid Build Coastguard Worker os << "GL_UNSIGNED_SHORT";
337*8975f5c5SAndroid Build Coastguard Worker break;
338*8975f5c5SAndroid Build Coastguard Worker case DrawElementsType::UnsignedInt:
339*8975f5c5SAndroid Build Coastguard Worker os << "GL_UNSIGNED_INT";
340*8975f5c5SAndroid Build Coastguard Worker break;
341*8975f5c5SAndroid Build Coastguard Worker default:
342*8975f5c5SAndroid Build Coastguard Worker os << "GL_INVALID_ENUM";
343*8975f5c5SAndroid Build Coastguard Worker break;
344*8975f5c5SAndroid Build Coastguard Worker }
345*8975f5c5SAndroid Build Coastguard Worker
346*8975f5c5SAndroid Build Coastguard Worker return os;
347*8975f5c5SAndroid Build Coastguard Worker }
348*8975f5c5SAndroid Build Coastguard Worker
operator <<(std::ostream & os,BlendEquationType value)349*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &os, BlendEquationType value)
350*8975f5c5SAndroid Build Coastguard Worker {
351*8975f5c5SAndroid Build Coastguard Worker switch (value)
352*8975f5c5SAndroid Build Coastguard Worker {
353*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Add:
354*8975f5c5SAndroid Build Coastguard Worker os << "GL_FUNC_ADD";
355*8975f5c5SAndroid Build Coastguard Worker break;
356*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Min:
357*8975f5c5SAndroid Build Coastguard Worker os << "GL_MIN";
358*8975f5c5SAndroid Build Coastguard Worker break;
359*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Max:
360*8975f5c5SAndroid Build Coastguard Worker os << "GL_MAX";
361*8975f5c5SAndroid Build Coastguard Worker break;
362*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Subtract:
363*8975f5c5SAndroid Build Coastguard Worker os << "GL_FUNC_SUBTRACT";
364*8975f5c5SAndroid Build Coastguard Worker break;
365*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::ReverseSubtract:
366*8975f5c5SAndroid Build Coastguard Worker os << "GL_FUNC_REVERSE_SUBTRACT";
367*8975f5c5SAndroid Build Coastguard Worker break;
368*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Multiply:
369*8975f5c5SAndroid Build Coastguard Worker os << "GL_MULTIPLY_KHR";
370*8975f5c5SAndroid Build Coastguard Worker break;
371*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Screen:
372*8975f5c5SAndroid Build Coastguard Worker os << "GL_SCREEN_KHR";
373*8975f5c5SAndroid Build Coastguard Worker break;
374*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Overlay:
375*8975f5c5SAndroid Build Coastguard Worker os << "GL_OVERLAY_KHR";
376*8975f5c5SAndroid Build Coastguard Worker break;
377*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Darken:
378*8975f5c5SAndroid Build Coastguard Worker os << "GL_DARKEN_KHR";
379*8975f5c5SAndroid Build Coastguard Worker break;
380*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Lighten:
381*8975f5c5SAndroid Build Coastguard Worker os << "GL_LIGHTEN_KHR";
382*8975f5c5SAndroid Build Coastguard Worker break;
383*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Colordodge:
384*8975f5c5SAndroid Build Coastguard Worker os << "GL_COLORDODGE_KHR";
385*8975f5c5SAndroid Build Coastguard Worker break;
386*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Colorburn:
387*8975f5c5SAndroid Build Coastguard Worker os << "GL_COLORBURN_KHR";
388*8975f5c5SAndroid Build Coastguard Worker break;
389*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Hardlight:
390*8975f5c5SAndroid Build Coastguard Worker os << "GL_HARDLIGHT_KHR";
391*8975f5c5SAndroid Build Coastguard Worker break;
392*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Softlight:
393*8975f5c5SAndroid Build Coastguard Worker os << "GL_SOFTLIGHT_KHR";
394*8975f5c5SAndroid Build Coastguard Worker break;
395*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Difference:
396*8975f5c5SAndroid Build Coastguard Worker os << "GL_DIFFERENCE_KHR";
397*8975f5c5SAndroid Build Coastguard Worker break;
398*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::Exclusion:
399*8975f5c5SAndroid Build Coastguard Worker os << "GL_EXCLUSION_KHR";
400*8975f5c5SAndroid Build Coastguard Worker break;
401*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::HslHue:
402*8975f5c5SAndroid Build Coastguard Worker os << "GL_HSL_HUE_KHR";
403*8975f5c5SAndroid Build Coastguard Worker break;
404*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::HslSaturation:
405*8975f5c5SAndroid Build Coastguard Worker os << "GL_HSL_SATURATION_KHR";
406*8975f5c5SAndroid Build Coastguard Worker break;
407*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::HslColor:
408*8975f5c5SAndroid Build Coastguard Worker os << "GL_HSL_COLOR_KHR";
409*8975f5c5SAndroid Build Coastguard Worker break;
410*8975f5c5SAndroid Build Coastguard Worker case BlendEquationType::HslLuminosity:
411*8975f5c5SAndroid Build Coastguard Worker os << "GL_HSL_LUMINOSITY_KHR";
412*8975f5c5SAndroid Build Coastguard Worker break;
413*8975f5c5SAndroid Build Coastguard Worker default:
414*8975f5c5SAndroid Build Coastguard Worker os << "GL_INVALID_ENUM";
415*8975f5c5SAndroid Build Coastguard Worker break;
416*8975f5c5SAndroid Build Coastguard Worker }
417*8975f5c5SAndroid Build Coastguard Worker
418*8975f5c5SAndroid Build Coastguard Worker return os;
419*8975f5c5SAndroid Build Coastguard Worker }
420*8975f5c5SAndroid Build Coastguard Worker
operator <<(std::ostream & os,BlendFactorType value)421*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &os, BlendFactorType value)
422*8975f5c5SAndroid Build Coastguard Worker {
423*8975f5c5SAndroid Build Coastguard Worker switch (value)
424*8975f5c5SAndroid Build Coastguard Worker {
425*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::Zero:
426*8975f5c5SAndroid Build Coastguard Worker os << "GL_ZERO";
427*8975f5c5SAndroid Build Coastguard Worker break;
428*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::One:
429*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE";
430*8975f5c5SAndroid Build Coastguard Worker break;
431*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::SrcColor:
432*8975f5c5SAndroid Build Coastguard Worker os << "GL_SRC_COLOR";
433*8975f5c5SAndroid Build Coastguard Worker break;
434*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::OneMinusSrcColor:
435*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE_MINUS_SRC_COLOR";
436*8975f5c5SAndroid Build Coastguard Worker break;
437*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::SrcAlpha:
438*8975f5c5SAndroid Build Coastguard Worker os << "GL_SRC_ALPHA";
439*8975f5c5SAndroid Build Coastguard Worker break;
440*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::OneMinusSrcAlpha:
441*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE_MINUS_SRC_ALPHA";
442*8975f5c5SAndroid Build Coastguard Worker break;
443*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::DstAlpha:
444*8975f5c5SAndroid Build Coastguard Worker os << "GL_DST_ALPHA";
445*8975f5c5SAndroid Build Coastguard Worker break;
446*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::OneMinusDstAlpha:
447*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE_MINUS_DST_ALPHA";
448*8975f5c5SAndroid Build Coastguard Worker break;
449*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::DstColor:
450*8975f5c5SAndroid Build Coastguard Worker os << "GL_DST_COLOR";
451*8975f5c5SAndroid Build Coastguard Worker break;
452*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::OneMinusDstColor:
453*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE_MINUS_DST_COLOR";
454*8975f5c5SAndroid Build Coastguard Worker break;
455*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::SrcAlphaSaturate:
456*8975f5c5SAndroid Build Coastguard Worker os << "GL_SRC_ALPHA_SATURATE";
457*8975f5c5SAndroid Build Coastguard Worker break;
458*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::ConstantColor:
459*8975f5c5SAndroid Build Coastguard Worker os << "GL_CONSTANT_COLOR";
460*8975f5c5SAndroid Build Coastguard Worker break;
461*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::OneMinusConstantColor:
462*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE_MINUS_CONSTANT_COLOR";
463*8975f5c5SAndroid Build Coastguard Worker break;
464*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::ConstantAlpha:
465*8975f5c5SAndroid Build Coastguard Worker os << "GL_CONSTANT_ALPHA";
466*8975f5c5SAndroid Build Coastguard Worker break;
467*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::OneMinusConstantAlpha:
468*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE_MINUS_CONSTANT_ALPHA";
469*8975f5c5SAndroid Build Coastguard Worker break;
470*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::Src1Alpha:
471*8975f5c5SAndroid Build Coastguard Worker os << "GL_SRC1_ALPHA_EXT";
472*8975f5c5SAndroid Build Coastguard Worker break;
473*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::Src1Color:
474*8975f5c5SAndroid Build Coastguard Worker os << "GL_SRC1_COLOR_EXT";
475*8975f5c5SAndroid Build Coastguard Worker break;
476*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::OneMinusSrc1Color:
477*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE_MINUS_SRC1_COLOR_EXT";
478*8975f5c5SAndroid Build Coastguard Worker break;
479*8975f5c5SAndroid Build Coastguard Worker case BlendFactorType::OneMinusSrc1Alpha:
480*8975f5c5SAndroid Build Coastguard Worker os << "GL_ONE_MINUS_SRC1_ALPHA_EXT";
481*8975f5c5SAndroid Build Coastguard Worker break;
482*8975f5c5SAndroid Build Coastguard Worker default:
483*8975f5c5SAndroid Build Coastguard Worker os << "GL_INVALID_ENUM";
484*8975f5c5SAndroid Build Coastguard Worker break;
485*8975f5c5SAndroid Build Coastguard Worker }
486*8975f5c5SAndroid Build Coastguard Worker
487*8975f5c5SAndroid Build Coastguard Worker return os;
488*8975f5c5SAndroid Build Coastguard Worker }
489*8975f5c5SAndroid Build Coastguard Worker
operator <<(std::ostream & os,VertexAttribType value)490*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &os, VertexAttribType value)
491*8975f5c5SAndroid Build Coastguard Worker {
492*8975f5c5SAndroid Build Coastguard Worker switch (value)
493*8975f5c5SAndroid Build Coastguard Worker {
494*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::Byte:
495*8975f5c5SAndroid Build Coastguard Worker os << "GL_BYTE";
496*8975f5c5SAndroid Build Coastguard Worker break;
497*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::Fixed:
498*8975f5c5SAndroid Build Coastguard Worker os << "GL_FIXED";
499*8975f5c5SAndroid Build Coastguard Worker break;
500*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::Float:
501*8975f5c5SAndroid Build Coastguard Worker os << "GL_FLOAT";
502*8975f5c5SAndroid Build Coastguard Worker break;
503*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::HalfFloat:
504*8975f5c5SAndroid Build Coastguard Worker os << "GL_HALF_FLOAT";
505*8975f5c5SAndroid Build Coastguard Worker break;
506*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::HalfFloatOES:
507*8975f5c5SAndroid Build Coastguard Worker os << "GL_HALF_FLOAT_OES";
508*8975f5c5SAndroid Build Coastguard Worker break;
509*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::Int:
510*8975f5c5SAndroid Build Coastguard Worker os << "GL_INT";
511*8975f5c5SAndroid Build Coastguard Worker break;
512*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::Int2101010:
513*8975f5c5SAndroid Build Coastguard Worker os << "GL_INT_2_10_10_10_REV";
514*8975f5c5SAndroid Build Coastguard Worker break;
515*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::Int1010102:
516*8975f5c5SAndroid Build Coastguard Worker os << "GL_INT_10_10_10_2_OES";
517*8975f5c5SAndroid Build Coastguard Worker break;
518*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::Short:
519*8975f5c5SAndroid Build Coastguard Worker os << "GL_SHORT";
520*8975f5c5SAndroid Build Coastguard Worker break;
521*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::UnsignedByte:
522*8975f5c5SAndroid Build Coastguard Worker os << "GL_UNSIGNED_BYTE";
523*8975f5c5SAndroid Build Coastguard Worker break;
524*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::UnsignedInt:
525*8975f5c5SAndroid Build Coastguard Worker os << "GL_UNSIGNED_INT";
526*8975f5c5SAndroid Build Coastguard Worker break;
527*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::UnsignedInt2101010:
528*8975f5c5SAndroid Build Coastguard Worker os << "GL_UNSIGNED_INT_2_10_10_10_REV";
529*8975f5c5SAndroid Build Coastguard Worker break;
530*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::UnsignedInt1010102:
531*8975f5c5SAndroid Build Coastguard Worker os << "GL_UNSIGNED_INT_10_10_10_2_OES";
532*8975f5c5SAndroid Build Coastguard Worker break;
533*8975f5c5SAndroid Build Coastguard Worker case VertexAttribType::UnsignedShort:
534*8975f5c5SAndroid Build Coastguard Worker os << "GL_UNSIGNED_SHORT";
535*8975f5c5SAndroid Build Coastguard Worker break;
536*8975f5c5SAndroid Build Coastguard Worker default:
537*8975f5c5SAndroid Build Coastguard Worker os << "GL_INVALID_ENUM";
538*8975f5c5SAndroid Build Coastguard Worker break;
539*8975f5c5SAndroid Build Coastguard Worker }
540*8975f5c5SAndroid Build Coastguard Worker return os;
541*8975f5c5SAndroid Build Coastguard Worker }
542*8975f5c5SAndroid Build Coastguard Worker
operator <<(std::ostream & os,TessEvaluationType value)543*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &os, TessEvaluationType value)
544*8975f5c5SAndroid Build Coastguard Worker {
545*8975f5c5SAndroid Build Coastguard Worker switch (value)
546*8975f5c5SAndroid Build Coastguard Worker {
547*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::Triangles:
548*8975f5c5SAndroid Build Coastguard Worker os << "GL_TRIANGLES";
549*8975f5c5SAndroid Build Coastguard Worker break;
550*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::Quads:
551*8975f5c5SAndroid Build Coastguard Worker os << "GL_QUADS";
552*8975f5c5SAndroid Build Coastguard Worker break;
553*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::Isolines:
554*8975f5c5SAndroid Build Coastguard Worker os << "GL_ISOLINES";
555*8975f5c5SAndroid Build Coastguard Worker break;
556*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::EqualSpacing:
557*8975f5c5SAndroid Build Coastguard Worker os << "GL_EQUAL";
558*8975f5c5SAndroid Build Coastguard Worker break;
559*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::FractionalEvenSpacing:
560*8975f5c5SAndroid Build Coastguard Worker os << "GL_FRACTIONAL_EVEN";
561*8975f5c5SAndroid Build Coastguard Worker break;
562*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::FractionalOddSpacing:
563*8975f5c5SAndroid Build Coastguard Worker os << "GL_FRACTIONAL_ODD";
564*8975f5c5SAndroid Build Coastguard Worker break;
565*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::Cw:
566*8975f5c5SAndroid Build Coastguard Worker os << "GL_CW";
567*8975f5c5SAndroid Build Coastguard Worker break;
568*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::Ccw:
569*8975f5c5SAndroid Build Coastguard Worker os << "GL_CCW";
570*8975f5c5SAndroid Build Coastguard Worker break;
571*8975f5c5SAndroid Build Coastguard Worker case TessEvaluationType::PointMode:
572*8975f5c5SAndroid Build Coastguard Worker os << "GL_TESS_GEN_POINT_MODE";
573*8975f5c5SAndroid Build Coastguard Worker break;
574*8975f5c5SAndroid Build Coastguard Worker default:
575*8975f5c5SAndroid Build Coastguard Worker os << "GL_INVALID_ENUM";
576*8975f5c5SAndroid Build Coastguard Worker break;
577*8975f5c5SAndroid Build Coastguard Worker }
578*8975f5c5SAndroid Build Coastguard Worker return os;
579*8975f5c5SAndroid Build Coastguard Worker }
580*8975f5c5SAndroid Build Coastguard Worker
ShaderTypeToString(ShaderType shaderType)581*8975f5c5SAndroid Build Coastguard Worker const char *ShaderTypeToString(ShaderType shaderType)
582*8975f5c5SAndroid Build Coastguard Worker {
583*8975f5c5SAndroid Build Coastguard Worker constexpr ShaderMap<const char *> kShaderTypeNameMap = {
584*8975f5c5SAndroid Build Coastguard Worker {ShaderType::Vertex, "Vertex"},
585*8975f5c5SAndroid Build Coastguard Worker {ShaderType::TessControl, "Tessellation control"},
586*8975f5c5SAndroid Build Coastguard Worker {ShaderType::TessEvaluation, "Tessellation evaluation"},
587*8975f5c5SAndroid Build Coastguard Worker {ShaderType::Geometry, "Geometry"},
588*8975f5c5SAndroid Build Coastguard Worker {ShaderType::Fragment, "Fragment"},
589*8975f5c5SAndroid Build Coastguard Worker {ShaderType::Compute, "Compute"}};
590*8975f5c5SAndroid Build Coastguard Worker return kShaderTypeNameMap[shaderType];
591*8975f5c5SAndroid Build Coastguard Worker }
592*8975f5c5SAndroid Build Coastguard Worker
operator <(const UniformLocation & lhs,const UniformLocation & rhs)593*8975f5c5SAndroid Build Coastguard Worker bool operator<(const UniformLocation &lhs, const UniformLocation &rhs)
594*8975f5c5SAndroid Build Coastguard Worker {
595*8975f5c5SAndroid Build Coastguard Worker return lhs.value < rhs.value;
596*8975f5c5SAndroid Build Coastguard Worker }
597*8975f5c5SAndroid Build Coastguard Worker
IsEmulatedCompressedFormat(GLenum format)598*8975f5c5SAndroid Build Coastguard Worker bool IsEmulatedCompressedFormat(GLenum format)
599*8975f5c5SAndroid Build Coastguard Worker {
600*8975f5c5SAndroid Build Coastguard Worker // TODO(anglebug.com/42264702): Check for all formats ANGLE will use to emulate a compressed
601*8975f5c5SAndroid Build Coastguard Worker // texture
602*8975f5c5SAndroid Build Coastguard Worker return format == GL_RGBA || format == GL_RG || format == GL_RED;
603*8975f5c5SAndroid Build Coastguard Worker }
604*8975f5c5SAndroid Build Coastguard Worker } // namespace gl
605*8975f5c5SAndroid Build Coastguard Worker
606*8975f5c5SAndroid Build Coastguard Worker namespace egl
607*8975f5c5SAndroid Build Coastguard Worker {
ErrorCodeToMessageType(EGLint errorCode)608*8975f5c5SAndroid Build Coastguard Worker MessageType ErrorCodeToMessageType(EGLint errorCode)
609*8975f5c5SAndroid Build Coastguard Worker {
610*8975f5c5SAndroid Build Coastguard Worker switch (errorCode)
611*8975f5c5SAndroid Build Coastguard Worker {
612*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_ALLOC:
613*8975f5c5SAndroid Build Coastguard Worker case EGL_CONTEXT_LOST:
614*8975f5c5SAndroid Build Coastguard Worker case EGL_NOT_INITIALIZED:
615*8975f5c5SAndroid Build Coastguard Worker return MessageType::Critical;
616*8975f5c5SAndroid Build Coastguard Worker
617*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_ACCESS:
618*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_ATTRIBUTE:
619*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_CONFIG:
620*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_CONTEXT:
621*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_CURRENT_SURFACE:
622*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_DISPLAY:
623*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_MATCH:
624*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_NATIVE_PIXMAP:
625*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_NATIVE_WINDOW:
626*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_PARAMETER:
627*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_SURFACE:
628*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_STREAM_KHR:
629*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_STATE_KHR:
630*8975f5c5SAndroid Build Coastguard Worker case EGL_BAD_DEVICE_EXT:
631*8975f5c5SAndroid Build Coastguard Worker return MessageType::Error;
632*8975f5c5SAndroid Build Coastguard Worker
633*8975f5c5SAndroid Build Coastguard Worker case EGL_SUCCESS:
634*8975f5c5SAndroid Build Coastguard Worker default:
635*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
636*8975f5c5SAndroid Build Coastguard Worker return MessageType::InvalidEnum;
637*8975f5c5SAndroid Build Coastguard Worker }
638*8975f5c5SAndroid Build Coastguard Worker }
639*8975f5c5SAndroid Build Coastguard Worker } // namespace egl
640*8975f5c5SAndroid Build Coastguard Worker
641*8975f5c5SAndroid Build Coastguard Worker namespace egl_gl
642*8975f5c5SAndroid Build Coastguard Worker {
643*8975f5c5SAndroid Build Coastguard Worker
EGLCubeMapTargetToCubeMapTarget(EGLenum eglTarget)644*8975f5c5SAndroid Build Coastguard Worker gl::TextureTarget EGLCubeMapTargetToCubeMapTarget(EGLenum eglTarget)
645*8975f5c5SAndroid Build Coastguard Worker {
646*8975f5c5SAndroid Build Coastguard Worker ASSERT(egl::IsCubeMapTextureTarget(eglTarget));
647*8975f5c5SAndroid Build Coastguard Worker return gl::CubeFaceIndexToTextureTarget(egl::CubeMapTextureTargetToLayerIndex(eglTarget));
648*8975f5c5SAndroid Build Coastguard Worker }
649*8975f5c5SAndroid Build Coastguard Worker
EGLImageTargetToTextureTarget(EGLenum eglTarget)650*8975f5c5SAndroid Build Coastguard Worker gl::TextureTarget EGLImageTargetToTextureTarget(EGLenum eglTarget)
651*8975f5c5SAndroid Build Coastguard Worker {
652*8975f5c5SAndroid Build Coastguard Worker switch (eglTarget)
653*8975f5c5SAndroid Build Coastguard Worker {
654*8975f5c5SAndroid Build Coastguard Worker case EGL_GL_TEXTURE_2D_KHR:
655*8975f5c5SAndroid Build Coastguard Worker return gl::TextureTarget::_2D;
656*8975f5c5SAndroid Build Coastguard Worker
657*8975f5c5SAndroid Build Coastguard Worker case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR:
658*8975f5c5SAndroid Build Coastguard Worker case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR:
659*8975f5c5SAndroid Build Coastguard Worker case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR:
660*8975f5c5SAndroid Build Coastguard Worker case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR:
661*8975f5c5SAndroid Build Coastguard Worker case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR:
662*8975f5c5SAndroid Build Coastguard Worker case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR:
663*8975f5c5SAndroid Build Coastguard Worker return EGLCubeMapTargetToCubeMapTarget(eglTarget);
664*8975f5c5SAndroid Build Coastguard Worker
665*8975f5c5SAndroid Build Coastguard Worker case EGL_GL_TEXTURE_3D_KHR:
666*8975f5c5SAndroid Build Coastguard Worker return gl::TextureTarget::_3D;
667*8975f5c5SAndroid Build Coastguard Worker
668*8975f5c5SAndroid Build Coastguard Worker default:
669*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
670*8975f5c5SAndroid Build Coastguard Worker return gl::TextureTarget::InvalidEnum;
671*8975f5c5SAndroid Build Coastguard Worker }
672*8975f5c5SAndroid Build Coastguard Worker }
673*8975f5c5SAndroid Build Coastguard Worker
EGLTextureTargetToTextureType(EGLenum eglTarget)674*8975f5c5SAndroid Build Coastguard Worker gl::TextureType EGLTextureTargetToTextureType(EGLenum eglTarget)
675*8975f5c5SAndroid Build Coastguard Worker {
676*8975f5c5SAndroid Build Coastguard Worker switch (eglTarget)
677*8975f5c5SAndroid Build Coastguard Worker {
678*8975f5c5SAndroid Build Coastguard Worker case EGL_TEXTURE_2D:
679*8975f5c5SAndroid Build Coastguard Worker return gl::TextureType::_2D;
680*8975f5c5SAndroid Build Coastguard Worker
681*8975f5c5SAndroid Build Coastguard Worker case EGL_TEXTURE_RECTANGLE_ANGLE:
682*8975f5c5SAndroid Build Coastguard Worker return gl::TextureType::Rectangle;
683*8975f5c5SAndroid Build Coastguard Worker
684*8975f5c5SAndroid Build Coastguard Worker default:
685*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
686*8975f5c5SAndroid Build Coastguard Worker return gl::TextureType::InvalidEnum;
687*8975f5c5SAndroid Build Coastguard Worker }
688*8975f5c5SAndroid Build Coastguard Worker }
689*8975f5c5SAndroid Build Coastguard Worker } // namespace egl_gl
690