1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_uniform_type_table.py.
3 //
4 // Copyright 2017 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // Uniform type info table:
9 // Metadata about a particular uniform format, indexed by GL type.
10
11 #include <array>
12 #include "common/utilities.h"
13
14 using namespace angle;
15
16 namespace gl
17 {
18
19 namespace
20 {
21 constexpr std::array<UniformTypeInfo, 59> kInfoTable = {
22 {{GL_NONE, GL_NONE, GL_NONE, GL_NONE, GL_NONE, 0, 0, 0, 0, 0 * 0, 0 * 0, false, false, false},
23 {GL_BOOL, GL_BOOL, GL_NONE, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint), sizeof(GLint) * 4,
24 sizeof(GLint) * 1, false, false, false},
25 {GL_BOOL_VEC2, GL_BOOL, GL_NONE, GL_NONE, GL_BOOL_VEC2, 1, 2, 2, sizeof(GLint),
26 sizeof(GLint) * 4, sizeof(GLint) * 2, false, false, false},
27 {GL_BOOL_VEC3, GL_BOOL, GL_NONE, GL_NONE, GL_BOOL_VEC3, 1, 3, 3, sizeof(GLint),
28 sizeof(GLint) * 4, sizeof(GLint) * 3, false, false, false},
29 {GL_BOOL_VEC4, GL_BOOL, GL_NONE, GL_NONE, GL_BOOL_VEC4, 1, 4, 4, sizeof(GLint),
30 sizeof(GLint) * 4, sizeof(GLint) * 4, false, false, false},
31 {GL_FLOAT, GL_FLOAT, GL_NONE, GL_NONE, GL_BOOL, 1, 1, 1, sizeof(GLfloat), sizeof(GLfloat) * 4,
32 sizeof(GLfloat) * 1, false, false, false},
33 {GL_FLOAT_MAT2, GL_FLOAT, GL_NONE, GL_FLOAT_MAT2, GL_NONE, 2, 2, 4, sizeof(GLfloat),
34 sizeof(GLfloat) * 8, sizeof(GLfloat) * 4, false, true, false},
35 {GL_FLOAT_MAT2x3, GL_FLOAT, GL_NONE, GL_FLOAT_MAT3x2, GL_NONE, 3, 2, 6, sizeof(GLfloat),
36 sizeof(GLfloat) * 12, sizeof(GLfloat) * 6, false, true, false},
37 {GL_FLOAT_MAT2x4, GL_FLOAT, GL_NONE, GL_FLOAT_MAT4x2, GL_NONE, 4, 2, 8, sizeof(GLfloat),
38 sizeof(GLfloat) * 16, sizeof(GLfloat) * 8, false, true, false},
39 {GL_FLOAT_MAT3, GL_FLOAT, GL_NONE, GL_FLOAT_MAT3, GL_NONE, 3, 3, 9, sizeof(GLfloat),
40 sizeof(GLfloat) * 12, sizeof(GLfloat) * 9, false, true, false},
41 {GL_FLOAT_MAT3x2, GL_FLOAT, GL_NONE, GL_FLOAT_MAT2x3, GL_NONE, 2, 3, 6, sizeof(GLfloat),
42 sizeof(GLfloat) * 8, sizeof(GLfloat) * 6, false, true, false},
43 {GL_FLOAT_MAT3x4, GL_FLOAT, GL_NONE, GL_FLOAT_MAT4x3, GL_NONE, 4, 3, 12, sizeof(GLfloat),
44 sizeof(GLfloat) * 16, sizeof(GLfloat) * 12, false, true, false},
45 {GL_FLOAT_MAT4, GL_FLOAT, GL_NONE, GL_FLOAT_MAT4, GL_NONE, 4, 4, 16, sizeof(GLfloat),
46 sizeof(GLfloat) * 16, sizeof(GLfloat) * 16, false, true, false},
47 {GL_FLOAT_MAT4x2, GL_FLOAT, GL_NONE, GL_FLOAT_MAT2x4, GL_NONE, 2, 4, 8, sizeof(GLfloat),
48 sizeof(GLfloat) * 8, sizeof(GLfloat) * 8, false, true, false},
49 {GL_FLOAT_MAT4x3, GL_FLOAT, GL_NONE, GL_FLOAT_MAT3x4, GL_NONE, 3, 4, 12, sizeof(GLfloat),
50 sizeof(GLfloat) * 12, sizeof(GLfloat) * 12, false, true, false},
51 {GL_FLOAT_VEC2, GL_FLOAT, GL_NONE, GL_NONE, GL_BOOL_VEC2, 1, 2, 2, sizeof(GLfloat),
52 sizeof(GLfloat) * 4, sizeof(GLfloat) * 2, false, false, false},
53 {GL_FLOAT_VEC3, GL_FLOAT, GL_NONE, GL_NONE, GL_BOOL_VEC3, 1, 3, 3, sizeof(GLfloat),
54 sizeof(GLfloat) * 4, sizeof(GLfloat) * 3, false, false, false},
55 {GL_FLOAT_VEC4, GL_FLOAT, GL_NONE, GL_NONE, GL_BOOL_VEC4, 1, 4, 4, sizeof(GLfloat),
56 sizeof(GLfloat) * 4, sizeof(GLfloat) * 4, false, false, false},
57 {GL_IMAGE_2D, GL_INT, GL_TEXTURE_2D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
58 sizeof(GLint) * 4, sizeof(GLint) * 1, false, false, true},
59 {GL_IMAGE_2D_ARRAY, GL_INT, GL_TEXTURE_2D_ARRAY, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
60 sizeof(GLint) * 4, sizeof(GLint) * 1, false, false, true},
61 {GL_IMAGE_3D, GL_INT, GL_TEXTURE_3D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
62 sizeof(GLint) * 4, sizeof(GLint) * 1, false, false, true},
63 {GL_IMAGE_CUBE, GL_INT, GL_TEXTURE_CUBE_MAP, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
64 sizeof(GLint) * 4, sizeof(GLint) * 1, false, false, true},
65 {GL_INT, GL_INT, GL_NONE, GL_NONE, GL_BOOL, 1, 1, 1, sizeof(GLint), sizeof(GLint) * 4,
66 sizeof(GLint) * 1, false, false, false},
67 {GL_INT_IMAGE_2D, GL_INT, GL_TEXTURE_2D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
68 sizeof(GLint) * 4, sizeof(GLint) * 1, false, false, true},
69 {GL_INT_IMAGE_2D_ARRAY, GL_INT, GL_TEXTURE_2D_ARRAY, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
70 sizeof(GLint) * 4, sizeof(GLint) * 1, false, false, true},
71 {GL_INT_IMAGE_3D, GL_INT, GL_TEXTURE_3D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
72 sizeof(GLint) * 4, sizeof(GLint) * 1, false, false, true},
73 {GL_INT_IMAGE_CUBE, GL_INT, GL_TEXTURE_CUBE_MAP, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
74 sizeof(GLint) * 4, sizeof(GLint) * 1, false, false, true},
75 {GL_INT_SAMPLER_2D, GL_INT, GL_TEXTURE_2D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
76 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
77 {GL_INT_SAMPLER_2D_ARRAY, GL_INT, GL_TEXTURE_2D_ARRAY, GL_NONE, GL_NONE, 1, 1, 1,
78 sizeof(GLint), sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
79 {GL_INT_SAMPLER_2D_MULTISAMPLE, GL_INT, GL_TEXTURE_2D_MULTISAMPLE, GL_NONE, GL_NONE, 1, 1, 1,
80 sizeof(GLint), sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
81 {GL_INT_SAMPLER_3D, GL_INT, GL_TEXTURE_3D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
82 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
83 {GL_INT_SAMPLER_CUBE, GL_INT, GL_TEXTURE_CUBE_MAP, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
84 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
85 {GL_INT_VEC2, GL_INT, GL_NONE, GL_NONE, GL_BOOL_VEC2, 1, 2, 2, sizeof(GLint),
86 sizeof(GLint) * 4, sizeof(GLint) * 2, false, false, false},
87 {GL_INT_VEC3, GL_INT, GL_NONE, GL_NONE, GL_BOOL_VEC3, 1, 3, 3, sizeof(GLint),
88 sizeof(GLint) * 4, sizeof(GLint) * 3, false, false, false},
89 {GL_INT_VEC4, GL_INT, GL_NONE, GL_NONE, GL_BOOL_VEC4, 1, 4, 4, sizeof(GLint),
90 sizeof(GLint) * 4, sizeof(GLint) * 4, false, false, false},
91 {GL_SAMPLER_2D, GL_INT, GL_TEXTURE_2D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
92 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
93 {GL_SAMPLER_2D_ARRAY, GL_INT, GL_TEXTURE_2D_ARRAY, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
94 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
95 {GL_SAMPLER_2D_ARRAY_SHADOW, GL_INT, GL_TEXTURE_2D_ARRAY, GL_NONE, GL_NONE, 1, 1, 1,
96 sizeof(GLint), sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
97 {GL_SAMPLER_2D_MULTISAMPLE, GL_INT, GL_TEXTURE_2D_MULTISAMPLE, GL_NONE, GL_NONE, 1, 1, 1,
98 sizeof(GLint), sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
99 {GL_SAMPLER_2D_RECT_ANGLE, GL_INT, GL_TEXTURE_2D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
100 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
101 {GL_SAMPLER_2D_SHADOW, GL_INT, GL_TEXTURE_2D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
102 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
103 {GL_SAMPLER_3D, GL_INT, GL_TEXTURE_3D, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
104 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
105 {GL_SAMPLER_CUBE, GL_INT, GL_TEXTURE_CUBE_MAP, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
106 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
107 {GL_SAMPLER_CUBE_SHADOW, GL_INT, GL_TEXTURE_CUBE_MAP, GL_NONE, GL_NONE, 1, 1, 1, sizeof(GLint),
108 sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
109 {GL_SAMPLER_EXTERNAL_OES, GL_INT, GL_TEXTURE_EXTERNAL_OES, GL_NONE, GL_NONE, 1, 1, 1,
110 sizeof(GLint), sizeof(GLint) * 4, sizeof(GLint) * 1, true, false, false},
111 {GL_UNSIGNED_INT, GL_UNSIGNED_INT, GL_NONE, GL_NONE, GL_BOOL, 1, 1, 1, sizeof(GLuint),
112 sizeof(GLuint) * 4, sizeof(GLuint) * 1, false, false, false},
113 {GL_UNSIGNED_INT_ATOMIC_COUNTER, GL_UNSIGNED_INT, GL_NONE, GL_NONE, GL_NONE, 1, 1, 1,
114 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, false, false, false},
115 {GL_UNSIGNED_INT_IMAGE_2D, GL_UNSIGNED_INT, GL_TEXTURE_2D, GL_NONE, GL_NONE, 1, 1, 1,
116 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, false, false, true},
117 {GL_UNSIGNED_INT_IMAGE_2D_ARRAY, GL_UNSIGNED_INT, GL_TEXTURE_2D_ARRAY, GL_NONE, GL_NONE, 1, 1,
118 1, sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, false, false, true},
119 {GL_UNSIGNED_INT_IMAGE_3D, GL_UNSIGNED_INT, GL_TEXTURE_3D, GL_NONE, GL_NONE, 1, 1, 1,
120 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, false, false, true},
121 {GL_UNSIGNED_INT_IMAGE_CUBE, GL_UNSIGNED_INT, GL_TEXTURE_CUBE_MAP, GL_NONE, GL_NONE, 1, 1, 1,
122 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, false, false, true},
123 {GL_UNSIGNED_INT_SAMPLER_2D, GL_UNSIGNED_INT, GL_TEXTURE_2D, GL_NONE, GL_NONE, 1, 1, 1,
124 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, true, false, false},
125 {GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, GL_UNSIGNED_INT, GL_TEXTURE_2D_ARRAY, GL_NONE, GL_NONE, 1,
126 1, 1, sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, true, false, false},
127 {GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, GL_UNSIGNED_INT, GL_TEXTURE_2D_MULTISAMPLE, GL_NONE,
128 GL_NONE, 1, 1, 1, sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, true, false, false},
129 {GL_UNSIGNED_INT_SAMPLER_3D, GL_UNSIGNED_INT, GL_TEXTURE_3D, GL_NONE, GL_NONE, 1, 1, 1,
130 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, true, false, false},
131 {GL_UNSIGNED_INT_SAMPLER_CUBE, GL_UNSIGNED_INT, GL_TEXTURE_CUBE_MAP, GL_NONE, GL_NONE, 1, 1, 1,
132 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 1, true, false, false},
133 {GL_UNSIGNED_INT_VEC2, GL_UNSIGNED_INT, GL_NONE, GL_NONE, GL_BOOL_VEC2, 1, 2, 2,
134 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 2, false, false, false},
135 {GL_UNSIGNED_INT_VEC3, GL_UNSIGNED_INT, GL_NONE, GL_NONE, GL_BOOL_VEC3, 1, 3, 3,
136 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 3, false, false, false},
137 {GL_UNSIGNED_INT_VEC4, GL_UNSIGNED_INT, GL_NONE, GL_NONE, GL_BOOL_VEC4, 1, 4, 4,
138 sizeof(GLuint), sizeof(GLuint) * 4, sizeof(GLuint) * 4, false, false, false}}};
139
GetTypeInfoIndex(GLenum uniformType)140 size_t GetTypeInfoIndex(GLenum uniformType)
141 {
142 switch (uniformType)
143 {
144 case GL_NONE:
145 return 0;
146 case GL_BOOL:
147 return 1;
148 case GL_BOOL_VEC2:
149 return 2;
150 case GL_BOOL_VEC3:
151 return 3;
152 case GL_BOOL_VEC4:
153 return 4;
154 case GL_FLOAT:
155 return 5;
156 case GL_FLOAT_MAT2:
157 return 6;
158 case GL_FLOAT_MAT2x3:
159 return 7;
160 case GL_FLOAT_MAT2x4:
161 return 8;
162 case GL_FLOAT_MAT3:
163 return 9;
164 case GL_FLOAT_MAT3x2:
165 return 10;
166 case GL_FLOAT_MAT3x4:
167 return 11;
168 case GL_FLOAT_MAT4:
169 return 12;
170 case GL_FLOAT_MAT4x2:
171 return 13;
172 case GL_FLOAT_MAT4x3:
173 return 14;
174 case GL_FLOAT_VEC2:
175 return 15;
176 case GL_FLOAT_VEC3:
177 return 16;
178 case GL_FLOAT_VEC4:
179 return 17;
180 case GL_IMAGE_2D:
181 return 18;
182 case GL_IMAGE_2D_ARRAY:
183 return 19;
184 case GL_IMAGE_3D:
185 return 20;
186 case GL_IMAGE_CUBE:
187 return 21;
188 case GL_INT:
189 return 22;
190 case GL_INT_IMAGE_2D:
191 return 23;
192 case GL_INT_IMAGE_2D_ARRAY:
193 return 24;
194 case GL_INT_IMAGE_3D:
195 return 25;
196 case GL_INT_IMAGE_CUBE:
197 return 26;
198 case GL_INT_SAMPLER_2D:
199 return 27;
200 case GL_INT_SAMPLER_2D_ARRAY:
201 return 28;
202 case GL_INT_SAMPLER_2D_MULTISAMPLE:
203 return 29;
204 case GL_INT_SAMPLER_3D:
205 return 30;
206 case GL_INT_SAMPLER_CUBE:
207 return 31;
208 case GL_INT_VEC2:
209 return 32;
210 case GL_INT_VEC3:
211 return 33;
212 case GL_INT_VEC4:
213 return 34;
214 case GL_SAMPLER_2D:
215 return 35;
216 case GL_SAMPLER_2D_ARRAY:
217 return 36;
218 case GL_SAMPLER_2D_ARRAY_SHADOW:
219 return 37;
220 case GL_SAMPLER_2D_MULTISAMPLE:
221 return 38;
222 case GL_SAMPLER_2D_RECT_ANGLE:
223 return 39;
224 case GL_SAMPLER_2D_SHADOW:
225 return 40;
226 case GL_SAMPLER_3D:
227 return 41;
228 case GL_SAMPLER_CUBE:
229 return 42;
230 case GL_SAMPLER_CUBE_SHADOW:
231 return 43;
232 case GL_SAMPLER_EXTERNAL_OES:
233 return 44;
234 case GL_UNSIGNED_INT:
235 return 45;
236 case GL_UNSIGNED_INT_ATOMIC_COUNTER:
237 return 46;
238 case GL_UNSIGNED_INT_IMAGE_2D:
239 return 47;
240 case GL_UNSIGNED_INT_IMAGE_2D_ARRAY:
241 return 48;
242 case GL_UNSIGNED_INT_IMAGE_3D:
243 return 49;
244 case GL_UNSIGNED_INT_IMAGE_CUBE:
245 return 50;
246 case GL_UNSIGNED_INT_SAMPLER_2D:
247 return 51;
248 case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
249 return 52;
250 case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:
251 return 53;
252 case GL_UNSIGNED_INT_SAMPLER_3D:
253 return 54;
254 case GL_UNSIGNED_INT_SAMPLER_CUBE:
255 return 55;
256 case GL_UNSIGNED_INT_VEC2:
257 return 56;
258 case GL_UNSIGNED_INT_VEC3:
259 return 57;
260 case GL_UNSIGNED_INT_VEC4:
261 return 58;
262 default:
263 UNREACHABLE();
264 return 0;
265 }
266 }
267 } // anonymous namespace
268
GetUniformTypeInfo(GLenum uniformType)269 const UniformTypeInfo &GetUniformTypeInfo(GLenum uniformType)
270 {
271 ASSERT(kInfoTable[GetTypeInfoIndex(uniformType)].type == uniformType);
272 return kInfoTable[GetTypeInfoIndex(uniformType)];
273 }
274
275 } // namespace gl
276