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