1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_load_functions_table.py using data from load_functions_data.json
3 //
4 // Copyright 2020 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 // load_functions_table:
9 // Contains the GetLoadFunctionsMap for texture_format_util.h
10 //
11
12 #include "libANGLE/renderer/load_functions_table.h"
13
14 #include "image_util/copyimage.h"
15 #include "image_util/generatemip.h"
16 #include "image_util/loadimage.h"
17
18 using namespace rx;
19
20 namespace angle
21 {
22
23 namespace
24 {
25
26 // ES3 image loading functions vary based on:
27 // - the GL internal format (supplied to glTex*Image*D)
28 // - the GL data type given (supplied to glTex*Image*D)
29 // - the target DXGI_FORMAT that the image will be loaded into (which is chosen based on the D3D
30 // device's capabilities)
31 // This map type determines which loading function to use, based on these three parameters.
32 // Source formats and types are taken from Tables 3.2 and 3.3 of the ES 3 spec.
UnimplementedLoadFunction(size_t width,size_t height,size_t depth,const uint8_t * input,size_t inputRowPitch,size_t inputDepthPitch,uint8_t * output,size_t outputRowPitch,size_t outputDepthPitch)33 void UnimplementedLoadFunction(size_t width,
34 size_t height,
35 size_t depth,
36 const uint8_t *input,
37 size_t inputRowPitch,
38 size_t inputDepthPitch,
39 uint8_t *output,
40 size_t outputRowPitch,
41 size_t outputDepthPitch)
42 {
43 UNIMPLEMENTED();
44 }
45
UnreachableLoadFunction(size_t width,size_t height,size_t depth,const uint8_t * input,size_t inputRowPitch,size_t inputDepthPitch,uint8_t * output,size_t outputRowPitch,size_t outputDepthPitch)46 void UnreachableLoadFunction(size_t width,
47 size_t height,
48 size_t depth,
49 const uint8_t *input,
50 size_t inputRowPitch,
51 size_t inputDepthPitch,
52 uint8_t *output,
53 size_t outputRowPitch,
54 size_t outputDepthPitch)
55 {
56 UNREACHABLE();
57 }
58
A1RGB5_ANGLEX_to_A1R5G5B5_UNORM(GLenum type)59 LoadImageFunctionInfo A1RGB5_ANGLEX_to_A1R5G5B5_UNORM(GLenum type)
60 {
61 switch (type)
62 {
63 case GL_UNSIGNED_BYTE:
64 return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true);
65 case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:
66 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
67 default:
68 UNREACHABLE();
69 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
70 }
71 }
72
ALPHA_to_R16G16B16A16_FLOAT(GLenum type)73 LoadImageFunctionInfo ALPHA_to_R16G16B16A16_FLOAT(GLenum type)
74 {
75 switch (type)
76 {
77 case GL_HALF_FLOAT:
78 return LoadImageFunctionInfo(LoadA16FToRGBA16F, true);
79 case GL_HALF_FLOAT_OES:
80 return LoadImageFunctionInfo(LoadA16FToRGBA16F, true);
81 case GL_UNSIGNED_BYTE:
82 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
83 default:
84 UNREACHABLE();
85 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
86 }
87 }
88
ALPHA_to_R32G32B32A32_FLOAT(GLenum type)89 LoadImageFunctionInfo ALPHA_to_R32G32B32A32_FLOAT(GLenum type)
90 {
91 switch (type)
92 {
93 case GL_FLOAT:
94 return LoadImageFunctionInfo(LoadA32FToRGBA32F, true);
95 case GL_UNSIGNED_BYTE:
96 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
97 default:
98 UNREACHABLE();
99 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
100 }
101 }
102
ALPHA_to_default(GLenum type)103 LoadImageFunctionInfo ALPHA_to_default(GLenum type)
104 {
105 switch (type)
106 {
107 case GL_UNSIGNED_BYTE:
108 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
109 default:
110 UNREACHABLE();
111 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
112 }
113 }
114
ALPHA16F_EXT_to_R16_FLOAT(GLenum type)115 LoadImageFunctionInfo ALPHA16F_EXT_to_R16_FLOAT(GLenum type)
116 {
117 switch (type)
118 {
119 case GL_HALF_FLOAT:
120 return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
121 case GL_HALF_FLOAT_OES:
122 return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
123 default:
124 UNREACHABLE();
125 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
126 }
127 }
128
ALPHA16F_EXT_to_default(GLenum type)129 LoadImageFunctionInfo ALPHA16F_EXT_to_default(GLenum type)
130 {
131 switch (type)
132 {
133 case GL_HALF_FLOAT:
134 return LoadImageFunctionInfo(LoadA16FToRGBA16F, true);
135 case GL_HALF_FLOAT_OES:
136 return LoadImageFunctionInfo(LoadA16FToRGBA16F, true);
137 default:
138 UNREACHABLE();
139 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
140 }
141 }
142
ALPHA32F_EXT_to_R32_FLOAT(GLenum type)143 LoadImageFunctionInfo ALPHA32F_EXT_to_R32_FLOAT(GLenum type)
144 {
145 switch (type)
146 {
147 case GL_FLOAT:
148 return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
149 default:
150 UNREACHABLE();
151 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
152 }
153 }
154
ALPHA32F_EXT_to_default(GLenum type)155 LoadImageFunctionInfo ALPHA32F_EXT_to_default(GLenum type)
156 {
157 switch (type)
158 {
159 case GL_FLOAT:
160 return LoadImageFunctionInfo(LoadA32FToRGBA32F, true);
161 default:
162 UNREACHABLE();
163 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
164 }
165 }
166
ALPHA8_EXT_to_A8_UNORM(GLenum type)167 LoadImageFunctionInfo ALPHA8_EXT_to_A8_UNORM(GLenum type)
168 {
169 switch (type)
170 {
171 case GL_UNSIGNED_BYTE:
172 return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
173 default:
174 UNREACHABLE();
175 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
176 }
177 }
178
ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)179 LoadImageFunctionInfo ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)
180 {
181 switch (type)
182 {
183 case GL_UNSIGNED_BYTE:
184 return LoadImageFunctionInfo(LoadA8ToRGBA8, true);
185 default:
186 UNREACHABLE();
187 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
188 }
189 }
190
ALPHA8_EXT_to_R8_UNORM(GLenum type)191 LoadImageFunctionInfo ALPHA8_EXT_to_R8_UNORM(GLenum type)
192 {
193 switch (type)
194 {
195 case GL_UNSIGNED_BYTE:
196 return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
197 default:
198 UNREACHABLE();
199 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
200 }
201 }
202
BGR565_ANGLEX_to_B5G6R5_UNORM(GLenum type)203 LoadImageFunctionInfo BGR565_ANGLEX_to_B5G6R5_UNORM(GLenum type)
204 {
205 switch (type)
206 {
207 case GL_UNSIGNED_BYTE:
208 return LoadImageFunctionInfo(LoadRGB8ToBGR565, true);
209 case GL_UNSIGNED_SHORT_5_6_5:
210 return LoadImageFunctionInfo(LoadRGB565ToBGR565, true);
211 default:
212 UNREACHABLE();
213 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
214 }
215 }
216
BGR5_A1_ANGLEX_to_default(GLenum type)217 LoadImageFunctionInfo BGR5_A1_ANGLEX_to_default(GLenum type)
218 {
219 switch (type)
220 {
221 case GL_UNSIGNED_BYTE:
222 return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true);
223 case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:
224 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
225 default:
226 UNREACHABLE();
227 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
228 }
229 }
230
BGRA4_ANGLEX_to_default(GLenum type)231 LoadImageFunctionInfo BGRA4_ANGLEX_to_default(GLenum type)
232 {
233 switch (type)
234 {
235 case GL_UNSIGNED_BYTE:
236 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
237 case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT:
238 return LoadImageFunctionInfo(LoadRGBA4ToRGBA8, true);
239 default:
240 UNREACHABLE();
241 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
242 }
243 }
244
BGRA8_EXT_to_default(GLenum type)245 LoadImageFunctionInfo BGRA8_EXT_to_default(GLenum type)
246 {
247 switch (type)
248 {
249 case GL_UNSIGNED_BYTE:
250 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
251 default:
252 UNREACHABLE();
253 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
254 }
255 }
256
BGRA8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB(GLenum type)257 LoadImageFunctionInfo BGRA8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB(GLenum type)
258 {
259 switch (type)
260 {
261 case GL_UNSIGNED_BYTE:
262 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
263 default:
264 UNREACHABLE();
265 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
266 }
267 }
268
BGRA_EXT_to_default(GLenum type)269 LoadImageFunctionInfo BGRA_EXT_to_default(GLenum type)
270 {
271 switch (type)
272 {
273 case GL_UNSIGNED_BYTE:
274 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
275 default:
276 UNREACHABLE();
277 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
278 }
279 }
280
BGRX8_ANGLEX_to_B8G8R8A8_UNORM(GLenum type)281 LoadImageFunctionInfo BGRX8_ANGLEX_to_B8G8R8A8_UNORM(GLenum type)
282 {
283 switch (type)
284 {
285 case GL_UNSIGNED_BYTE:
286 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
287 default:
288 UNREACHABLE();
289 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
290 }
291 }
292
BGRX8_ANGLEX_to_B8G8R8X8_UNORM(GLenum type)293 LoadImageFunctionInfo BGRX8_ANGLEX_to_B8G8R8X8_UNORM(GLenum type)
294 {
295 switch (type)
296 {
297 case GL_UNSIGNED_BYTE:
298 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
299 default:
300 UNREACHABLE();
301 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
302 }
303 }
304
COMPRESSED_R11_EAC_to_EAC_R11_UNORM_BLOCK(GLenum type)305 LoadImageFunctionInfo COMPRESSED_R11_EAC_to_EAC_R11_UNORM_BLOCK(GLenum type)
306 {
307 switch (type)
308 {
309 case GL_UNSIGNED_BYTE:
310 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
311 default:
312 UNREACHABLE();
313 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
314 }
315 }
316
COMPRESSED_R11_EAC_to_R16_FLOAT(GLenum type)317 LoadImageFunctionInfo COMPRESSED_R11_EAC_to_R16_FLOAT(GLenum type)
318 {
319 switch (type)
320 {
321 case GL_UNSIGNED_BYTE:
322 return LoadImageFunctionInfo(LoadEACR11ToR16F, true);
323 default:
324 UNREACHABLE();
325 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
326 }
327 }
328
COMPRESSED_R11_EAC_to_R16_UNORM(GLenum type)329 LoadImageFunctionInfo COMPRESSED_R11_EAC_to_R16_UNORM(GLenum type)
330 {
331 switch (type)
332 {
333 case GL_UNSIGNED_BYTE:
334 return LoadImageFunctionInfo(LoadEACR11ToR16, true);
335 default:
336 UNREACHABLE();
337 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
338 }
339 }
340
COMPRESSED_RED_GREEN_RGTC2_EXT_to_default(GLenum type)341 LoadImageFunctionInfo COMPRESSED_RED_GREEN_RGTC2_EXT_to_default(GLenum type)
342 {
343 switch (type)
344 {
345 case GL_UNSIGNED_BYTE:
346 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
347 default:
348 UNREACHABLE();
349 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
350 }
351 }
352
COMPRESSED_RED_RGTC1_EXT_to_default(GLenum type)353 LoadImageFunctionInfo COMPRESSED_RED_RGTC1_EXT_to_default(GLenum type)
354 {
355 switch (type)
356 {
357 case GL_UNSIGNED_BYTE:
358 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
359 default:
360 UNREACHABLE();
361 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
362 }
363 }
364
COMPRESSED_RG11_EAC_to_EAC_R11G11_UNORM_BLOCK(GLenum type)365 LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_EAC_R11G11_UNORM_BLOCK(GLenum type)
366 {
367 switch (type)
368 {
369 case GL_UNSIGNED_BYTE:
370 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
371 default:
372 UNREACHABLE();
373 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
374 }
375 }
376
COMPRESSED_RG11_EAC_to_R16G16_FLOAT(GLenum type)377 LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_R16G16_FLOAT(GLenum type)
378 {
379 switch (type)
380 {
381 case GL_UNSIGNED_BYTE:
382 return LoadImageFunctionInfo(LoadEACRG11ToRG16F, true);
383 default:
384 UNREACHABLE();
385 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
386 }
387 }
388
COMPRESSED_RG11_EAC_to_R16G16_UNORM(GLenum type)389 LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_R16G16_UNORM(GLenum type)
390 {
391 switch (type)
392 {
393 case GL_UNSIGNED_BYTE:
394 return LoadImageFunctionInfo(LoadEACRG11ToRG16, true);
395 default:
396 UNREACHABLE();
397 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
398 }
399 }
400
COMPRESSED_RGB8_ETC2_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)401 LoadImageFunctionInfo COMPRESSED_RGB8_ETC2_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)
402 {
403 switch (type)
404 {
405 case GL_UNSIGNED_BYTE:
406 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
407 default:
408 UNREACHABLE();
409 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
410 }
411 }
412
COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM(GLenum type)413 LoadImageFunctionInfo COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM(GLenum type)
414 {
415 switch (type)
416 {
417 case GL_UNSIGNED_BYTE:
418 return LoadImageFunctionInfo(LoadETC2RGB8ToRGBA8, true);
419 default:
420 UNREACHABLE();
421 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
422 }
423 }
424
COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)425 LoadImageFunctionInfo COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)
426 {
427 switch (type)
428 {
429 case GL_UNSIGNED_BYTE:
430 return LoadImageFunctionInfo(LoadETC2RGB8ToBC1, true);
431 default:
432 UNREACHABLE();
433 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
434 }
435 }
436
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_UNORM_BLOCK(GLenum type)437 LoadImageFunctionInfo COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_UNORM_BLOCK(
438 GLenum type)
439 {
440 switch (type)
441 {
442 case GL_UNSIGNED_BYTE:
443 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
444 default:
445 UNREACHABLE();
446 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
447 }
448 }
449
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM(GLenum type)450 LoadImageFunctionInfo COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM(GLenum type)
451 {
452 switch (type)
453 {
454 case GL_UNSIGNED_BYTE:
455 return LoadImageFunctionInfo(LoadETC2RGB8A1ToRGBA8, true);
456 default:
457 UNREACHABLE();
458 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
459 }
460 }
461
462 LoadImageFunctionInfo
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_BLOCK(GLenum type)463 COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_BLOCK(GLenum type)
464 {
465 switch (type)
466 {
467 case GL_UNSIGNED_BYTE:
468 return LoadImageFunctionInfo(LoadETC2RGB8A1ToBC1, true);
469 default:
470 UNREACHABLE();
471 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
472 }
473 }
474
COMPRESSED_RGBA8_ETC2_EAC_to_ETC2_R8G8B8A8_UNORM_BLOCK(GLenum type)475 LoadImageFunctionInfo COMPRESSED_RGBA8_ETC2_EAC_to_ETC2_R8G8B8A8_UNORM_BLOCK(GLenum type)
476 {
477 switch (type)
478 {
479 case GL_UNSIGNED_BYTE:
480 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
481 default:
482 UNREACHABLE();
483 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
484 }
485 }
486
COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM(GLenum type)487 LoadImageFunctionInfo COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM(GLenum type)
488 {
489 switch (type)
490 {
491 case GL_UNSIGNED_BYTE:
492 return LoadImageFunctionInfo(LoadETC2RGBA8ToRGBA8, true);
493 default:
494 UNREACHABLE();
495 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
496 }
497 }
498
COMPRESSED_RGBA_ASTC_10x10_KHR_to_default(GLenum type)499 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x10_KHR_to_default(GLenum type)
500 {
501 switch (type)
502 {
503 case GL_UNSIGNED_BYTE:
504 return LoadImageFunctionInfo(LoadCompressedToNative<10, 10, 1, 16>, true);
505 default:
506 UNREACHABLE();
507 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
508 }
509 }
510
COMPRESSED_RGBA_ASTC_10x5_KHR_to_default(GLenum type)511 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x5_KHR_to_default(GLenum type)
512 {
513 switch (type)
514 {
515 case GL_UNSIGNED_BYTE:
516 return LoadImageFunctionInfo(LoadCompressedToNative<10, 5, 1, 16>, true);
517 default:
518 UNREACHABLE();
519 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
520 }
521 }
522
COMPRESSED_RGBA_ASTC_10x6_KHR_to_default(GLenum type)523 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x6_KHR_to_default(GLenum type)
524 {
525 switch (type)
526 {
527 case GL_UNSIGNED_BYTE:
528 return LoadImageFunctionInfo(LoadCompressedToNative<10, 6, 1, 16>, true);
529 default:
530 UNREACHABLE();
531 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
532 }
533 }
534
COMPRESSED_RGBA_ASTC_10x8_KHR_to_default(GLenum type)535 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x8_KHR_to_default(GLenum type)
536 {
537 switch (type)
538 {
539 case GL_UNSIGNED_BYTE:
540 return LoadImageFunctionInfo(LoadCompressedToNative<10, 8, 1, 16>, true);
541 default:
542 UNREACHABLE();
543 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
544 }
545 }
546
COMPRESSED_RGBA_ASTC_12x10_KHR_to_default(GLenum type)547 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_12x10_KHR_to_default(GLenum type)
548 {
549 switch (type)
550 {
551 case GL_UNSIGNED_BYTE:
552 return LoadImageFunctionInfo(LoadCompressedToNative<12, 10, 1, 16>, true);
553 default:
554 UNREACHABLE();
555 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
556 }
557 }
558
COMPRESSED_RGBA_ASTC_12x12_KHR_to_default(GLenum type)559 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_12x12_KHR_to_default(GLenum type)
560 {
561 switch (type)
562 {
563 case GL_UNSIGNED_BYTE:
564 return LoadImageFunctionInfo(LoadCompressedToNative<12, 12, 1, 16>, true);
565 default:
566 UNREACHABLE();
567 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
568 }
569 }
570
COMPRESSED_RGBA_ASTC_3x3x3_OES_to_default(GLenum type)571 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_3x3x3_OES_to_default(GLenum type)
572 {
573 switch (type)
574 {
575 case GL_UNSIGNED_BYTE:
576 return LoadImageFunctionInfo(LoadCompressedToNative<3, 3, 3, 16>, true);
577 default:
578 UNREACHABLE();
579 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
580 }
581 }
582
COMPRESSED_RGBA_ASTC_4x3x3_OES_to_default(GLenum type)583 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x3x3_OES_to_default(GLenum type)
584 {
585 switch (type)
586 {
587 case GL_UNSIGNED_BYTE:
588 return LoadImageFunctionInfo(LoadCompressedToNative<4, 3, 3, 16>, true);
589 default:
590 UNREACHABLE();
591 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
592 }
593 }
594
COMPRESSED_RGBA_ASTC_4x4_KHR_to_default(GLenum type)595 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x4_KHR_to_default(GLenum type)
596 {
597 switch (type)
598 {
599 case GL_UNSIGNED_BYTE:
600 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
601 default:
602 UNREACHABLE();
603 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
604 }
605 }
606
COMPRESSED_RGBA_ASTC_4x4x3_OES_to_default(GLenum type)607 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x4x3_OES_to_default(GLenum type)
608 {
609 switch (type)
610 {
611 case GL_UNSIGNED_BYTE:
612 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 3, 16>, true);
613 default:
614 UNREACHABLE();
615 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
616 }
617 }
618
COMPRESSED_RGBA_ASTC_4x4x4_OES_to_default(GLenum type)619 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x4x4_OES_to_default(GLenum type)
620 {
621 switch (type)
622 {
623 case GL_UNSIGNED_BYTE:
624 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 4, 16>, true);
625 default:
626 UNREACHABLE();
627 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
628 }
629 }
630
COMPRESSED_RGBA_ASTC_5x4_KHR_to_default(GLenum type)631 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x4_KHR_to_default(GLenum type)
632 {
633 switch (type)
634 {
635 case GL_UNSIGNED_BYTE:
636 return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 1, 16>, true);
637 default:
638 UNREACHABLE();
639 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
640 }
641 }
642
COMPRESSED_RGBA_ASTC_5x4x4_OES_to_default(GLenum type)643 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x4x4_OES_to_default(GLenum type)
644 {
645 switch (type)
646 {
647 case GL_UNSIGNED_BYTE:
648 return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 4, 16>, true);
649 default:
650 UNREACHABLE();
651 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
652 }
653 }
654
COMPRESSED_RGBA_ASTC_5x5_KHR_to_default(GLenum type)655 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x5_KHR_to_default(GLenum type)
656 {
657 switch (type)
658 {
659 case GL_UNSIGNED_BYTE:
660 return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 1, 16>, true);
661 default:
662 UNREACHABLE();
663 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
664 }
665 }
666
COMPRESSED_RGBA_ASTC_5x5x4_OES_to_default(GLenum type)667 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x5x4_OES_to_default(GLenum type)
668 {
669 switch (type)
670 {
671 case GL_UNSIGNED_BYTE:
672 return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 4, 16>, true);
673 default:
674 UNREACHABLE();
675 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
676 }
677 }
678
COMPRESSED_RGBA_ASTC_5x5x5_OES_to_default(GLenum type)679 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x5x5_OES_to_default(GLenum type)
680 {
681 switch (type)
682 {
683 case GL_UNSIGNED_BYTE:
684 return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 5, 16>, true);
685 default:
686 UNREACHABLE();
687 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
688 }
689 }
690
COMPRESSED_RGBA_ASTC_6x5_KHR_to_default(GLenum type)691 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x5_KHR_to_default(GLenum type)
692 {
693 switch (type)
694 {
695 case GL_UNSIGNED_BYTE:
696 return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 1, 16>, true);
697 default:
698 UNREACHABLE();
699 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
700 }
701 }
702
COMPRESSED_RGBA_ASTC_6x5x5_OES_to_default(GLenum type)703 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x5x5_OES_to_default(GLenum type)
704 {
705 switch (type)
706 {
707 case GL_UNSIGNED_BYTE:
708 return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 5, 16>, true);
709 default:
710 UNREACHABLE();
711 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
712 }
713 }
714
COMPRESSED_RGBA_ASTC_6x6_KHR_to_default(GLenum type)715 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x6_KHR_to_default(GLenum type)
716 {
717 switch (type)
718 {
719 case GL_UNSIGNED_BYTE:
720 return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 1, 16>, true);
721 default:
722 UNREACHABLE();
723 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
724 }
725 }
726
COMPRESSED_RGBA_ASTC_6x6x5_OES_to_default(GLenum type)727 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x6x5_OES_to_default(GLenum type)
728 {
729 switch (type)
730 {
731 case GL_UNSIGNED_BYTE:
732 return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 5, 16>, true);
733 default:
734 UNREACHABLE();
735 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
736 }
737 }
738
COMPRESSED_RGBA_ASTC_6x6x6_OES_to_default(GLenum type)739 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x6x6_OES_to_default(GLenum type)
740 {
741 switch (type)
742 {
743 case GL_UNSIGNED_BYTE:
744 return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 6, 16>, true);
745 default:
746 UNREACHABLE();
747 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
748 }
749 }
750
COMPRESSED_RGBA_ASTC_8x5_KHR_to_default(GLenum type)751 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x5_KHR_to_default(GLenum type)
752 {
753 switch (type)
754 {
755 case GL_UNSIGNED_BYTE:
756 return LoadImageFunctionInfo(LoadCompressedToNative<8, 5, 1, 16>, true);
757 default:
758 UNREACHABLE();
759 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
760 }
761 }
762
COMPRESSED_RGBA_ASTC_8x6_KHR_to_default(GLenum type)763 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x6_KHR_to_default(GLenum type)
764 {
765 switch (type)
766 {
767 case GL_UNSIGNED_BYTE:
768 return LoadImageFunctionInfo(LoadCompressedToNative<8, 6, 1, 16>, true);
769 default:
770 UNREACHABLE();
771 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
772 }
773 }
774
COMPRESSED_RGBA_ASTC_8x8_KHR_to_default(GLenum type)775 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x8_KHR_to_default(GLenum type)
776 {
777 switch (type)
778 {
779 case GL_UNSIGNED_BYTE:
780 return LoadImageFunctionInfo(LoadCompressedToNative<8, 8, 1, 16>, true);
781 default:
782 UNREACHABLE();
783 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
784 }
785 }
786
COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default(GLenum type)787 LoadImageFunctionInfo COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default(GLenum type)
788 {
789 switch (type)
790 {
791 case GL_UNSIGNED_BYTE:
792 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
793 default:
794 UNREACHABLE();
795 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
796 }
797 }
798
COMPRESSED_RGBA_S3TC_DXT1_EXT_to_default(GLenum type)799 LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT1_EXT_to_default(GLenum type)
800 {
801 switch (type)
802 {
803 case GL_UNSIGNED_BYTE:
804 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
805 default:
806 UNREACHABLE();
807 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
808 }
809 }
810
COMPRESSED_RGBA_S3TC_DXT3_ANGLE_to_default(GLenum type)811 LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT3_ANGLE_to_default(GLenum type)
812 {
813 switch (type)
814 {
815 case GL_UNSIGNED_BYTE:
816 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
817 default:
818 UNREACHABLE();
819 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
820 }
821 }
822
COMPRESSED_RGBA_S3TC_DXT5_ANGLE_to_default(GLenum type)823 LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT5_ANGLE_to_default(GLenum type)
824 {
825 switch (type)
826 {
827 case GL_UNSIGNED_BYTE:
828 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
829 default:
830 UNREACHABLE();
831 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
832 }
833 }
834
COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT_to_default(GLenum type)835 LoadImageFunctionInfo COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT_to_default(GLenum type)
836 {
837 switch (type)
838 {
839 case GL_UNSIGNED_BYTE:
840 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
841 default:
842 UNREACHABLE();
843 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
844 }
845 }
846
COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT_to_default(GLenum type)847 LoadImageFunctionInfo COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT_to_default(GLenum type)
848 {
849 switch (type)
850 {
851 case GL_UNSIGNED_BYTE:
852 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
853 default:
854 UNREACHABLE();
855 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
856 }
857 }
858
COMPRESSED_RGB_S3TC_DXT1_EXT_to_default(GLenum type)859 LoadImageFunctionInfo COMPRESSED_RGB_S3TC_DXT1_EXT_to_default(GLenum type)
860 {
861 switch (type)
862 {
863 case GL_UNSIGNED_BYTE:
864 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
865 default:
866 UNREACHABLE();
867 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
868 }
869 }
870
COMPRESSED_SIGNED_R11_EAC_to_EAC_R11_SNORM_BLOCK(GLenum type)871 LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_EAC_R11_SNORM_BLOCK(GLenum type)
872 {
873 switch (type)
874 {
875 case GL_UNSIGNED_BYTE:
876 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
877 default:
878 UNREACHABLE();
879 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
880 }
881 }
882
COMPRESSED_SIGNED_R11_EAC_to_R16_FLOAT(GLenum type)883 LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_R16_FLOAT(GLenum type)
884 {
885 switch (type)
886 {
887 case GL_UNSIGNED_BYTE:
888 return LoadImageFunctionInfo(LoadEACR11SToR16F, true);
889 default:
890 UNREACHABLE();
891 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
892 }
893 }
894
COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM(GLenum type)895 LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM(GLenum type)
896 {
897 switch (type)
898 {
899 case GL_UNSIGNED_BYTE:
900 return LoadImageFunctionInfo(LoadEACR11SToR16, true);
901 default:
902 UNREACHABLE();
903 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
904 }
905 }
906
COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT_to_default(GLenum type)907 LoadImageFunctionInfo COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT_to_default(GLenum type)
908 {
909 switch (type)
910 {
911 case GL_UNSIGNED_BYTE:
912 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
913 default:
914 UNREACHABLE();
915 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
916 }
917 }
918
COMPRESSED_SIGNED_RED_RGTC1_EXT_to_default(GLenum type)919 LoadImageFunctionInfo COMPRESSED_SIGNED_RED_RGTC1_EXT_to_default(GLenum type)
920 {
921 switch (type)
922 {
923 case GL_UNSIGNED_BYTE:
924 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
925 default:
926 UNREACHABLE();
927 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
928 }
929 }
930
COMPRESSED_SIGNED_RG11_EAC_to_EAC_R11G11_SNORM_BLOCK(GLenum type)931 LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_EAC_R11G11_SNORM_BLOCK(GLenum type)
932 {
933 switch (type)
934 {
935 case GL_UNSIGNED_BYTE:
936 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
937 default:
938 UNREACHABLE();
939 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
940 }
941 }
942
COMPRESSED_SIGNED_RG11_EAC_to_R16G16_FLOAT(GLenum type)943 LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_R16G16_FLOAT(GLenum type)
944 {
945 switch (type)
946 {
947 case GL_UNSIGNED_BYTE:
948 return LoadImageFunctionInfo(LoadEACRG11SToRG16F, true);
949 default:
950 UNREACHABLE();
951 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
952 }
953 }
954
COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM(GLenum type)955 LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM(GLenum type)
956 {
957 switch (type)
958 {
959 case GL_UNSIGNED_BYTE:
960 return LoadImageFunctionInfo(LoadEACRG11SToRG16, true);
961 default:
962 UNREACHABLE();
963 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
964 }
965 }
966
COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_default(GLenum type)967 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_default(GLenum type)
968 {
969 switch (type)
970 {
971 case GL_UNSIGNED_BYTE:
972 return LoadImageFunctionInfo(LoadCompressedToNative<10, 10, 1, 16>, true);
973 default:
974 UNREACHABLE();
975 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
976 }
977 }
978
COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_default(GLenum type)979 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_default(GLenum type)
980 {
981 switch (type)
982 {
983 case GL_UNSIGNED_BYTE:
984 return LoadImageFunctionInfo(LoadCompressedToNative<10, 5, 1, 16>, true);
985 default:
986 UNREACHABLE();
987 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
988 }
989 }
990
COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_default(GLenum type)991 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_default(GLenum type)
992 {
993 switch (type)
994 {
995 case GL_UNSIGNED_BYTE:
996 return LoadImageFunctionInfo(LoadCompressedToNative<10, 6, 1, 16>, true);
997 default:
998 UNREACHABLE();
999 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1000 }
1001 }
1002
COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_default(GLenum type)1003 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_default(GLenum type)
1004 {
1005 switch (type)
1006 {
1007 case GL_UNSIGNED_BYTE:
1008 return LoadImageFunctionInfo(LoadCompressedToNative<10, 8, 1, 16>, true);
1009 default:
1010 UNREACHABLE();
1011 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1012 }
1013 }
1014
COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_default(GLenum type)1015 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_default(GLenum type)
1016 {
1017 switch (type)
1018 {
1019 case GL_UNSIGNED_BYTE:
1020 return LoadImageFunctionInfo(LoadCompressedToNative<12, 10, 1, 16>, true);
1021 default:
1022 UNREACHABLE();
1023 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1024 }
1025 }
1026
COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_default(GLenum type)1027 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_default(GLenum type)
1028 {
1029 switch (type)
1030 {
1031 case GL_UNSIGNED_BYTE:
1032 return LoadImageFunctionInfo(LoadCompressedToNative<12, 12, 1, 16>, true);
1033 default:
1034 UNREACHABLE();
1035 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1036 }
1037 }
1038
COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES_to_default(GLenum type)1039 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES_to_default(GLenum type)
1040 {
1041 switch (type)
1042 {
1043 case GL_UNSIGNED_BYTE:
1044 return LoadImageFunctionInfo(LoadCompressedToNative<3, 3, 3, 16>, true);
1045 default:
1046 UNREACHABLE();
1047 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1048 }
1049 }
1050
COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES_to_default(GLenum type)1051 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES_to_default(GLenum type)
1052 {
1053 switch (type)
1054 {
1055 case GL_UNSIGNED_BYTE:
1056 return LoadImageFunctionInfo(LoadCompressedToNative<4, 3, 3, 16>, true);
1057 default:
1058 UNREACHABLE();
1059 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1060 }
1061 }
1062
COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_default(GLenum type)1063 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_default(GLenum type)
1064 {
1065 switch (type)
1066 {
1067 case GL_UNSIGNED_BYTE:
1068 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
1069 default:
1070 UNREACHABLE();
1071 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1072 }
1073 }
1074
COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES_to_default(GLenum type)1075 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES_to_default(GLenum type)
1076 {
1077 switch (type)
1078 {
1079 case GL_UNSIGNED_BYTE:
1080 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 3, 16>, true);
1081 default:
1082 UNREACHABLE();
1083 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1084 }
1085 }
1086
COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES_to_default(GLenum type)1087 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES_to_default(GLenum type)
1088 {
1089 switch (type)
1090 {
1091 case GL_UNSIGNED_BYTE:
1092 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 4, 16>, true);
1093 default:
1094 UNREACHABLE();
1095 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1096 }
1097 }
1098
COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_default(GLenum type)1099 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_default(GLenum type)
1100 {
1101 switch (type)
1102 {
1103 case GL_UNSIGNED_BYTE:
1104 return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 1, 16>, true);
1105 default:
1106 UNREACHABLE();
1107 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1108 }
1109 }
1110
COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES_to_default(GLenum type)1111 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES_to_default(GLenum type)
1112 {
1113 switch (type)
1114 {
1115 case GL_UNSIGNED_BYTE:
1116 return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 4, 16>, true);
1117 default:
1118 UNREACHABLE();
1119 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1120 }
1121 }
1122
COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_default(GLenum type)1123 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_default(GLenum type)
1124 {
1125 switch (type)
1126 {
1127 case GL_UNSIGNED_BYTE:
1128 return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 1, 16>, true);
1129 default:
1130 UNREACHABLE();
1131 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1132 }
1133 }
1134
COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES_to_default(GLenum type)1135 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES_to_default(GLenum type)
1136 {
1137 switch (type)
1138 {
1139 case GL_UNSIGNED_BYTE:
1140 return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 4, 16>, true);
1141 default:
1142 UNREACHABLE();
1143 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1144 }
1145 }
1146
COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES_to_default(GLenum type)1147 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES_to_default(GLenum type)
1148 {
1149 switch (type)
1150 {
1151 case GL_UNSIGNED_BYTE:
1152 return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 5, 16>, true);
1153 default:
1154 UNREACHABLE();
1155 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1156 }
1157 }
1158
COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_default(GLenum type)1159 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_default(GLenum type)
1160 {
1161 switch (type)
1162 {
1163 case GL_UNSIGNED_BYTE:
1164 return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 1, 16>, true);
1165 default:
1166 UNREACHABLE();
1167 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1168 }
1169 }
1170
COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES_to_default(GLenum type)1171 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES_to_default(GLenum type)
1172 {
1173 switch (type)
1174 {
1175 case GL_UNSIGNED_BYTE:
1176 return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 5, 16>, true);
1177 default:
1178 UNREACHABLE();
1179 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1180 }
1181 }
1182
COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_default(GLenum type)1183 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_default(GLenum type)
1184 {
1185 switch (type)
1186 {
1187 case GL_UNSIGNED_BYTE:
1188 return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 1, 16>, true);
1189 default:
1190 UNREACHABLE();
1191 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1192 }
1193 }
1194
COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES_to_default(GLenum type)1195 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES_to_default(GLenum type)
1196 {
1197 switch (type)
1198 {
1199 case GL_UNSIGNED_BYTE:
1200 return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 5, 16>, true);
1201 default:
1202 UNREACHABLE();
1203 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1204 }
1205 }
1206
COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES_to_default(GLenum type)1207 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES_to_default(GLenum type)
1208 {
1209 switch (type)
1210 {
1211 case GL_UNSIGNED_BYTE:
1212 return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 6, 16>, true);
1213 default:
1214 UNREACHABLE();
1215 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1216 }
1217 }
1218
COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_default(GLenum type)1219 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_default(GLenum type)
1220 {
1221 switch (type)
1222 {
1223 case GL_UNSIGNED_BYTE:
1224 return LoadImageFunctionInfo(LoadCompressedToNative<8, 5, 1, 16>, true);
1225 default:
1226 UNREACHABLE();
1227 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1228 }
1229 }
1230
COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_default(GLenum type)1231 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_default(GLenum type)
1232 {
1233 switch (type)
1234 {
1235 case GL_UNSIGNED_BYTE:
1236 return LoadImageFunctionInfo(LoadCompressedToNative<8, 6, 1, 16>, true);
1237 default:
1238 UNREACHABLE();
1239 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1240 }
1241 }
1242
COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_default(GLenum type)1243 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_default(GLenum type)
1244 {
1245 switch (type)
1246 {
1247 case GL_UNSIGNED_BYTE:
1248 return LoadImageFunctionInfo(LoadCompressedToNative<8, 8, 1, 16>, true);
1249 default:
1250 UNREACHABLE();
1251 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1252 }
1253 }
1254
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_ETC2_R8G8B8A8_SRGB_BLOCK(GLenum type)1255 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_ETC2_R8G8B8A8_SRGB_BLOCK(GLenum type)
1256 {
1257 switch (type)
1258 {
1259 case GL_UNSIGNED_BYTE:
1260 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
1261 default:
1262 UNREACHABLE();
1263 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1264 }
1265 }
1266
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB(GLenum type)1267 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1268 {
1269 switch (type)
1270 {
1271 case GL_UNSIGNED_BYTE:
1272 return LoadImageFunctionInfo(LoadETC2SRGBA8ToSRGBA8, true);
1273 default:
1274 UNREACHABLE();
1275 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1276 }
1277 }
1278
COMPRESSED_SRGB8_ETC2_to_ETC2_R8G8B8_SRGB_BLOCK(GLenum type)1279 LoadImageFunctionInfo COMPRESSED_SRGB8_ETC2_to_ETC2_R8G8B8_SRGB_BLOCK(GLenum type)
1280 {
1281 switch (type)
1282 {
1283 case GL_UNSIGNED_BYTE:
1284 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
1285 default:
1286 UNREACHABLE();
1287 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1288 }
1289 }
1290
COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)1291 LoadImageFunctionInfo COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1292 {
1293 switch (type)
1294 {
1295 case GL_UNSIGNED_BYTE:
1296 return LoadImageFunctionInfo(LoadETC2SRGB8ToRGBA8, true);
1297 default:
1298 UNREACHABLE();
1299 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1300 }
1301 }
1302
COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_SRGB_BLOCK(GLenum type)1303 LoadImageFunctionInfo COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_SRGB_BLOCK(
1304 GLenum type)
1305 {
1306 switch (type)
1307 {
1308 case GL_UNSIGNED_BYTE:
1309 return LoadImageFunctionInfo(LoadETC2SRGB8ToBC1, true);
1310 default:
1311 UNREACHABLE();
1312 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1313 }
1314 }
1315
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_SRGB_BLOCK(GLenum type)1316 LoadImageFunctionInfo COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_SRGB_BLOCK(
1317 GLenum type)
1318 {
1319 switch (type)
1320 {
1321 case GL_UNSIGNED_BYTE:
1322 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
1323 default:
1324 UNREACHABLE();
1325 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1326 }
1327 }
1328
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)1329 LoadImageFunctionInfo COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1330 {
1331 switch (type)
1332 {
1333 case GL_UNSIGNED_BYTE:
1334 return LoadImageFunctionInfo(LoadETC2SRGB8A1ToRGBA8, true);
1335 default:
1336 UNREACHABLE();
1337 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1338 }
1339 }
1340
1341 LoadImageFunctionInfo
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_SRGB_BLOCK(GLenum type)1342 COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_SRGB_BLOCK(
1343 GLenum type)
1344 {
1345 switch (type)
1346 {
1347 case GL_UNSIGNED_BYTE:
1348 return LoadImageFunctionInfo(LoadETC2SRGB8A1ToBC1, true);
1349 default:
1350 UNREACHABLE();
1351 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1352 }
1353 }
1354
COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default(GLenum type)1355 LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default(GLenum type)
1356 {
1357 switch (type)
1358 {
1359 case GL_UNSIGNED_BYTE:
1360 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
1361 default:
1362 UNREACHABLE();
1363 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1364 }
1365 }
1366
COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT_to_default(GLenum type)1367 LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT_to_default(GLenum type)
1368 {
1369 switch (type)
1370 {
1371 case GL_UNSIGNED_BYTE:
1372 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
1373 default:
1374 UNREACHABLE();
1375 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1376 }
1377 }
1378
COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT_to_default(GLenum type)1379 LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT_to_default(GLenum type)
1380 {
1381 switch (type)
1382 {
1383 case GL_UNSIGNED_BYTE:
1384 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
1385 default:
1386 UNREACHABLE();
1387 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1388 }
1389 }
1390
COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT_to_default(GLenum type)1391 LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT_to_default(GLenum type)
1392 {
1393 switch (type)
1394 {
1395 case GL_UNSIGNED_BYTE:
1396 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, true);
1397 default:
1398 UNREACHABLE();
1399 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1400 }
1401 }
1402
COMPRESSED_SRGB_S3TC_DXT1_EXT_to_default(GLenum type)1403 LoadImageFunctionInfo COMPRESSED_SRGB_S3TC_DXT1_EXT_to_default(GLenum type)
1404 {
1405 switch (type)
1406 {
1407 case GL_UNSIGNED_BYTE:
1408 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
1409 default:
1410 UNREACHABLE();
1411 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1412 }
1413 }
1414
DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)1415 LoadImageFunctionInfo DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)
1416 {
1417 switch (type)
1418 {
1419 case GL_UNSIGNED_INT_24_8:
1420 return LoadImageFunctionInfo(LoadR32ToR24G8, true);
1421 default:
1422 UNREACHABLE();
1423 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1424 }
1425 }
1426
DEPTH24_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)1427 LoadImageFunctionInfo DEPTH24_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)
1428 {
1429 switch (type)
1430 {
1431 case GL_UNSIGNED_INT_24_8:
1432 return LoadImageFunctionInfo(LoadD24S8ToD32FS8X24, true);
1433 default:
1434 UNREACHABLE();
1435 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1436 }
1437 }
1438
DEPTH32F_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)1439 LoadImageFunctionInfo DEPTH32F_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)
1440 {
1441 switch (type)
1442 {
1443 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
1444 return LoadImageFunctionInfo(LoadD32FS8X24ToD24S8, true);
1445 default:
1446 UNREACHABLE();
1447 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1448 }
1449 }
1450
DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)1451 LoadImageFunctionInfo DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)
1452 {
1453 switch (type)
1454 {
1455 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
1456 return LoadImageFunctionInfo(LoadD32FS8X24ToD32FS8X24, true);
1457 default:
1458 UNREACHABLE();
1459 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1460 }
1461 }
1462
DEPTH_COMPONENT16_to_D16_UNORM(GLenum type)1463 LoadImageFunctionInfo DEPTH_COMPONENT16_to_D16_UNORM(GLenum type)
1464 {
1465 switch (type)
1466 {
1467 case GL_UNSIGNED_INT:
1468 return LoadImageFunctionInfo(LoadR32ToR16, true);
1469 case GL_UNSIGNED_SHORT:
1470 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
1471 default:
1472 UNREACHABLE();
1473 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1474 }
1475 }
1476
DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT(GLenum type)1477 LoadImageFunctionInfo DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT(GLenum type)
1478 {
1479 switch (type)
1480 {
1481 case GL_UNSIGNED_INT:
1482 return LoadImageFunctionInfo(LoadR32ToR24G8, true);
1483 default:
1484 UNREACHABLE();
1485 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1486 }
1487 }
1488
DEPTH_COMPONENT24_to_D24_UNORM_X8_UINT(GLenum type)1489 LoadImageFunctionInfo DEPTH_COMPONENT24_to_D24_UNORM_X8_UINT(GLenum type)
1490 {
1491 switch (type)
1492 {
1493 case GL_UNSIGNED_INT:
1494 return LoadImageFunctionInfo(LoadR32ToR24G8, true);
1495 default:
1496 UNREACHABLE();
1497 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1498 }
1499 }
1500
DEPTH_COMPONENT24_to_D32_FLOAT_S8X24_UINT(GLenum type)1501 LoadImageFunctionInfo DEPTH_COMPONENT24_to_D32_FLOAT_S8X24_UINT(GLenum type)
1502 {
1503 switch (type)
1504 {
1505 case GL_UNSIGNED_INT:
1506 return LoadImageFunctionInfo(LoadD32ToD32FX32, true);
1507 case GL_UNSIGNED_INT_24_8:
1508 return LoadImageFunctionInfo(LoadD24S8ToD32FS8X24, true);
1509 default:
1510 UNREACHABLE();
1511 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1512 }
1513 }
1514
DEPTH_COMPONENT32F_to_D32_FLOAT(GLenum type)1515 LoadImageFunctionInfo DEPTH_COMPONENT32F_to_D32_FLOAT(GLenum type)
1516 {
1517 switch (type)
1518 {
1519 case GL_FLOAT:
1520 return LoadImageFunctionInfo(LoadD32FToD32F, true);
1521 default:
1522 UNREACHABLE();
1523 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1524 }
1525 }
1526
DEPTH_COMPONENT32_OES_to_D32_FLOAT(GLenum type)1527 LoadImageFunctionInfo DEPTH_COMPONENT32_OES_to_D32_FLOAT(GLenum type)
1528 {
1529 switch (type)
1530 {
1531 case GL_UNSIGNED_INT:
1532 return LoadImageFunctionInfo(LoadD32ToD32F, true);
1533 default:
1534 UNREACHABLE();
1535 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1536 }
1537 }
1538
DEPTH_COMPONENT32_OES_to_default(GLenum type)1539 LoadImageFunctionInfo DEPTH_COMPONENT32_OES_to_default(GLenum type)
1540 {
1541 switch (type)
1542 {
1543 case GL_UNSIGNED_INT:
1544 return LoadImageFunctionInfo(LoadR32ToR24G8, true);
1545 default:
1546 UNREACHABLE();
1547 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1548 }
1549 }
1550
ETC1_RGB8_LOSSY_DECODE_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)1551 LoadImageFunctionInfo ETC1_RGB8_LOSSY_DECODE_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)
1552 {
1553 switch (type)
1554 {
1555 case GL_UNSIGNED_BYTE:
1556 return LoadImageFunctionInfo(LoadETC1RGB8ToBC1, true);
1557 default:
1558 UNREACHABLE();
1559 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1560 }
1561 }
1562
ETC1_RGB8_OES_to_ETC1_R8G8B8_UNORM_BLOCK(GLenum type)1563 LoadImageFunctionInfo ETC1_RGB8_OES_to_ETC1_R8G8B8_UNORM_BLOCK(GLenum type)
1564 {
1565 switch (type)
1566 {
1567 case GL_UNSIGNED_BYTE:
1568 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
1569 default:
1570 UNREACHABLE();
1571 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1572 }
1573 }
1574
ETC1_RGB8_OES_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)1575 LoadImageFunctionInfo ETC1_RGB8_OES_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)
1576 {
1577 switch (type)
1578 {
1579 case GL_UNSIGNED_BYTE:
1580 return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, true);
1581 default:
1582 UNREACHABLE();
1583 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1584 }
1585 }
1586
ETC1_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)1587 LoadImageFunctionInfo ETC1_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)
1588 {
1589 switch (type)
1590 {
1591 case GL_UNSIGNED_BYTE:
1592 return LoadImageFunctionInfo(LoadETC1RGB8ToRGBA8, true);
1593 default:
1594 UNREACHABLE();
1595 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1596 }
1597 }
1598
LUMINANCE_to_R16G16B16A16_FLOAT(GLenum type)1599 LoadImageFunctionInfo LUMINANCE_to_R16G16B16A16_FLOAT(GLenum type)
1600 {
1601 switch (type)
1602 {
1603 case GL_HALF_FLOAT:
1604 return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
1605 case GL_HALF_FLOAT_OES:
1606 return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
1607 case GL_UNSIGNED_BYTE:
1608 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1609 default:
1610 UNREACHABLE();
1611 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1612 }
1613 }
1614
LUMINANCE_to_R32G32B32A32_FLOAT(GLenum type)1615 LoadImageFunctionInfo LUMINANCE_to_R32G32B32A32_FLOAT(GLenum type)
1616 {
1617 switch (type)
1618 {
1619 case GL_FLOAT:
1620 return LoadImageFunctionInfo(LoadL32FToRGBA32F, true);
1621 case GL_UNSIGNED_BYTE:
1622 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1623 default:
1624 UNREACHABLE();
1625 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1626 }
1627 }
1628
LUMINANCE_to_default(GLenum type)1629 LoadImageFunctionInfo LUMINANCE_to_default(GLenum type)
1630 {
1631 switch (type)
1632 {
1633 case GL_UNSIGNED_BYTE:
1634 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1635 default:
1636 UNREACHABLE();
1637 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1638 }
1639 }
1640
LUMINANCE16F_EXT_to_R16_FLOAT(GLenum type)1641 LoadImageFunctionInfo LUMINANCE16F_EXT_to_R16_FLOAT(GLenum type)
1642 {
1643 switch (type)
1644 {
1645 case GL_HALF_FLOAT:
1646 return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
1647 case GL_HALF_FLOAT_OES:
1648 return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
1649 default:
1650 UNREACHABLE();
1651 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1652 }
1653 }
1654
LUMINANCE16F_EXT_to_default(GLenum type)1655 LoadImageFunctionInfo LUMINANCE16F_EXT_to_default(GLenum type)
1656 {
1657 switch (type)
1658 {
1659 case GL_HALF_FLOAT:
1660 return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
1661 case GL_HALF_FLOAT_OES:
1662 return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
1663 default:
1664 UNREACHABLE();
1665 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1666 }
1667 }
1668
LUMINANCE32F_EXT_to_R32_FLOAT(GLenum type)1669 LoadImageFunctionInfo LUMINANCE32F_EXT_to_R32_FLOAT(GLenum type)
1670 {
1671 switch (type)
1672 {
1673 case GL_FLOAT:
1674 return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
1675 default:
1676 UNREACHABLE();
1677 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1678 }
1679 }
1680
LUMINANCE32F_EXT_to_default(GLenum type)1681 LoadImageFunctionInfo LUMINANCE32F_EXT_to_default(GLenum type)
1682 {
1683 switch (type)
1684 {
1685 case GL_FLOAT:
1686 return LoadImageFunctionInfo(LoadL32FToRGBA32F, true);
1687 default:
1688 UNREACHABLE();
1689 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1690 }
1691 }
1692
LUMINANCE8_ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)1693 LoadImageFunctionInfo LUMINANCE8_ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)
1694 {
1695 switch (type)
1696 {
1697 case GL_UNSIGNED_BYTE:
1698 return LoadImageFunctionInfo(LoadLA8ToRGBA8, true);
1699 default:
1700 UNREACHABLE();
1701 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1702 }
1703 }
1704
LUMINANCE8_ALPHA8_EXT_to_R8G8_UNORM(GLenum type)1705 LoadImageFunctionInfo LUMINANCE8_ALPHA8_EXT_to_R8G8_UNORM(GLenum type)
1706 {
1707 switch (type)
1708 {
1709 case GL_UNSIGNED_BYTE:
1710 return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
1711 default:
1712 UNREACHABLE();
1713 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1714 }
1715 }
1716
LUMINANCE8_EXT_to_R8G8B8A8_UNORM(GLenum type)1717 LoadImageFunctionInfo LUMINANCE8_EXT_to_R8G8B8A8_UNORM(GLenum type)
1718 {
1719 switch (type)
1720 {
1721 case GL_UNSIGNED_BYTE:
1722 return LoadImageFunctionInfo(LoadL8ToRGBA8, true);
1723 default:
1724 UNREACHABLE();
1725 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1726 }
1727 }
1728
LUMINANCE8_EXT_to_R8_UNORM(GLenum type)1729 LoadImageFunctionInfo LUMINANCE8_EXT_to_R8_UNORM(GLenum type)
1730 {
1731 switch (type)
1732 {
1733 case GL_UNSIGNED_BYTE:
1734 return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
1735 default:
1736 UNREACHABLE();
1737 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1738 }
1739 }
1740
LUMINANCE_ALPHA_to_R16G16B16A16_FLOAT(GLenum type)1741 LoadImageFunctionInfo LUMINANCE_ALPHA_to_R16G16B16A16_FLOAT(GLenum type)
1742 {
1743 switch (type)
1744 {
1745 case GL_HALF_FLOAT:
1746 return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
1747 case GL_HALF_FLOAT_OES:
1748 return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
1749 case GL_UNSIGNED_BYTE:
1750 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1751 default:
1752 UNREACHABLE();
1753 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1754 }
1755 }
1756
LUMINANCE_ALPHA_to_R32G32B32A32_FLOAT(GLenum type)1757 LoadImageFunctionInfo LUMINANCE_ALPHA_to_R32G32B32A32_FLOAT(GLenum type)
1758 {
1759 switch (type)
1760 {
1761 case GL_FLOAT:
1762 return LoadImageFunctionInfo(LoadLA32FToRGBA32F, true);
1763 case GL_UNSIGNED_BYTE:
1764 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1765 default:
1766 UNREACHABLE();
1767 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1768 }
1769 }
1770
LUMINANCE_ALPHA_to_default(GLenum type)1771 LoadImageFunctionInfo LUMINANCE_ALPHA_to_default(GLenum type)
1772 {
1773 switch (type)
1774 {
1775 case GL_UNSIGNED_BYTE:
1776 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1777 default:
1778 UNREACHABLE();
1779 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1780 }
1781 }
1782
LUMINANCE_ALPHA16F_EXT_to_R16G16_FLOAT(GLenum type)1783 LoadImageFunctionInfo LUMINANCE_ALPHA16F_EXT_to_R16G16_FLOAT(GLenum type)
1784 {
1785 switch (type)
1786 {
1787 case GL_HALF_FLOAT:
1788 return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
1789 case GL_HALF_FLOAT_OES:
1790 return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
1791 default:
1792 UNREACHABLE();
1793 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1794 }
1795 }
1796
LUMINANCE_ALPHA16F_EXT_to_default(GLenum type)1797 LoadImageFunctionInfo LUMINANCE_ALPHA16F_EXT_to_default(GLenum type)
1798 {
1799 switch (type)
1800 {
1801 case GL_HALF_FLOAT:
1802 return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
1803 case GL_HALF_FLOAT_OES:
1804 return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
1805 default:
1806 UNREACHABLE();
1807 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1808 }
1809 }
1810
LUMINANCE_ALPHA32F_EXT_to_R32G32_FLOAT(GLenum type)1811 LoadImageFunctionInfo LUMINANCE_ALPHA32F_EXT_to_R32G32_FLOAT(GLenum type)
1812 {
1813 switch (type)
1814 {
1815 case GL_FLOAT:
1816 return LoadImageFunctionInfo(LoadToNative<GLfloat, 2>, false);
1817 default:
1818 UNREACHABLE();
1819 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1820 }
1821 }
1822
LUMINANCE_ALPHA32F_EXT_to_default(GLenum type)1823 LoadImageFunctionInfo LUMINANCE_ALPHA32F_EXT_to_default(GLenum type)
1824 {
1825 switch (type)
1826 {
1827 case GL_FLOAT:
1828 return LoadImageFunctionInfo(LoadLA32FToRGBA32F, true);
1829 default:
1830 UNREACHABLE();
1831 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1832 }
1833 }
1834
R11F_G11F_B10F_to_R11G11B10_FLOAT(GLenum type)1835 LoadImageFunctionInfo R11F_G11F_B10F_to_R11G11B10_FLOAT(GLenum type)
1836 {
1837 switch (type)
1838 {
1839 case GL_FLOAT:
1840 return LoadImageFunctionInfo(LoadRGB32FToRG11B10F, true);
1841 case GL_HALF_FLOAT:
1842 return LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true);
1843 case GL_HALF_FLOAT_OES:
1844 return LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true);
1845 case GL_UNSIGNED_INT_10F_11F_11F_REV:
1846 return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
1847 default:
1848 UNREACHABLE();
1849 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1850 }
1851 }
1852
R16F_to_R16_FLOAT(GLenum type)1853 LoadImageFunctionInfo R16F_to_R16_FLOAT(GLenum type)
1854 {
1855 switch (type)
1856 {
1857 case GL_FLOAT:
1858 return LoadImageFunctionInfo(Load32FTo16F<1>, true);
1859 case GL_HALF_FLOAT:
1860 return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
1861 case GL_HALF_FLOAT_OES:
1862 return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
1863 default:
1864 UNREACHABLE();
1865 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1866 }
1867 }
1868
R16I_to_R16_SINT(GLenum type)1869 LoadImageFunctionInfo R16I_to_R16_SINT(GLenum type)
1870 {
1871 switch (type)
1872 {
1873 case GL_SHORT:
1874 return LoadImageFunctionInfo(LoadToNative<GLshort, 1>, false);
1875 default:
1876 UNREACHABLE();
1877 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1878 }
1879 }
1880
R16UI_to_R16_UINT(GLenum type)1881 LoadImageFunctionInfo R16UI_to_R16_UINT(GLenum type)
1882 {
1883 switch (type)
1884 {
1885 case GL_UNSIGNED_SHORT:
1886 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
1887 default:
1888 UNREACHABLE();
1889 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1890 }
1891 }
1892
R16_EXT_to_R16_UNORM(GLenum type)1893 LoadImageFunctionInfo R16_EXT_to_R16_UNORM(GLenum type)
1894 {
1895 switch (type)
1896 {
1897 case GL_UNSIGNED_SHORT:
1898 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
1899 default:
1900 UNREACHABLE();
1901 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1902 }
1903 }
1904
R16_SNORM_EXT_to_R16_SNORM(GLenum type)1905 LoadImageFunctionInfo R16_SNORM_EXT_to_R16_SNORM(GLenum type)
1906 {
1907 switch (type)
1908 {
1909 case GL_SHORT:
1910 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
1911 default:
1912 UNREACHABLE();
1913 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1914 }
1915 }
1916
R16_SSCALED_ANGLEX_to_default(GLenum type)1917 LoadImageFunctionInfo R16_SSCALED_ANGLEX_to_default(GLenum type)
1918 {
1919 switch (type)
1920 {
1921 case GL_UNSIGNED_BYTE:
1922 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1923 default:
1924 UNREACHABLE();
1925 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1926 }
1927 }
1928
R16_USCALED_ANGLEX_to_default(GLenum type)1929 LoadImageFunctionInfo R16_USCALED_ANGLEX_to_default(GLenum type)
1930 {
1931 switch (type)
1932 {
1933 case GL_UNSIGNED_BYTE:
1934 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1935 default:
1936 UNREACHABLE();
1937 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1938 }
1939 }
1940
R32F_to_R32_FLOAT(GLenum type)1941 LoadImageFunctionInfo R32F_to_R32_FLOAT(GLenum type)
1942 {
1943 switch (type)
1944 {
1945 case GL_FLOAT:
1946 return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
1947 default:
1948 UNREACHABLE();
1949 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1950 }
1951 }
1952
R32I_to_R32_SINT(GLenum type)1953 LoadImageFunctionInfo R32I_to_R32_SINT(GLenum type)
1954 {
1955 switch (type)
1956 {
1957 case GL_INT:
1958 return LoadImageFunctionInfo(LoadToNative<GLint, 1>, false);
1959 default:
1960 UNREACHABLE();
1961 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1962 }
1963 }
1964
R32UI_to_R32_UINT(GLenum type)1965 LoadImageFunctionInfo R32UI_to_R32_UINT(GLenum type)
1966 {
1967 switch (type)
1968 {
1969 case GL_UNSIGNED_INT:
1970 return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
1971 default:
1972 UNREACHABLE();
1973 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1974 }
1975 }
1976
R8_to_R8_UNORM(GLenum type)1977 LoadImageFunctionInfo R8_to_R8_UNORM(GLenum type)
1978 {
1979 switch (type)
1980 {
1981 case GL_UNSIGNED_BYTE:
1982 return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
1983 default:
1984 UNREACHABLE();
1985 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1986 }
1987 }
1988
R8I_to_R8_SINT(GLenum type)1989 LoadImageFunctionInfo R8I_to_R8_SINT(GLenum type)
1990 {
1991 switch (type)
1992 {
1993 case GL_BYTE:
1994 return LoadImageFunctionInfo(LoadToNative<GLbyte, 1>, false);
1995 default:
1996 UNREACHABLE();
1997 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1998 }
1999 }
2000
R8UI_to_R8_UINT(GLenum type)2001 LoadImageFunctionInfo R8UI_to_R8_UINT(GLenum type)
2002 {
2003 switch (type)
2004 {
2005 case GL_UNSIGNED_BYTE:
2006 return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
2007 default:
2008 UNREACHABLE();
2009 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2010 }
2011 }
2012
R8_SNORM_to_R8_SNORM(GLenum type)2013 LoadImageFunctionInfo R8_SNORM_to_R8_SNORM(GLenum type)
2014 {
2015 switch (type)
2016 {
2017 case GL_BYTE:
2018 return LoadImageFunctionInfo(LoadToNative<GLbyte, 1>, false);
2019 default:
2020 UNREACHABLE();
2021 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2022 }
2023 }
2024
R8_SSCALED_ANGLEX_to_default(GLenum type)2025 LoadImageFunctionInfo R8_SSCALED_ANGLEX_to_default(GLenum type)
2026 {
2027 switch (type)
2028 {
2029 case GL_UNSIGNED_BYTE:
2030 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2031 default:
2032 UNREACHABLE();
2033 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2034 }
2035 }
2036
R8_USCALED_ANGLEX_to_default(GLenum type)2037 LoadImageFunctionInfo R8_USCALED_ANGLEX_to_default(GLenum type)
2038 {
2039 switch (type)
2040 {
2041 case GL_UNSIGNED_BYTE:
2042 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2043 default:
2044 UNREACHABLE();
2045 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2046 }
2047 }
2048
RG16F_to_R16G16_FLOAT(GLenum type)2049 LoadImageFunctionInfo RG16F_to_R16G16_FLOAT(GLenum type)
2050 {
2051 switch (type)
2052 {
2053 case GL_FLOAT:
2054 return LoadImageFunctionInfo(Load32FTo16F<2>, true);
2055 case GL_HALF_FLOAT:
2056 return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
2057 case GL_HALF_FLOAT_OES:
2058 return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
2059 default:
2060 UNREACHABLE();
2061 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2062 }
2063 }
2064
RG16I_to_R16G16_SINT(GLenum type)2065 LoadImageFunctionInfo RG16I_to_R16G16_SINT(GLenum type)
2066 {
2067 switch (type)
2068 {
2069 case GL_SHORT:
2070 return LoadImageFunctionInfo(LoadToNative<GLshort, 2>, false);
2071 default:
2072 UNREACHABLE();
2073 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2074 }
2075 }
2076
RG16UI_to_R16G16_UINT(GLenum type)2077 LoadImageFunctionInfo RG16UI_to_R16G16_UINT(GLenum type)
2078 {
2079 switch (type)
2080 {
2081 case GL_UNSIGNED_SHORT:
2082 return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
2083 default:
2084 UNREACHABLE();
2085 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2086 }
2087 }
2088
RG16_EXT_to_R16G16_UNORM(GLenum type)2089 LoadImageFunctionInfo RG16_EXT_to_R16G16_UNORM(GLenum type)
2090 {
2091 switch (type)
2092 {
2093 case GL_UNSIGNED_SHORT:
2094 return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
2095 default:
2096 UNREACHABLE();
2097 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2098 }
2099 }
2100
RG16_SNORM_EXT_to_R16G16_SNORM(GLenum type)2101 LoadImageFunctionInfo RG16_SNORM_EXT_to_R16G16_SNORM(GLenum type)
2102 {
2103 switch (type)
2104 {
2105 case GL_SHORT:
2106 return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
2107 default:
2108 UNREACHABLE();
2109 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2110 }
2111 }
2112
RG16_SSCALED_ANGLEX_to_default(GLenum type)2113 LoadImageFunctionInfo RG16_SSCALED_ANGLEX_to_default(GLenum type)
2114 {
2115 switch (type)
2116 {
2117 case GL_UNSIGNED_BYTE:
2118 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2119 default:
2120 UNREACHABLE();
2121 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2122 }
2123 }
2124
RG16_USCALED_ANGLEX_to_default(GLenum type)2125 LoadImageFunctionInfo RG16_USCALED_ANGLEX_to_default(GLenum type)
2126 {
2127 switch (type)
2128 {
2129 case GL_UNSIGNED_BYTE:
2130 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2131 default:
2132 UNREACHABLE();
2133 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2134 }
2135 }
2136
RG32F_to_R32G32_FLOAT(GLenum type)2137 LoadImageFunctionInfo RG32F_to_R32G32_FLOAT(GLenum type)
2138 {
2139 switch (type)
2140 {
2141 case GL_FLOAT:
2142 return LoadImageFunctionInfo(LoadToNative<GLfloat, 2>, false);
2143 default:
2144 UNREACHABLE();
2145 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2146 }
2147 }
2148
RG32I_to_R32G32_SINT(GLenum type)2149 LoadImageFunctionInfo RG32I_to_R32G32_SINT(GLenum type)
2150 {
2151 switch (type)
2152 {
2153 case GL_INT:
2154 return LoadImageFunctionInfo(LoadToNative<GLint, 2>, false);
2155 default:
2156 UNREACHABLE();
2157 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2158 }
2159 }
2160
RG32UI_to_R32G32_UINT(GLenum type)2161 LoadImageFunctionInfo RG32UI_to_R32G32_UINT(GLenum type)
2162 {
2163 switch (type)
2164 {
2165 case GL_UNSIGNED_INT:
2166 return LoadImageFunctionInfo(LoadToNative<GLuint, 2>, false);
2167 default:
2168 UNREACHABLE();
2169 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2170 }
2171 }
2172
RG8_to_R8G8_UNORM(GLenum type)2173 LoadImageFunctionInfo RG8_to_R8G8_UNORM(GLenum type)
2174 {
2175 switch (type)
2176 {
2177 case GL_UNSIGNED_BYTE:
2178 return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
2179 default:
2180 UNREACHABLE();
2181 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2182 }
2183 }
2184
RG8I_to_R8G8_SINT(GLenum type)2185 LoadImageFunctionInfo RG8I_to_R8G8_SINT(GLenum type)
2186 {
2187 switch (type)
2188 {
2189 case GL_BYTE:
2190 return LoadImageFunctionInfo(LoadToNative<GLbyte, 2>, false);
2191 default:
2192 UNREACHABLE();
2193 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2194 }
2195 }
2196
RG8UI_to_R8G8_UINT(GLenum type)2197 LoadImageFunctionInfo RG8UI_to_R8G8_UINT(GLenum type)
2198 {
2199 switch (type)
2200 {
2201 case GL_UNSIGNED_BYTE:
2202 return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
2203 default:
2204 UNREACHABLE();
2205 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2206 }
2207 }
2208
RG8_SNORM_to_R8G8_SNORM(GLenum type)2209 LoadImageFunctionInfo RG8_SNORM_to_R8G8_SNORM(GLenum type)
2210 {
2211 switch (type)
2212 {
2213 case GL_BYTE:
2214 return LoadImageFunctionInfo(LoadToNative<GLbyte, 2>, false);
2215 default:
2216 UNREACHABLE();
2217 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2218 }
2219 }
2220
RG8_SSCALED_ANGLEX_to_default(GLenum type)2221 LoadImageFunctionInfo RG8_SSCALED_ANGLEX_to_default(GLenum type)
2222 {
2223 switch (type)
2224 {
2225 case GL_UNSIGNED_BYTE:
2226 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2227 default:
2228 UNREACHABLE();
2229 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2230 }
2231 }
2232
RG8_USCALED_ANGLEX_to_default(GLenum type)2233 LoadImageFunctionInfo RG8_USCALED_ANGLEX_to_default(GLenum type)
2234 {
2235 switch (type)
2236 {
2237 case GL_UNSIGNED_BYTE:
2238 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2239 default:
2240 UNREACHABLE();
2241 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2242 }
2243 }
2244
RGB_to_default(GLenum type)2245 LoadImageFunctionInfo RGB_to_default(GLenum type)
2246 {
2247 switch (type)
2248 {
2249 case GL_UNSIGNED_BYTE:
2250 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2251 case GL_UNSIGNED_SHORT_5_6_5:
2252 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2253 default:
2254 UNREACHABLE();
2255 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2256 }
2257 }
2258
RGB10_A2_to_R10G10B10A2_UNORM(GLenum type)2259 LoadImageFunctionInfo RGB10_A2_to_R10G10B10A2_UNORM(GLenum type)
2260 {
2261 switch (type)
2262 {
2263 case GL_UNSIGNED_INT_2_10_10_10_REV:
2264 return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2265 default:
2266 UNREACHABLE();
2267 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2268 }
2269 }
2270
RGB10_A2UI_to_R10G10B10A2_UINT(GLenum type)2271 LoadImageFunctionInfo RGB10_A2UI_to_R10G10B10A2_UINT(GLenum type)
2272 {
2273 switch (type)
2274 {
2275 case GL_UNSIGNED_INT_2_10_10_10_REV:
2276 return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2277 default:
2278 UNREACHABLE();
2279 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2280 }
2281 }
2282
RGB10_A2_SINT_ANGLEX_to_R10G10B10A2_SINT(GLenum type)2283 LoadImageFunctionInfo RGB10_A2_SINT_ANGLEX_to_R10G10B10A2_SINT(GLenum type)
2284 {
2285 switch (type)
2286 {
2287 case GL_UNSIGNED_BYTE:
2288 return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
2289 case GL_UNSIGNED_INT_2_10_10_10_REV:
2290 return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2291 default:
2292 UNREACHABLE();
2293 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2294 }
2295 }
2296
RGB10_A2_SNORM_ANGLEX_to_R10G10B10A2_SNORM(GLenum type)2297 LoadImageFunctionInfo RGB10_A2_SNORM_ANGLEX_to_R10G10B10A2_SNORM(GLenum type)
2298 {
2299 switch (type)
2300 {
2301 case GL_UNSIGNED_BYTE:
2302 return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
2303 case GL_UNSIGNED_INT_2_10_10_10_REV:
2304 return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2305 default:
2306 UNREACHABLE();
2307 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2308 }
2309 }
2310
RGB10_A2_SSCALED_ANGLEX_to_default(GLenum type)2311 LoadImageFunctionInfo RGB10_A2_SSCALED_ANGLEX_to_default(GLenum type)
2312 {
2313 switch (type)
2314 {
2315 case GL_UNSIGNED_BYTE:
2316 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2317 default:
2318 UNREACHABLE();
2319 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2320 }
2321 }
2322
RGB10_A2_USCALED_ANGLEX_to_default(GLenum type)2323 LoadImageFunctionInfo RGB10_A2_USCALED_ANGLEX_to_default(GLenum type)
2324 {
2325 switch (type)
2326 {
2327 case GL_UNSIGNED_BYTE:
2328 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2329 default:
2330 UNREACHABLE();
2331 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2332 }
2333 }
2334
RGB10_UNORM_ANGLEX_to_R10G10B10A2_UNORM(GLenum type)2335 LoadImageFunctionInfo RGB10_UNORM_ANGLEX_to_R10G10B10A2_UNORM(GLenum type)
2336 {
2337 switch (type)
2338 {
2339 case GL_UNSIGNED_INT_2_10_10_10_REV:
2340 return LoadImageFunctionInfo(LoadRGB10A2ToRGB10X2, true);
2341 default:
2342 UNREACHABLE();
2343 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2344 }
2345 }
2346
RGB16F_to_R16G16B16A16_FLOAT(GLenum type)2347 LoadImageFunctionInfo RGB16F_to_R16G16B16A16_FLOAT(GLenum type)
2348 {
2349 switch (type)
2350 {
2351 case GL_FLOAT:
2352 return LoadImageFunctionInfo(LoadRGB32FToRGBA16F, true);
2353 case GL_HALF_FLOAT:
2354 return LoadImageFunctionInfo(LoadToNative3To4<GLhalf, gl::Float16One>, true);
2355 case GL_HALF_FLOAT_OES:
2356 return LoadImageFunctionInfo(LoadToNative3To4<GLhalf, gl::Float16One>, true);
2357 default:
2358 UNREACHABLE();
2359 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2360 }
2361 }
2362
RGB16F_to_R16G16B16_FLOAT(GLenum type)2363 LoadImageFunctionInfo RGB16F_to_R16G16B16_FLOAT(GLenum type)
2364 {
2365 switch (type)
2366 {
2367 case GL_FLOAT:
2368 return LoadImageFunctionInfo(LoadRGB32FToRGB16F, true);
2369 case GL_HALF_FLOAT:
2370 return LoadImageFunctionInfo(LoadToNative<GLhalf, 3>, false);
2371 case GL_HALF_FLOAT_OES:
2372 return LoadImageFunctionInfo(LoadToNative<GLhalf, 3>, false);
2373 default:
2374 UNREACHABLE();
2375 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2376 }
2377 }
2378
RGB16I_to_R16G16B16A16_SINT(GLenum type)2379 LoadImageFunctionInfo RGB16I_to_R16G16B16A16_SINT(GLenum type)
2380 {
2381 switch (type)
2382 {
2383 case GL_SHORT:
2384 return LoadImageFunctionInfo(LoadToNative3To4<GLshort, 0x0001>, true);
2385 default:
2386 UNREACHABLE();
2387 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2388 }
2389 }
2390
RGB16I_to_R16G16B16_SINT(GLenum type)2391 LoadImageFunctionInfo RGB16I_to_R16G16B16_SINT(GLenum type)
2392 {
2393 switch (type)
2394 {
2395 case GL_SHORT:
2396 return LoadImageFunctionInfo(LoadToNative<GLshort, 3>, false);
2397 default:
2398 UNREACHABLE();
2399 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2400 }
2401 }
2402
RGB16UI_to_R16G16B16A16_UINT(GLenum type)2403 LoadImageFunctionInfo RGB16UI_to_R16G16B16A16_UINT(GLenum type)
2404 {
2405 switch (type)
2406 {
2407 case GL_UNSIGNED_SHORT:
2408 return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0x0001>, true);
2409 default:
2410 UNREACHABLE();
2411 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2412 }
2413 }
2414
RGB16UI_to_R16G16B16_UINT(GLenum type)2415 LoadImageFunctionInfo RGB16UI_to_R16G16B16_UINT(GLenum type)
2416 {
2417 switch (type)
2418 {
2419 case GL_UNSIGNED_SHORT:
2420 return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
2421 default:
2422 UNREACHABLE();
2423 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2424 }
2425 }
2426
RGB16_EXT_to_R16G16B16A16_UNORM(GLenum type)2427 LoadImageFunctionInfo RGB16_EXT_to_R16G16B16A16_UNORM(GLenum type)
2428 {
2429 switch (type)
2430 {
2431 case GL_UNSIGNED_SHORT:
2432 return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0xFFFF>, true);
2433 default:
2434 UNREACHABLE();
2435 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2436 }
2437 }
2438
RGB16_EXT_to_R16G16B16_UNORM(GLenum type)2439 LoadImageFunctionInfo RGB16_EXT_to_R16G16B16_UNORM(GLenum type)
2440 {
2441 switch (type)
2442 {
2443 case GL_UNSIGNED_SHORT:
2444 return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
2445 default:
2446 UNREACHABLE();
2447 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2448 }
2449 }
2450
RGB16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)2451 LoadImageFunctionInfo RGB16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)
2452 {
2453 switch (type)
2454 {
2455 case GL_SHORT:
2456 return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0x7FFF>, true);
2457 default:
2458 UNREACHABLE();
2459 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2460 }
2461 }
2462
RGB16_SNORM_EXT_to_R16G16B16_SNORM(GLenum type)2463 LoadImageFunctionInfo RGB16_SNORM_EXT_to_R16G16B16_SNORM(GLenum type)
2464 {
2465 switch (type)
2466 {
2467 case GL_SHORT:
2468 return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
2469 default:
2470 UNREACHABLE();
2471 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2472 }
2473 }
2474
RGB16_SSCALED_ANGLEX_to_default(GLenum type)2475 LoadImageFunctionInfo RGB16_SSCALED_ANGLEX_to_default(GLenum type)
2476 {
2477 switch (type)
2478 {
2479 case GL_UNSIGNED_BYTE:
2480 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2481 default:
2482 UNREACHABLE();
2483 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2484 }
2485 }
2486
RGB16_USCALED_ANGLEX_to_default(GLenum type)2487 LoadImageFunctionInfo RGB16_USCALED_ANGLEX_to_default(GLenum type)
2488 {
2489 switch (type)
2490 {
2491 case GL_UNSIGNED_BYTE:
2492 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2493 default:
2494 UNREACHABLE();
2495 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2496 }
2497 }
2498
RGB32F_to_R32G32B32A32_FLOAT(GLenum type)2499 LoadImageFunctionInfo RGB32F_to_R32G32B32A32_FLOAT(GLenum type)
2500 {
2501 switch (type)
2502 {
2503 case GL_FLOAT:
2504 return LoadImageFunctionInfo(LoadToNative3To4<GLfloat, gl::Float32One>, true);
2505 default:
2506 UNREACHABLE();
2507 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2508 }
2509 }
2510
RGB32F_to_R32G32B32_FLOAT(GLenum type)2511 LoadImageFunctionInfo RGB32F_to_R32G32B32_FLOAT(GLenum type)
2512 {
2513 switch (type)
2514 {
2515 case GL_FLOAT:
2516 return LoadImageFunctionInfo(LoadToNative<GLfloat, 3>, false);
2517 default:
2518 UNREACHABLE();
2519 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2520 }
2521 }
2522
RGB32I_to_R32G32B32A32_SINT(GLenum type)2523 LoadImageFunctionInfo RGB32I_to_R32G32B32A32_SINT(GLenum type)
2524 {
2525 switch (type)
2526 {
2527 case GL_INT:
2528 return LoadImageFunctionInfo(LoadToNative3To4<GLint, 0x00000001>, true);
2529 default:
2530 UNREACHABLE();
2531 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2532 }
2533 }
2534
RGB32I_to_R32G32B32_SINT(GLenum type)2535 LoadImageFunctionInfo RGB32I_to_R32G32B32_SINT(GLenum type)
2536 {
2537 switch (type)
2538 {
2539 case GL_INT:
2540 return LoadImageFunctionInfo(LoadToNative<GLint, 3>, false);
2541 default:
2542 UNREACHABLE();
2543 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2544 }
2545 }
2546
RGB32UI_to_R32G32B32A32_UINT(GLenum type)2547 LoadImageFunctionInfo RGB32UI_to_R32G32B32A32_UINT(GLenum type)
2548 {
2549 switch (type)
2550 {
2551 case GL_UNSIGNED_INT:
2552 return LoadImageFunctionInfo(LoadToNative3To4<GLuint, 0x00000001>, true);
2553 default:
2554 UNREACHABLE();
2555 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2556 }
2557 }
2558
RGB32UI_to_R32G32B32_UINT(GLenum type)2559 LoadImageFunctionInfo RGB32UI_to_R32G32B32_UINT(GLenum type)
2560 {
2561 switch (type)
2562 {
2563 case GL_UNSIGNED_INT:
2564 return LoadImageFunctionInfo(LoadToNative<GLuint, 3>, false);
2565 default:
2566 UNREACHABLE();
2567 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2568 }
2569 }
2570
RGB565_to_B5G6R5_UNORM(GLenum type)2571 LoadImageFunctionInfo RGB565_to_B5G6R5_UNORM(GLenum type)
2572 {
2573 switch (type)
2574 {
2575 case GL_UNSIGNED_BYTE:
2576 return LoadImageFunctionInfo(LoadRGB8ToBGR565, true);
2577 case GL_UNSIGNED_SHORT_5_6_5:
2578 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
2579 default:
2580 UNREACHABLE();
2581 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2582 }
2583 }
2584
RGB565_to_R5G6B5_UNORM(GLenum type)2585 LoadImageFunctionInfo RGB565_to_R5G6B5_UNORM(GLenum type)
2586 {
2587 switch (type)
2588 {
2589 case GL_UNSIGNED_BYTE:
2590 return LoadImageFunctionInfo(LoadRGB8ToBGR565, true);
2591 case GL_UNSIGNED_SHORT_5_6_5:
2592 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
2593 default:
2594 UNREACHABLE();
2595 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2596 }
2597 }
2598
RGB565_to_R8G8B8A8_UNORM(GLenum type)2599 LoadImageFunctionInfo RGB565_to_R8G8B8A8_UNORM(GLenum type)
2600 {
2601 switch (type)
2602 {
2603 case GL_UNSIGNED_BYTE:
2604 return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
2605 case GL_UNSIGNED_SHORT_5_6_5:
2606 return LoadImageFunctionInfo(LoadR5G6B5ToRGBA8, true);
2607 default:
2608 UNREACHABLE();
2609 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2610 }
2611 }
2612
RGB5_A1_to_A1R5G5B5_UNORM(GLenum type)2613 LoadImageFunctionInfo RGB5_A1_to_A1R5G5B5_UNORM(GLenum type)
2614 {
2615 switch (type)
2616 {
2617 case GL_UNSIGNED_BYTE:
2618 return LoadImageFunctionInfo(LoadRGBA8ToBGR5A1, true);
2619 case GL_UNSIGNED_INT_2_10_10_10_REV:
2620 return LoadImageFunctionInfo(LoadRGB10A2ToBGR5A1, true);
2621 case GL_UNSIGNED_SHORT_5_5_5_1:
2622 return LoadImageFunctionInfo(LoadRGB5A1ToA1RGB5, true);
2623 default:
2624 UNREACHABLE();
2625 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2626 }
2627 }
2628
RGB5_A1_to_B5G5R5A1_UNORM(GLenum type)2629 LoadImageFunctionInfo RGB5_A1_to_B5G5R5A1_UNORM(GLenum type)
2630 {
2631 switch (type)
2632 {
2633 case GL_UNSIGNED_BYTE:
2634 return LoadImageFunctionInfo(LoadRGBA8ToBGR5A1, true);
2635 case GL_UNSIGNED_INT_2_10_10_10_REV:
2636 return LoadImageFunctionInfo(LoadRGB10A2ToBGR5A1, true);
2637 case GL_UNSIGNED_SHORT_5_5_5_1:
2638 return LoadImageFunctionInfo(LoadRGB5A1ToA1RGB5, true);
2639 default:
2640 UNREACHABLE();
2641 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2642 }
2643 }
2644
RGB5_A1_to_R5G5B5A1_UNORM(GLenum type)2645 LoadImageFunctionInfo RGB5_A1_to_R5G5B5A1_UNORM(GLenum type)
2646 {
2647 switch (type)
2648 {
2649 case GL_UNSIGNED_BYTE:
2650 return LoadImageFunctionInfo(LoadRGBA8ToRGB5A1, true);
2651 case GL_UNSIGNED_INT_2_10_10_10_REV:
2652 return LoadImageFunctionInfo(LoadRGB10A2ToRGB5A1, true);
2653 case GL_UNSIGNED_SHORT_5_5_5_1:
2654 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
2655 default:
2656 UNREACHABLE();
2657 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2658 }
2659 }
2660
RGB5_A1_to_R8G8B8A8_UNORM(GLenum type)2661 LoadImageFunctionInfo RGB5_A1_to_R8G8B8A8_UNORM(GLenum type)
2662 {
2663 switch (type)
2664 {
2665 case GL_UNSIGNED_BYTE:
2666 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
2667 case GL_UNSIGNED_INT_2_10_10_10_REV:
2668 return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
2669 case GL_UNSIGNED_SHORT_5_5_5_1:
2670 return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true);
2671 default:
2672 UNREACHABLE();
2673 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2674 }
2675 }
2676
RGB8_to_R8G8B8A8_UNORM(GLenum type)2677 LoadImageFunctionInfo RGB8_to_R8G8B8A8_UNORM(GLenum type)
2678 {
2679 switch (type)
2680 {
2681 case GL_UNSIGNED_BYTE:
2682 return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
2683 default:
2684 UNREACHABLE();
2685 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2686 }
2687 }
2688
RGB8_to_R8G8B8_UNORM(GLenum type)2689 LoadImageFunctionInfo RGB8_to_R8G8B8_UNORM(GLenum type)
2690 {
2691 switch (type)
2692 {
2693 case GL_UNSIGNED_BYTE:
2694 return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
2695 default:
2696 UNREACHABLE();
2697 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2698 }
2699 }
2700
RGB8I_to_R8G8B8A8_SINT(GLenum type)2701 LoadImageFunctionInfo RGB8I_to_R8G8B8A8_SINT(GLenum type)
2702 {
2703 switch (type)
2704 {
2705 case GL_BYTE:
2706 return LoadImageFunctionInfo(LoadToNative3To4<GLbyte, 0x01>, true);
2707 default:
2708 UNREACHABLE();
2709 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2710 }
2711 }
2712
RGB8I_to_R8G8B8_SINT(GLenum type)2713 LoadImageFunctionInfo RGB8I_to_R8G8B8_SINT(GLenum type)
2714 {
2715 switch (type)
2716 {
2717 case GL_BYTE:
2718 return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
2719 default:
2720 UNREACHABLE();
2721 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2722 }
2723 }
2724
RGB8UI_to_R8G8B8A8_UINT(GLenum type)2725 LoadImageFunctionInfo RGB8UI_to_R8G8B8A8_UINT(GLenum type)
2726 {
2727 switch (type)
2728 {
2729 case GL_UNSIGNED_BYTE:
2730 return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0x01>, true);
2731 default:
2732 UNREACHABLE();
2733 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2734 }
2735 }
2736
RGB8UI_to_R8G8B8_UINT(GLenum type)2737 LoadImageFunctionInfo RGB8UI_to_R8G8B8_UINT(GLenum type)
2738 {
2739 switch (type)
2740 {
2741 case GL_UNSIGNED_BYTE:
2742 return LoadImageFunctionInfo(LoadToNative<GLubyte, 3>, false);
2743 default:
2744 UNREACHABLE();
2745 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2746 }
2747 }
2748
RGB8_SNORM_to_R8G8B8A8_SNORM(GLenum type)2749 LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8A8_SNORM(GLenum type)
2750 {
2751 switch (type)
2752 {
2753 case GL_BYTE:
2754 return LoadImageFunctionInfo(LoadToNative3To4<GLbyte, 0x7F>, true);
2755 default:
2756 UNREACHABLE();
2757 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2758 }
2759 }
2760
RGB8_SNORM_to_R8G8B8_SNORM(GLenum type)2761 LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8_SNORM(GLenum type)
2762 {
2763 switch (type)
2764 {
2765 case GL_BYTE:
2766 return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
2767 default:
2768 UNREACHABLE();
2769 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2770 }
2771 }
2772
RGB8_SSCALED_ANGLEX_to_default(GLenum type)2773 LoadImageFunctionInfo RGB8_SSCALED_ANGLEX_to_default(GLenum type)
2774 {
2775 switch (type)
2776 {
2777 case GL_UNSIGNED_BYTE:
2778 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2779 default:
2780 UNREACHABLE();
2781 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2782 }
2783 }
2784
RGB8_USCALED_ANGLEX_to_default(GLenum type)2785 LoadImageFunctionInfo RGB8_USCALED_ANGLEX_to_default(GLenum type)
2786 {
2787 switch (type)
2788 {
2789 case GL_UNSIGNED_BYTE:
2790 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2791 default:
2792 UNREACHABLE();
2793 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2794 }
2795 }
2796
RGB9_E5_to_R9G9B9E5_SHAREDEXP(GLenum type)2797 LoadImageFunctionInfo RGB9_E5_to_R9G9B9E5_SHAREDEXP(GLenum type)
2798 {
2799 switch (type)
2800 {
2801 case GL_FLOAT:
2802 return LoadImageFunctionInfo(LoadRGB32FToRGB9E5, true);
2803 case GL_HALF_FLOAT:
2804 return LoadImageFunctionInfo(LoadRGB16FToRGB9E5, true);
2805 case GL_HALF_FLOAT_OES:
2806 return LoadImageFunctionInfo(LoadRGB16FToRGB9E5, true);
2807 case GL_UNSIGNED_INT_5_9_9_9_REV:
2808 return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2809 default:
2810 UNREACHABLE();
2811 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2812 }
2813 }
2814
RGBA_to_default(GLenum type)2815 LoadImageFunctionInfo RGBA_to_default(GLenum type)
2816 {
2817 switch (type)
2818 {
2819 case GL_UNSIGNED_BYTE:
2820 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2821 case GL_UNSIGNED_SHORT_4_4_4_4:
2822 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2823 case GL_UNSIGNED_SHORT_5_5_5_1:
2824 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2825 default:
2826 UNREACHABLE();
2827 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2828 }
2829 }
2830
RGBA16F_to_R16G16B16A16_FLOAT(GLenum type)2831 LoadImageFunctionInfo RGBA16F_to_R16G16B16A16_FLOAT(GLenum type)
2832 {
2833 switch (type)
2834 {
2835 case GL_FLOAT:
2836 return LoadImageFunctionInfo(Load32FTo16F<4>, true);
2837 case GL_HALF_FLOAT:
2838 return LoadImageFunctionInfo(LoadToNative<GLhalf, 4>, false);
2839 case GL_HALF_FLOAT_OES:
2840 return LoadImageFunctionInfo(LoadToNative<GLhalf, 4>, false);
2841 default:
2842 UNREACHABLE();
2843 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2844 }
2845 }
2846
RGBA16I_to_R16G16B16A16_SINT(GLenum type)2847 LoadImageFunctionInfo RGBA16I_to_R16G16B16A16_SINT(GLenum type)
2848 {
2849 switch (type)
2850 {
2851 case GL_SHORT:
2852 return LoadImageFunctionInfo(LoadToNative<GLshort, 4>, false);
2853 default:
2854 UNREACHABLE();
2855 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2856 }
2857 }
2858
RGBA16UI_to_R16G16B16A16_UINT(GLenum type)2859 LoadImageFunctionInfo RGBA16UI_to_R16G16B16A16_UINT(GLenum type)
2860 {
2861 switch (type)
2862 {
2863 case GL_UNSIGNED_SHORT:
2864 return LoadImageFunctionInfo(LoadToNative<GLushort, 4>, false);
2865 default:
2866 UNREACHABLE();
2867 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2868 }
2869 }
2870
RGBA16_EXT_to_R16G16B16A16_UNORM(GLenum type)2871 LoadImageFunctionInfo RGBA16_EXT_to_R16G16B16A16_UNORM(GLenum type)
2872 {
2873 switch (type)
2874 {
2875 case GL_UNSIGNED_SHORT:
2876 return LoadImageFunctionInfo(LoadToNative<GLushort, 4>, false);
2877 default:
2878 UNREACHABLE();
2879 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2880 }
2881 }
2882
RGBA16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)2883 LoadImageFunctionInfo RGBA16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)
2884 {
2885 switch (type)
2886 {
2887 case GL_SHORT:
2888 return LoadImageFunctionInfo(LoadToNative<GLushort, 4>, false);
2889 default:
2890 UNREACHABLE();
2891 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2892 }
2893 }
2894
RGBA16_SSCALED_ANGLEX_to_default(GLenum type)2895 LoadImageFunctionInfo RGBA16_SSCALED_ANGLEX_to_default(GLenum type)
2896 {
2897 switch (type)
2898 {
2899 case GL_UNSIGNED_BYTE:
2900 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2901 default:
2902 UNREACHABLE();
2903 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2904 }
2905 }
2906
RGBA16_USCALED_ANGLEX_to_default(GLenum type)2907 LoadImageFunctionInfo RGBA16_USCALED_ANGLEX_to_default(GLenum type)
2908 {
2909 switch (type)
2910 {
2911 case GL_UNSIGNED_BYTE:
2912 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2913 default:
2914 UNREACHABLE();
2915 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2916 }
2917 }
2918
RGBA32F_to_R32G32B32A32_FLOAT(GLenum type)2919 LoadImageFunctionInfo RGBA32F_to_R32G32B32A32_FLOAT(GLenum type)
2920 {
2921 switch (type)
2922 {
2923 case GL_FLOAT:
2924 return LoadImageFunctionInfo(LoadToNative<GLfloat, 4>, false);
2925 default:
2926 UNREACHABLE();
2927 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2928 }
2929 }
2930
RGBA32I_to_R32G32B32A32_SINT(GLenum type)2931 LoadImageFunctionInfo RGBA32I_to_R32G32B32A32_SINT(GLenum type)
2932 {
2933 switch (type)
2934 {
2935 case GL_INT:
2936 return LoadImageFunctionInfo(LoadToNative<GLint, 4>, false);
2937 default:
2938 UNREACHABLE();
2939 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2940 }
2941 }
2942
RGBA32UI_to_R32G32B32A32_UINT(GLenum type)2943 LoadImageFunctionInfo RGBA32UI_to_R32G32B32A32_UINT(GLenum type)
2944 {
2945 switch (type)
2946 {
2947 case GL_UNSIGNED_INT:
2948 return LoadImageFunctionInfo(LoadToNative<GLuint, 4>, false);
2949 default:
2950 UNREACHABLE();
2951 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2952 }
2953 }
2954
RGBA4_to_B4G4R4A4_UNORM(GLenum type)2955 LoadImageFunctionInfo RGBA4_to_B4G4R4A4_UNORM(GLenum type)
2956 {
2957 switch (type)
2958 {
2959 case GL_UNSIGNED_BYTE:
2960 return LoadImageFunctionInfo(LoadRGBA8ToBGRA4, true);
2961 case GL_UNSIGNED_SHORT_4_4_4_4:
2962 return LoadImageFunctionInfo(LoadRGBA4ToARGB4, true);
2963 default:
2964 UNREACHABLE();
2965 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2966 }
2967 }
2968
RGBA4_to_R4G4B4A4_UNORM(GLenum type)2969 LoadImageFunctionInfo RGBA4_to_R4G4B4A4_UNORM(GLenum type)
2970 {
2971 switch (type)
2972 {
2973 case GL_UNSIGNED_BYTE:
2974 return LoadImageFunctionInfo(LoadRGBA8ToRGBA4, true);
2975 case GL_UNSIGNED_SHORT_4_4_4_4:
2976 return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
2977 default:
2978 UNREACHABLE();
2979 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2980 }
2981 }
2982
RGBA4_to_R8G8B8A8_UNORM(GLenum type)2983 LoadImageFunctionInfo RGBA4_to_R8G8B8A8_UNORM(GLenum type)
2984 {
2985 switch (type)
2986 {
2987 case GL_UNSIGNED_BYTE:
2988 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
2989 case GL_UNSIGNED_SHORT_4_4_4_4:
2990 return LoadImageFunctionInfo(LoadRGBA4ToRGBA8, true);
2991 default:
2992 UNREACHABLE();
2993 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2994 }
2995 }
2996
RGBA8_to_R8G8B8A8_UNORM(GLenum type)2997 LoadImageFunctionInfo RGBA8_to_R8G8B8A8_UNORM(GLenum type)
2998 {
2999 switch (type)
3000 {
3001 case GL_UNSIGNED_BYTE:
3002 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
3003 default:
3004 UNREACHABLE();
3005 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3006 }
3007 }
3008
RGBA8I_to_R8G8B8A8_SINT(GLenum type)3009 LoadImageFunctionInfo RGBA8I_to_R8G8B8A8_SINT(GLenum type)
3010 {
3011 switch (type)
3012 {
3013 case GL_BYTE:
3014 return LoadImageFunctionInfo(LoadToNative<GLbyte, 4>, false);
3015 default:
3016 UNREACHABLE();
3017 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3018 }
3019 }
3020
RGBA8UI_to_R8G8B8A8_UINT(GLenum type)3021 LoadImageFunctionInfo RGBA8UI_to_R8G8B8A8_UINT(GLenum type)
3022 {
3023 switch (type)
3024 {
3025 case GL_UNSIGNED_BYTE:
3026 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
3027 default:
3028 UNREACHABLE();
3029 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3030 }
3031 }
3032
RGBA8_SNORM_to_R8G8B8A8_SNORM(GLenum type)3033 LoadImageFunctionInfo RGBA8_SNORM_to_R8G8B8A8_SNORM(GLenum type)
3034 {
3035 switch (type)
3036 {
3037 case GL_BYTE:
3038 return LoadImageFunctionInfo(LoadToNative<GLbyte, 4>, false);
3039 default:
3040 UNREACHABLE();
3041 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3042 }
3043 }
3044
RGBA8_SSCALED_ANGLEX_to_default(GLenum type)3045 LoadImageFunctionInfo RGBA8_SSCALED_ANGLEX_to_default(GLenum type)
3046 {
3047 switch (type)
3048 {
3049 case GL_UNSIGNED_BYTE:
3050 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3051 default:
3052 UNREACHABLE();
3053 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3054 }
3055 }
3056
RGBA8_USCALED_ANGLEX_to_default(GLenum type)3057 LoadImageFunctionInfo RGBA8_USCALED_ANGLEX_to_default(GLenum type)
3058 {
3059 switch (type)
3060 {
3061 case GL_UNSIGNED_BYTE:
3062 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3063 default:
3064 UNREACHABLE();
3065 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3066 }
3067 }
3068
SR8_EXT_to_R8_UNORM_SRGB(GLenum type)3069 LoadImageFunctionInfo SR8_EXT_to_R8_UNORM_SRGB(GLenum type)
3070 {
3071 switch (type)
3072 {
3073 case GL_UNSIGNED_BYTE:
3074 return LoadImageFunctionInfo(LoadToNative<GLbyte, 1>, false);
3075 default:
3076 UNREACHABLE();
3077 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3078 }
3079 }
3080
SRGB8_to_R8G8B8A8_UNORM_SRGB(GLenum type)3081 LoadImageFunctionInfo SRGB8_to_R8G8B8A8_UNORM_SRGB(GLenum type)
3082 {
3083 switch (type)
3084 {
3085 case GL_UNSIGNED_BYTE:
3086 return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
3087 default:
3088 UNREACHABLE();
3089 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3090 }
3091 }
3092
SRGB8_to_R8G8B8_UNORM_SRGB(GLenum type)3093 LoadImageFunctionInfo SRGB8_to_R8G8B8_UNORM_SRGB(GLenum type)
3094 {
3095 switch (type)
3096 {
3097 case GL_UNSIGNED_BYTE:
3098 return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
3099 default:
3100 UNREACHABLE();
3101 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3102 }
3103 }
3104
SRGB8_ALPHA8_to_R8G8B8A8_UNORM_SRGB(GLenum type)3105 LoadImageFunctionInfo SRGB8_ALPHA8_to_R8G8B8A8_UNORM_SRGB(GLenum type)
3106 {
3107 switch (type)
3108 {
3109 case GL_UNSIGNED_BYTE:
3110 return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
3111 default:
3112 UNREACHABLE();
3113 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3114 }
3115 }
3116
STENCIL_INDEX8_to_default(GLenum type)3117 LoadImageFunctionInfo STENCIL_INDEX8_to_default(GLenum type)
3118 {
3119 switch (type)
3120 {
3121 case GL_UNSIGNED_BYTE:
3122 return LoadImageFunctionInfo(UnimplementedLoadFunction, true);
3123 default:
3124 UNREACHABLE();
3125 return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3126 }
3127 }
3128
3129 } // namespace
3130
GetLoadFunctionsMap(GLenum internalFormat,FormatID angleFormat)3131 LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
3132 {
3133 // clang-format off
3134 switch (internalFormat)
3135 {
3136 case GL_A1RGB5_ANGLEX:
3137 {
3138 switch (angleFormat)
3139 {
3140 case FormatID::A1R5G5B5_UNORM:
3141 return A1RGB5_ANGLEX_to_A1R5G5B5_UNORM;
3142 default:
3143 break;
3144 }
3145 break;
3146 }
3147 case GL_ALPHA:
3148 {
3149 switch (angleFormat)
3150 {
3151 case FormatID::R16G16B16A16_FLOAT:
3152 return ALPHA_to_R16G16B16A16_FLOAT;
3153 case FormatID::R32G32B32A32_FLOAT:
3154 return ALPHA_to_R32G32B32A32_FLOAT;
3155 default:
3156 return ALPHA_to_default;
3157 }
3158 }
3159 case GL_ALPHA16F_EXT:
3160 {
3161 switch (angleFormat)
3162 {
3163 case FormatID::R16_FLOAT:
3164 return ALPHA16F_EXT_to_R16_FLOAT;
3165 default:
3166 return ALPHA16F_EXT_to_default;
3167 }
3168 }
3169 case GL_ALPHA32F_EXT:
3170 {
3171 switch (angleFormat)
3172 {
3173 case FormatID::R32_FLOAT:
3174 return ALPHA32F_EXT_to_R32_FLOAT;
3175 default:
3176 return ALPHA32F_EXT_to_default;
3177 }
3178 }
3179 case GL_ALPHA8_EXT:
3180 {
3181 switch (angleFormat)
3182 {
3183 case FormatID::A8_UNORM:
3184 return ALPHA8_EXT_to_A8_UNORM;
3185 case FormatID::R8G8B8A8_UNORM:
3186 return ALPHA8_EXT_to_R8G8B8A8_UNORM;
3187 case FormatID::R8_UNORM:
3188 return ALPHA8_EXT_to_R8_UNORM;
3189 default:
3190 break;
3191 }
3192 break;
3193 }
3194 case GL_BGR565_ANGLEX:
3195 {
3196 switch (angleFormat)
3197 {
3198 case FormatID::B5G6R5_UNORM:
3199 return BGR565_ANGLEX_to_B5G6R5_UNORM;
3200 default:
3201 break;
3202 }
3203 break;
3204 }
3205 case GL_BGR5_A1_ANGLEX:
3206 return BGR5_A1_ANGLEX_to_default;
3207 case GL_BGRA4_ANGLEX:
3208 return BGRA4_ANGLEX_to_default;
3209 case GL_BGRA8_EXT:
3210 return BGRA8_EXT_to_default;
3211 case GL_BGRA8_SRGB_ANGLEX:
3212 {
3213 switch (angleFormat)
3214 {
3215 case FormatID::B8G8R8A8_UNORM_SRGB:
3216 return BGRA8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB;
3217 default:
3218 break;
3219 }
3220 break;
3221 }
3222 case GL_BGRA_EXT:
3223 return BGRA_EXT_to_default;
3224 case GL_BGRX8_ANGLEX:
3225 {
3226 switch (angleFormat)
3227 {
3228 case FormatID::B8G8R8A8_UNORM:
3229 return BGRX8_ANGLEX_to_B8G8R8A8_UNORM;
3230 case FormatID::B8G8R8X8_UNORM:
3231 return BGRX8_ANGLEX_to_B8G8R8X8_UNORM;
3232 default:
3233 break;
3234 }
3235 break;
3236 }
3237 case GL_COMPRESSED_R11_EAC:
3238 {
3239 switch (angleFormat)
3240 {
3241 case FormatID::EAC_R11_UNORM_BLOCK:
3242 return COMPRESSED_R11_EAC_to_EAC_R11_UNORM_BLOCK;
3243 case FormatID::R16_FLOAT:
3244 return COMPRESSED_R11_EAC_to_R16_FLOAT;
3245 case FormatID::R16_UNORM:
3246 return COMPRESSED_R11_EAC_to_R16_UNORM;
3247 default:
3248 break;
3249 }
3250 break;
3251 }
3252 case GL_COMPRESSED_RED_GREEN_RGTC2_EXT:
3253 return COMPRESSED_RED_GREEN_RGTC2_EXT_to_default;
3254 case GL_COMPRESSED_RED_RGTC1_EXT:
3255 return COMPRESSED_RED_RGTC1_EXT_to_default;
3256 case GL_COMPRESSED_RG11_EAC:
3257 {
3258 switch (angleFormat)
3259 {
3260 case FormatID::EAC_R11G11_UNORM_BLOCK:
3261 return COMPRESSED_RG11_EAC_to_EAC_R11G11_UNORM_BLOCK;
3262 case FormatID::R16G16_FLOAT:
3263 return COMPRESSED_RG11_EAC_to_R16G16_FLOAT;
3264 case FormatID::R16G16_UNORM:
3265 return COMPRESSED_RG11_EAC_to_R16G16_UNORM;
3266 default:
3267 break;
3268 }
3269 break;
3270 }
3271 case GL_COMPRESSED_RGB8_ETC2:
3272 {
3273 switch (angleFormat)
3274 {
3275 case FormatID::ETC2_R8G8B8_UNORM_BLOCK:
3276 return COMPRESSED_RGB8_ETC2_to_ETC2_R8G8B8_UNORM_BLOCK;
3277 case FormatID::R8G8B8A8_UNORM:
3278 return COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM;
3279 default:
3280 break;
3281 }
3282 break;
3283 }
3284 case GL_COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE:
3285 {
3286 switch (angleFormat)
3287 {
3288 case FormatID::BC1_RGB_UNORM_BLOCK:
3289 return COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_BLOCK;
3290 default:
3291 break;
3292 }
3293 break;
3294 }
3295 case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
3296 {
3297 switch (angleFormat)
3298 {
3299 case FormatID::ETC2_R8G8B8A1_UNORM_BLOCK:
3300 return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_UNORM_BLOCK;
3301 case FormatID::R8G8B8A8_UNORM:
3302 return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM;
3303 default:
3304 break;
3305 }
3306 break;
3307 }
3308 case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
3309 {
3310 switch (angleFormat)
3311 {
3312 case FormatID::BC1_RGBA_UNORM_BLOCK:
3313 return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_BLOCK;
3314 default:
3315 break;
3316 }
3317 break;
3318 }
3319 case GL_COMPRESSED_RGBA8_ETC2_EAC:
3320 {
3321 switch (angleFormat)
3322 {
3323 case FormatID::ETC2_R8G8B8A8_UNORM_BLOCK:
3324 return COMPRESSED_RGBA8_ETC2_EAC_to_ETC2_R8G8B8A8_UNORM_BLOCK;
3325 case FormatID::R8G8B8A8_UNORM:
3326 return COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM;
3327 default:
3328 break;
3329 }
3330 break;
3331 }
3332 case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
3333 return COMPRESSED_RGBA_ASTC_10x10_KHR_to_default;
3334 case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
3335 return COMPRESSED_RGBA_ASTC_10x5_KHR_to_default;
3336 case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
3337 return COMPRESSED_RGBA_ASTC_10x6_KHR_to_default;
3338 case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
3339 return COMPRESSED_RGBA_ASTC_10x8_KHR_to_default;
3340 case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
3341 return COMPRESSED_RGBA_ASTC_12x10_KHR_to_default;
3342 case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
3343 return COMPRESSED_RGBA_ASTC_12x12_KHR_to_default;
3344 case GL_COMPRESSED_RGBA_ASTC_3x3x3_OES:
3345 return COMPRESSED_RGBA_ASTC_3x3x3_OES_to_default;
3346 case GL_COMPRESSED_RGBA_ASTC_4x3x3_OES:
3347 return COMPRESSED_RGBA_ASTC_4x3x3_OES_to_default;
3348 case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
3349 return COMPRESSED_RGBA_ASTC_4x4_KHR_to_default;
3350 case GL_COMPRESSED_RGBA_ASTC_4x4x3_OES:
3351 return COMPRESSED_RGBA_ASTC_4x4x3_OES_to_default;
3352 case GL_COMPRESSED_RGBA_ASTC_4x4x4_OES:
3353 return COMPRESSED_RGBA_ASTC_4x4x4_OES_to_default;
3354 case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
3355 return COMPRESSED_RGBA_ASTC_5x4_KHR_to_default;
3356 case GL_COMPRESSED_RGBA_ASTC_5x4x4_OES:
3357 return COMPRESSED_RGBA_ASTC_5x4x4_OES_to_default;
3358 case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
3359 return COMPRESSED_RGBA_ASTC_5x5_KHR_to_default;
3360 case GL_COMPRESSED_RGBA_ASTC_5x5x4_OES:
3361 return COMPRESSED_RGBA_ASTC_5x5x4_OES_to_default;
3362 case GL_COMPRESSED_RGBA_ASTC_5x5x5_OES:
3363 return COMPRESSED_RGBA_ASTC_5x5x5_OES_to_default;
3364 case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
3365 return COMPRESSED_RGBA_ASTC_6x5_KHR_to_default;
3366 case GL_COMPRESSED_RGBA_ASTC_6x5x5_OES:
3367 return COMPRESSED_RGBA_ASTC_6x5x5_OES_to_default;
3368 case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
3369 return COMPRESSED_RGBA_ASTC_6x6_KHR_to_default;
3370 case GL_COMPRESSED_RGBA_ASTC_6x6x5_OES:
3371 return COMPRESSED_RGBA_ASTC_6x6x5_OES_to_default;
3372 case GL_COMPRESSED_RGBA_ASTC_6x6x6_OES:
3373 return COMPRESSED_RGBA_ASTC_6x6x6_OES_to_default;
3374 case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
3375 return COMPRESSED_RGBA_ASTC_8x5_KHR_to_default;
3376 case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
3377 return COMPRESSED_RGBA_ASTC_8x6_KHR_to_default;
3378 case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
3379 return COMPRESSED_RGBA_ASTC_8x8_KHR_to_default;
3380 case GL_COMPRESSED_RGBA_BPTC_UNORM_EXT:
3381 return COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default;
3382 case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
3383 return COMPRESSED_RGBA_S3TC_DXT1_EXT_to_default;
3384 case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
3385 return COMPRESSED_RGBA_S3TC_DXT3_ANGLE_to_default;
3386 case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
3387 return COMPRESSED_RGBA_S3TC_DXT5_ANGLE_to_default;
3388 case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT:
3389 return COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT_to_default;
3390 case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT:
3391 return COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT_to_default;
3392 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
3393 return COMPRESSED_RGB_S3TC_DXT1_EXT_to_default;
3394 case GL_COMPRESSED_SIGNED_R11_EAC:
3395 {
3396 switch (angleFormat)
3397 {
3398 case FormatID::EAC_R11_SNORM_BLOCK:
3399 return COMPRESSED_SIGNED_R11_EAC_to_EAC_R11_SNORM_BLOCK;
3400 case FormatID::R16_FLOAT:
3401 return COMPRESSED_SIGNED_R11_EAC_to_R16_FLOAT;
3402 case FormatID::R16_SNORM:
3403 return COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM;
3404 default:
3405 break;
3406 }
3407 break;
3408 }
3409 case GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:
3410 return COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT_to_default;
3411 case GL_COMPRESSED_SIGNED_RED_RGTC1_EXT:
3412 return COMPRESSED_SIGNED_RED_RGTC1_EXT_to_default;
3413 case GL_COMPRESSED_SIGNED_RG11_EAC:
3414 {
3415 switch (angleFormat)
3416 {
3417 case FormatID::EAC_R11G11_SNORM_BLOCK:
3418 return COMPRESSED_SIGNED_RG11_EAC_to_EAC_R11G11_SNORM_BLOCK;
3419 case FormatID::R16G16_FLOAT:
3420 return COMPRESSED_SIGNED_RG11_EAC_to_R16G16_FLOAT;
3421 case FormatID::R16G16_SNORM:
3422 return COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM;
3423 default:
3424 break;
3425 }
3426 break;
3427 }
3428 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
3429 return COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_default;
3430 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
3431 return COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_default;
3432 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
3433 return COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_default;
3434 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
3435 return COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_default;
3436 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
3437 return COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_default;
3438 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
3439 return COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_default;
3440 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES:
3441 return COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES_to_default;
3442 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES:
3443 return COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES_to_default;
3444 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
3445 return COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_default;
3446 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES:
3447 return COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES_to_default;
3448 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES:
3449 return COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES_to_default;
3450 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
3451 return COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_default;
3452 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES:
3453 return COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES_to_default;
3454 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
3455 return COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_default;
3456 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES:
3457 return COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES_to_default;
3458 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES:
3459 return COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES_to_default;
3460 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
3461 return COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_default;
3462 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES:
3463 return COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES_to_default;
3464 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
3465 return COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_default;
3466 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES:
3467 return COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES_to_default;
3468 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES:
3469 return COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES_to_default;
3470 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
3471 return COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_default;
3472 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
3473 return COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_default;
3474 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
3475 return COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_default;
3476 case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
3477 {
3478 switch (angleFormat)
3479 {
3480 case FormatID::ETC2_R8G8B8A8_SRGB_BLOCK:
3481 return COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_ETC2_R8G8B8A8_SRGB_BLOCK;
3482 case FormatID::R8G8B8A8_UNORM_SRGB:
3483 return COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB;
3484 default:
3485 break;
3486 }
3487 break;
3488 }
3489 case GL_COMPRESSED_SRGB8_ETC2:
3490 {
3491 switch (angleFormat)
3492 {
3493 case FormatID::ETC2_R8G8B8_SRGB_BLOCK:
3494 return COMPRESSED_SRGB8_ETC2_to_ETC2_R8G8B8_SRGB_BLOCK;
3495 case FormatID::R8G8B8A8_UNORM_SRGB:
3496 return COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB;
3497 default:
3498 break;
3499 }
3500 break;
3501 }
3502 case GL_COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE:
3503 {
3504 switch (angleFormat)
3505 {
3506 case FormatID::BC1_RGB_UNORM_SRGB_BLOCK:
3507 return COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_SRGB_BLOCK;
3508 default:
3509 break;
3510 }
3511 break;
3512 }
3513 case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
3514 {
3515 switch (angleFormat)
3516 {
3517 case FormatID::ETC2_R8G8B8A1_SRGB_BLOCK:
3518 return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_SRGB_BLOCK;
3519 case FormatID::R8G8B8A8_UNORM_SRGB:
3520 return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB;
3521 default:
3522 break;
3523 }
3524 break;
3525 }
3526 case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
3527 {
3528 switch (angleFormat)
3529 {
3530 case FormatID::BC1_RGBA_UNORM_SRGB_BLOCK:
3531 return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_SRGB_BLOCK;
3532 default:
3533 break;
3534 }
3535 break;
3536 }
3537 case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:
3538 return COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default;
3539 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
3540 return COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT_to_default;
3541 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
3542 return COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT_to_default;
3543 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
3544 return COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT_to_default;
3545 case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
3546 return COMPRESSED_SRGB_S3TC_DXT1_EXT_to_default;
3547 case GL_DEPTH24_STENCIL8:
3548 {
3549 switch (angleFormat)
3550 {
3551 case FormatID::D24_UNORM_S8_UINT:
3552 return DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT;
3553 case FormatID::D32_FLOAT_S8X24_UINT:
3554 return DEPTH24_STENCIL8_to_D32_FLOAT_S8X24_UINT;
3555 default:
3556 break;
3557 }
3558 break;
3559 }
3560 case GL_DEPTH32F_STENCIL8:
3561 {
3562 switch (angleFormat)
3563 {
3564 case FormatID::D24_UNORM_S8_UINT:
3565 return DEPTH32F_STENCIL8_to_D24_UNORM_S8_UINT;
3566 case FormatID::D32_FLOAT_S8X24_UINT:
3567 return DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT;
3568 default:
3569 break;
3570 }
3571 break;
3572 }
3573 case GL_DEPTH_COMPONENT16:
3574 {
3575 switch (angleFormat)
3576 {
3577 case FormatID::D16_UNORM:
3578 return DEPTH_COMPONENT16_to_D16_UNORM;
3579 default:
3580 break;
3581 }
3582 break;
3583 }
3584 case GL_DEPTH_COMPONENT24:
3585 {
3586 switch (angleFormat)
3587 {
3588 case FormatID::D24_UNORM_S8_UINT:
3589 return DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT;
3590 case FormatID::D24_UNORM_X8_UINT:
3591 return DEPTH_COMPONENT24_to_D24_UNORM_X8_UINT;
3592 case FormatID::D32_FLOAT_S8X24_UINT:
3593 return DEPTH_COMPONENT24_to_D32_FLOAT_S8X24_UINT;
3594 default:
3595 break;
3596 }
3597 break;
3598 }
3599 case GL_DEPTH_COMPONENT32F:
3600 {
3601 switch (angleFormat)
3602 {
3603 case FormatID::D32_FLOAT:
3604 return DEPTH_COMPONENT32F_to_D32_FLOAT;
3605 default:
3606 break;
3607 }
3608 break;
3609 }
3610 case GL_DEPTH_COMPONENT32_OES:
3611 {
3612 switch (angleFormat)
3613 {
3614 case FormatID::D32_FLOAT:
3615 return DEPTH_COMPONENT32_OES_to_D32_FLOAT;
3616 default:
3617 return DEPTH_COMPONENT32_OES_to_default;
3618 }
3619 }
3620 case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
3621 {
3622 switch (angleFormat)
3623 {
3624 case FormatID::BC1_RGB_UNORM_BLOCK:
3625 return ETC1_RGB8_LOSSY_DECODE_ANGLE_to_BC1_RGB_UNORM_BLOCK;
3626 default:
3627 break;
3628 }
3629 break;
3630 }
3631 case GL_ETC1_RGB8_OES:
3632 {
3633 switch (angleFormat)
3634 {
3635 case FormatID::ETC1_R8G8B8_UNORM_BLOCK:
3636 return ETC1_RGB8_OES_to_ETC1_R8G8B8_UNORM_BLOCK;
3637 case FormatID::ETC2_R8G8B8_UNORM_BLOCK:
3638 return ETC1_RGB8_OES_to_ETC2_R8G8B8_UNORM_BLOCK;
3639 case FormatID::R8G8B8A8_UNORM:
3640 return ETC1_RGB8_OES_to_R8G8B8A8_UNORM;
3641 default:
3642 break;
3643 }
3644 break;
3645 }
3646 case GL_LUMINANCE:
3647 {
3648 switch (angleFormat)
3649 {
3650 case FormatID::R16G16B16A16_FLOAT:
3651 return LUMINANCE_to_R16G16B16A16_FLOAT;
3652 case FormatID::R32G32B32A32_FLOAT:
3653 return LUMINANCE_to_R32G32B32A32_FLOAT;
3654 default:
3655 return LUMINANCE_to_default;
3656 }
3657 }
3658 case GL_LUMINANCE16F_EXT:
3659 {
3660 switch (angleFormat)
3661 {
3662 case FormatID::R16_FLOAT:
3663 return LUMINANCE16F_EXT_to_R16_FLOAT;
3664 default:
3665 return LUMINANCE16F_EXT_to_default;
3666 }
3667 }
3668 case GL_LUMINANCE32F_EXT:
3669 {
3670 switch (angleFormat)
3671 {
3672 case FormatID::R32_FLOAT:
3673 return LUMINANCE32F_EXT_to_R32_FLOAT;
3674 default:
3675 return LUMINANCE32F_EXT_to_default;
3676 }
3677 }
3678 case GL_LUMINANCE8_ALPHA8_EXT:
3679 {
3680 switch (angleFormat)
3681 {
3682 case FormatID::R8G8B8A8_UNORM:
3683 return LUMINANCE8_ALPHA8_EXT_to_R8G8B8A8_UNORM;
3684 case FormatID::R8G8_UNORM:
3685 return LUMINANCE8_ALPHA8_EXT_to_R8G8_UNORM;
3686 default:
3687 break;
3688 }
3689 break;
3690 }
3691 case GL_LUMINANCE8_EXT:
3692 {
3693 switch (angleFormat)
3694 {
3695 case FormatID::R8G8B8A8_UNORM:
3696 return LUMINANCE8_EXT_to_R8G8B8A8_UNORM;
3697 case FormatID::R8_UNORM:
3698 return LUMINANCE8_EXT_to_R8_UNORM;
3699 default:
3700 break;
3701 }
3702 break;
3703 }
3704 case GL_LUMINANCE_ALPHA:
3705 {
3706 switch (angleFormat)
3707 {
3708 case FormatID::R16G16B16A16_FLOAT:
3709 return LUMINANCE_ALPHA_to_R16G16B16A16_FLOAT;
3710 case FormatID::R32G32B32A32_FLOAT:
3711 return LUMINANCE_ALPHA_to_R32G32B32A32_FLOAT;
3712 default:
3713 return LUMINANCE_ALPHA_to_default;
3714 }
3715 }
3716 case GL_LUMINANCE_ALPHA16F_EXT:
3717 {
3718 switch (angleFormat)
3719 {
3720 case FormatID::R16G16_FLOAT:
3721 return LUMINANCE_ALPHA16F_EXT_to_R16G16_FLOAT;
3722 default:
3723 return LUMINANCE_ALPHA16F_EXT_to_default;
3724 }
3725 }
3726 case GL_LUMINANCE_ALPHA32F_EXT:
3727 {
3728 switch (angleFormat)
3729 {
3730 case FormatID::R32G32_FLOAT:
3731 return LUMINANCE_ALPHA32F_EXT_to_R32G32_FLOAT;
3732 default:
3733 return LUMINANCE_ALPHA32F_EXT_to_default;
3734 }
3735 }
3736 case GL_R11F_G11F_B10F:
3737 {
3738 switch (angleFormat)
3739 {
3740 case FormatID::R11G11B10_FLOAT:
3741 return R11F_G11F_B10F_to_R11G11B10_FLOAT;
3742 default:
3743 break;
3744 }
3745 break;
3746 }
3747 case GL_R16F:
3748 {
3749 switch (angleFormat)
3750 {
3751 case FormatID::R16_FLOAT:
3752 return R16F_to_R16_FLOAT;
3753 default:
3754 break;
3755 }
3756 break;
3757 }
3758 case GL_R16I:
3759 {
3760 switch (angleFormat)
3761 {
3762 case FormatID::R16_SINT:
3763 return R16I_to_R16_SINT;
3764 default:
3765 break;
3766 }
3767 break;
3768 }
3769 case GL_R16UI:
3770 {
3771 switch (angleFormat)
3772 {
3773 case FormatID::R16_UINT:
3774 return R16UI_to_R16_UINT;
3775 default:
3776 break;
3777 }
3778 break;
3779 }
3780 case GL_R16_EXT:
3781 {
3782 switch (angleFormat)
3783 {
3784 case FormatID::R16_UNORM:
3785 return R16_EXT_to_R16_UNORM;
3786 default:
3787 break;
3788 }
3789 break;
3790 }
3791 case GL_R16_SNORM_EXT:
3792 {
3793 switch (angleFormat)
3794 {
3795 case FormatID::R16_SNORM:
3796 return R16_SNORM_EXT_to_R16_SNORM;
3797 default:
3798 break;
3799 }
3800 break;
3801 }
3802 case GL_R16_SSCALED_ANGLEX:
3803 return R16_SSCALED_ANGLEX_to_default;
3804 case GL_R16_USCALED_ANGLEX:
3805 return R16_USCALED_ANGLEX_to_default;
3806 case GL_R32F:
3807 {
3808 switch (angleFormat)
3809 {
3810 case FormatID::R32_FLOAT:
3811 return R32F_to_R32_FLOAT;
3812 default:
3813 break;
3814 }
3815 break;
3816 }
3817 case GL_R32I:
3818 {
3819 switch (angleFormat)
3820 {
3821 case FormatID::R32_SINT:
3822 return R32I_to_R32_SINT;
3823 default:
3824 break;
3825 }
3826 break;
3827 }
3828 case GL_R32UI:
3829 {
3830 switch (angleFormat)
3831 {
3832 case FormatID::R32_UINT:
3833 return R32UI_to_R32_UINT;
3834 default:
3835 break;
3836 }
3837 break;
3838 }
3839 case GL_R8:
3840 {
3841 switch (angleFormat)
3842 {
3843 case FormatID::R8_UNORM:
3844 return R8_to_R8_UNORM;
3845 default:
3846 break;
3847 }
3848 break;
3849 }
3850 case GL_R8I:
3851 {
3852 switch (angleFormat)
3853 {
3854 case FormatID::R8_SINT:
3855 return R8I_to_R8_SINT;
3856 default:
3857 break;
3858 }
3859 break;
3860 }
3861 case GL_R8UI:
3862 {
3863 switch (angleFormat)
3864 {
3865 case FormatID::R8_UINT:
3866 return R8UI_to_R8_UINT;
3867 default:
3868 break;
3869 }
3870 break;
3871 }
3872 case GL_R8_SNORM:
3873 {
3874 switch (angleFormat)
3875 {
3876 case FormatID::R8_SNORM:
3877 return R8_SNORM_to_R8_SNORM;
3878 default:
3879 break;
3880 }
3881 break;
3882 }
3883 case GL_R8_SSCALED_ANGLEX:
3884 return R8_SSCALED_ANGLEX_to_default;
3885 case GL_R8_USCALED_ANGLEX:
3886 return R8_USCALED_ANGLEX_to_default;
3887 case GL_RG16F:
3888 {
3889 switch (angleFormat)
3890 {
3891 case FormatID::R16G16_FLOAT:
3892 return RG16F_to_R16G16_FLOAT;
3893 default:
3894 break;
3895 }
3896 break;
3897 }
3898 case GL_RG16I:
3899 {
3900 switch (angleFormat)
3901 {
3902 case FormatID::R16G16_SINT:
3903 return RG16I_to_R16G16_SINT;
3904 default:
3905 break;
3906 }
3907 break;
3908 }
3909 case GL_RG16UI:
3910 {
3911 switch (angleFormat)
3912 {
3913 case FormatID::R16G16_UINT:
3914 return RG16UI_to_R16G16_UINT;
3915 default:
3916 break;
3917 }
3918 break;
3919 }
3920 case GL_RG16_EXT:
3921 {
3922 switch (angleFormat)
3923 {
3924 case FormatID::R16G16_UNORM:
3925 return RG16_EXT_to_R16G16_UNORM;
3926 default:
3927 break;
3928 }
3929 break;
3930 }
3931 case GL_RG16_SNORM_EXT:
3932 {
3933 switch (angleFormat)
3934 {
3935 case FormatID::R16G16_SNORM:
3936 return RG16_SNORM_EXT_to_R16G16_SNORM;
3937 default:
3938 break;
3939 }
3940 break;
3941 }
3942 case GL_RG16_SSCALED_ANGLEX:
3943 return RG16_SSCALED_ANGLEX_to_default;
3944 case GL_RG16_USCALED_ANGLEX:
3945 return RG16_USCALED_ANGLEX_to_default;
3946 case GL_RG32F:
3947 {
3948 switch (angleFormat)
3949 {
3950 case FormatID::R32G32_FLOAT:
3951 return RG32F_to_R32G32_FLOAT;
3952 default:
3953 break;
3954 }
3955 break;
3956 }
3957 case GL_RG32I:
3958 {
3959 switch (angleFormat)
3960 {
3961 case FormatID::R32G32_SINT:
3962 return RG32I_to_R32G32_SINT;
3963 default:
3964 break;
3965 }
3966 break;
3967 }
3968 case GL_RG32UI:
3969 {
3970 switch (angleFormat)
3971 {
3972 case FormatID::R32G32_UINT:
3973 return RG32UI_to_R32G32_UINT;
3974 default:
3975 break;
3976 }
3977 break;
3978 }
3979 case GL_RG8:
3980 {
3981 switch (angleFormat)
3982 {
3983 case FormatID::R8G8_UNORM:
3984 return RG8_to_R8G8_UNORM;
3985 default:
3986 break;
3987 }
3988 break;
3989 }
3990 case GL_RG8I:
3991 {
3992 switch (angleFormat)
3993 {
3994 case FormatID::R8G8_SINT:
3995 return RG8I_to_R8G8_SINT;
3996 default:
3997 break;
3998 }
3999 break;
4000 }
4001 case GL_RG8UI:
4002 {
4003 switch (angleFormat)
4004 {
4005 case FormatID::R8G8_UINT:
4006 return RG8UI_to_R8G8_UINT;
4007 default:
4008 break;
4009 }
4010 break;
4011 }
4012 case GL_RG8_SNORM:
4013 {
4014 switch (angleFormat)
4015 {
4016 case FormatID::R8G8_SNORM:
4017 return RG8_SNORM_to_R8G8_SNORM;
4018 default:
4019 break;
4020 }
4021 break;
4022 }
4023 case GL_RG8_SSCALED_ANGLEX:
4024 return RG8_SSCALED_ANGLEX_to_default;
4025 case GL_RG8_USCALED_ANGLEX:
4026 return RG8_USCALED_ANGLEX_to_default;
4027 case GL_RGB:
4028 return RGB_to_default;
4029 case GL_RGB10_A2:
4030 {
4031 switch (angleFormat)
4032 {
4033 case FormatID::R10G10B10A2_UNORM:
4034 return RGB10_A2_to_R10G10B10A2_UNORM;
4035 default:
4036 break;
4037 }
4038 break;
4039 }
4040 case GL_RGB10_A2UI:
4041 {
4042 switch (angleFormat)
4043 {
4044 case FormatID::R10G10B10A2_UINT:
4045 return RGB10_A2UI_to_R10G10B10A2_UINT;
4046 default:
4047 break;
4048 }
4049 break;
4050 }
4051 case GL_RGB10_A2_SINT_ANGLEX:
4052 {
4053 switch (angleFormat)
4054 {
4055 case FormatID::R10G10B10A2_SINT:
4056 return RGB10_A2_SINT_ANGLEX_to_R10G10B10A2_SINT;
4057 default:
4058 break;
4059 }
4060 break;
4061 }
4062 case GL_RGB10_A2_SNORM_ANGLEX:
4063 {
4064 switch (angleFormat)
4065 {
4066 case FormatID::R10G10B10A2_SNORM:
4067 return RGB10_A2_SNORM_ANGLEX_to_R10G10B10A2_SNORM;
4068 default:
4069 break;
4070 }
4071 break;
4072 }
4073 case GL_RGB10_A2_SSCALED_ANGLEX:
4074 return RGB10_A2_SSCALED_ANGLEX_to_default;
4075 case GL_RGB10_A2_USCALED_ANGLEX:
4076 return RGB10_A2_USCALED_ANGLEX_to_default;
4077 case GL_RGB10_UNORM_ANGLEX:
4078 {
4079 switch (angleFormat)
4080 {
4081 case FormatID::R10G10B10A2_UNORM:
4082 return RGB10_UNORM_ANGLEX_to_R10G10B10A2_UNORM;
4083 default:
4084 break;
4085 }
4086 break;
4087 }
4088 case GL_RGB16F:
4089 {
4090 switch (angleFormat)
4091 {
4092 case FormatID::R16G16B16A16_FLOAT:
4093 return RGB16F_to_R16G16B16A16_FLOAT;
4094 case FormatID::R16G16B16_FLOAT:
4095 return RGB16F_to_R16G16B16_FLOAT;
4096 default:
4097 break;
4098 }
4099 break;
4100 }
4101 case GL_RGB16I:
4102 {
4103 switch (angleFormat)
4104 {
4105 case FormatID::R16G16B16A16_SINT:
4106 return RGB16I_to_R16G16B16A16_SINT;
4107 case FormatID::R16G16B16_SINT:
4108 return RGB16I_to_R16G16B16_SINT;
4109 default:
4110 break;
4111 }
4112 break;
4113 }
4114 case GL_RGB16UI:
4115 {
4116 switch (angleFormat)
4117 {
4118 case FormatID::R16G16B16A16_UINT:
4119 return RGB16UI_to_R16G16B16A16_UINT;
4120 case FormatID::R16G16B16_UINT:
4121 return RGB16UI_to_R16G16B16_UINT;
4122 default:
4123 break;
4124 }
4125 break;
4126 }
4127 case GL_RGB16_EXT:
4128 {
4129 switch (angleFormat)
4130 {
4131 case FormatID::R16G16B16A16_UNORM:
4132 return RGB16_EXT_to_R16G16B16A16_UNORM;
4133 case FormatID::R16G16B16_UNORM:
4134 return RGB16_EXT_to_R16G16B16_UNORM;
4135 default:
4136 break;
4137 }
4138 break;
4139 }
4140 case GL_RGB16_SNORM_EXT:
4141 {
4142 switch (angleFormat)
4143 {
4144 case FormatID::R16G16B16A16_SNORM:
4145 return RGB16_SNORM_EXT_to_R16G16B16A16_SNORM;
4146 case FormatID::R16G16B16_SNORM:
4147 return RGB16_SNORM_EXT_to_R16G16B16_SNORM;
4148 default:
4149 break;
4150 }
4151 break;
4152 }
4153 case GL_RGB16_SSCALED_ANGLEX:
4154 return RGB16_SSCALED_ANGLEX_to_default;
4155 case GL_RGB16_USCALED_ANGLEX:
4156 return RGB16_USCALED_ANGLEX_to_default;
4157 case GL_RGB32F:
4158 {
4159 switch (angleFormat)
4160 {
4161 case FormatID::R32G32B32A32_FLOAT:
4162 return RGB32F_to_R32G32B32A32_FLOAT;
4163 case FormatID::R32G32B32_FLOAT:
4164 return RGB32F_to_R32G32B32_FLOAT;
4165 default:
4166 break;
4167 }
4168 break;
4169 }
4170 case GL_RGB32I:
4171 {
4172 switch (angleFormat)
4173 {
4174 case FormatID::R32G32B32A32_SINT:
4175 return RGB32I_to_R32G32B32A32_SINT;
4176 case FormatID::R32G32B32_SINT:
4177 return RGB32I_to_R32G32B32_SINT;
4178 default:
4179 break;
4180 }
4181 break;
4182 }
4183 case GL_RGB32UI:
4184 {
4185 switch (angleFormat)
4186 {
4187 case FormatID::R32G32B32A32_UINT:
4188 return RGB32UI_to_R32G32B32A32_UINT;
4189 case FormatID::R32G32B32_UINT:
4190 return RGB32UI_to_R32G32B32_UINT;
4191 default:
4192 break;
4193 }
4194 break;
4195 }
4196 case GL_RGB565:
4197 {
4198 switch (angleFormat)
4199 {
4200 case FormatID::B5G6R5_UNORM:
4201 return RGB565_to_B5G6R5_UNORM;
4202 case FormatID::R5G6B5_UNORM:
4203 return RGB565_to_R5G6B5_UNORM;
4204 case FormatID::R8G8B8A8_UNORM:
4205 return RGB565_to_R8G8B8A8_UNORM;
4206 default:
4207 break;
4208 }
4209 break;
4210 }
4211 case GL_RGB5_A1:
4212 {
4213 switch (angleFormat)
4214 {
4215 case FormatID::A1R5G5B5_UNORM:
4216 return RGB5_A1_to_A1R5G5B5_UNORM;
4217 case FormatID::B5G5R5A1_UNORM:
4218 return RGB5_A1_to_B5G5R5A1_UNORM;
4219 case FormatID::R5G5B5A1_UNORM:
4220 return RGB5_A1_to_R5G5B5A1_UNORM;
4221 case FormatID::R8G8B8A8_UNORM:
4222 return RGB5_A1_to_R8G8B8A8_UNORM;
4223 default:
4224 break;
4225 }
4226 break;
4227 }
4228 case GL_RGB8:
4229 {
4230 switch (angleFormat)
4231 {
4232 case FormatID::R8G8B8A8_UNORM:
4233 return RGB8_to_R8G8B8A8_UNORM;
4234 case FormatID::R8G8B8_UNORM:
4235 return RGB8_to_R8G8B8_UNORM;
4236 default:
4237 break;
4238 }
4239 break;
4240 }
4241 case GL_RGB8I:
4242 {
4243 switch (angleFormat)
4244 {
4245 case FormatID::R8G8B8A8_SINT:
4246 return RGB8I_to_R8G8B8A8_SINT;
4247 case FormatID::R8G8B8_SINT:
4248 return RGB8I_to_R8G8B8_SINT;
4249 default:
4250 break;
4251 }
4252 break;
4253 }
4254 case GL_RGB8UI:
4255 {
4256 switch (angleFormat)
4257 {
4258 case FormatID::R8G8B8A8_UINT:
4259 return RGB8UI_to_R8G8B8A8_UINT;
4260 case FormatID::R8G8B8_UINT:
4261 return RGB8UI_to_R8G8B8_UINT;
4262 default:
4263 break;
4264 }
4265 break;
4266 }
4267 case GL_RGB8_SNORM:
4268 {
4269 switch (angleFormat)
4270 {
4271 case FormatID::R8G8B8A8_SNORM:
4272 return RGB8_SNORM_to_R8G8B8A8_SNORM;
4273 case FormatID::R8G8B8_SNORM:
4274 return RGB8_SNORM_to_R8G8B8_SNORM;
4275 default:
4276 break;
4277 }
4278 break;
4279 }
4280 case GL_RGB8_SSCALED_ANGLEX:
4281 return RGB8_SSCALED_ANGLEX_to_default;
4282 case GL_RGB8_USCALED_ANGLEX:
4283 return RGB8_USCALED_ANGLEX_to_default;
4284 case GL_RGB9_E5:
4285 {
4286 switch (angleFormat)
4287 {
4288 case FormatID::R9G9B9E5_SHAREDEXP:
4289 return RGB9_E5_to_R9G9B9E5_SHAREDEXP;
4290 default:
4291 break;
4292 }
4293 break;
4294 }
4295 case GL_RGBA:
4296 return RGBA_to_default;
4297 case GL_RGBA16F:
4298 {
4299 switch (angleFormat)
4300 {
4301 case FormatID::R16G16B16A16_FLOAT:
4302 return RGBA16F_to_R16G16B16A16_FLOAT;
4303 default:
4304 break;
4305 }
4306 break;
4307 }
4308 case GL_RGBA16I:
4309 {
4310 switch (angleFormat)
4311 {
4312 case FormatID::R16G16B16A16_SINT:
4313 return RGBA16I_to_R16G16B16A16_SINT;
4314 default:
4315 break;
4316 }
4317 break;
4318 }
4319 case GL_RGBA16UI:
4320 {
4321 switch (angleFormat)
4322 {
4323 case FormatID::R16G16B16A16_UINT:
4324 return RGBA16UI_to_R16G16B16A16_UINT;
4325 default:
4326 break;
4327 }
4328 break;
4329 }
4330 case GL_RGBA16_EXT:
4331 {
4332 switch (angleFormat)
4333 {
4334 case FormatID::R16G16B16A16_UNORM:
4335 return RGBA16_EXT_to_R16G16B16A16_UNORM;
4336 default:
4337 break;
4338 }
4339 break;
4340 }
4341 case GL_RGBA16_SNORM_EXT:
4342 {
4343 switch (angleFormat)
4344 {
4345 case FormatID::R16G16B16A16_SNORM:
4346 return RGBA16_SNORM_EXT_to_R16G16B16A16_SNORM;
4347 default:
4348 break;
4349 }
4350 break;
4351 }
4352 case GL_RGBA16_SSCALED_ANGLEX:
4353 return RGBA16_SSCALED_ANGLEX_to_default;
4354 case GL_RGBA16_USCALED_ANGLEX:
4355 return RGBA16_USCALED_ANGLEX_to_default;
4356 case GL_RGBA32F:
4357 {
4358 switch (angleFormat)
4359 {
4360 case FormatID::R32G32B32A32_FLOAT:
4361 return RGBA32F_to_R32G32B32A32_FLOAT;
4362 default:
4363 break;
4364 }
4365 break;
4366 }
4367 case GL_RGBA32I:
4368 {
4369 switch (angleFormat)
4370 {
4371 case FormatID::R32G32B32A32_SINT:
4372 return RGBA32I_to_R32G32B32A32_SINT;
4373 default:
4374 break;
4375 }
4376 break;
4377 }
4378 case GL_RGBA32UI:
4379 {
4380 switch (angleFormat)
4381 {
4382 case FormatID::R32G32B32A32_UINT:
4383 return RGBA32UI_to_R32G32B32A32_UINT;
4384 default:
4385 break;
4386 }
4387 break;
4388 }
4389 case GL_RGBA4:
4390 {
4391 switch (angleFormat)
4392 {
4393 case FormatID::B4G4R4A4_UNORM:
4394 return RGBA4_to_B4G4R4A4_UNORM;
4395 case FormatID::R4G4B4A4_UNORM:
4396 return RGBA4_to_R4G4B4A4_UNORM;
4397 case FormatID::R8G8B8A8_UNORM:
4398 return RGBA4_to_R8G8B8A8_UNORM;
4399 default:
4400 break;
4401 }
4402 break;
4403 }
4404 case GL_RGBA8:
4405 {
4406 switch (angleFormat)
4407 {
4408 case FormatID::R8G8B8A8_UNORM:
4409 return RGBA8_to_R8G8B8A8_UNORM;
4410 default:
4411 break;
4412 }
4413 break;
4414 }
4415 case GL_RGBA8I:
4416 {
4417 switch (angleFormat)
4418 {
4419 case FormatID::R8G8B8A8_SINT:
4420 return RGBA8I_to_R8G8B8A8_SINT;
4421 default:
4422 break;
4423 }
4424 break;
4425 }
4426 case GL_RGBA8UI:
4427 {
4428 switch (angleFormat)
4429 {
4430 case FormatID::R8G8B8A8_UINT:
4431 return RGBA8UI_to_R8G8B8A8_UINT;
4432 default:
4433 break;
4434 }
4435 break;
4436 }
4437 case GL_RGBA8_SNORM:
4438 {
4439 switch (angleFormat)
4440 {
4441 case FormatID::R8G8B8A8_SNORM:
4442 return RGBA8_SNORM_to_R8G8B8A8_SNORM;
4443 default:
4444 break;
4445 }
4446 break;
4447 }
4448 case GL_RGBA8_SSCALED_ANGLEX:
4449 return RGBA8_SSCALED_ANGLEX_to_default;
4450 case GL_RGBA8_USCALED_ANGLEX:
4451 return RGBA8_USCALED_ANGLEX_to_default;
4452 case GL_SR8_EXT:
4453 {
4454 switch (angleFormat)
4455 {
4456 case FormatID::R8_UNORM_SRGB:
4457 return SR8_EXT_to_R8_UNORM_SRGB;
4458 default:
4459 break;
4460 }
4461 break;
4462 }
4463 case GL_SRGB8:
4464 {
4465 switch (angleFormat)
4466 {
4467 case FormatID::R8G8B8A8_UNORM_SRGB:
4468 return SRGB8_to_R8G8B8A8_UNORM_SRGB;
4469 case FormatID::R8G8B8_UNORM_SRGB:
4470 return SRGB8_to_R8G8B8_UNORM_SRGB;
4471 default:
4472 break;
4473 }
4474 break;
4475 }
4476 case GL_SRGB8_ALPHA8:
4477 {
4478 switch (angleFormat)
4479 {
4480 case FormatID::R8G8B8A8_UNORM_SRGB:
4481 return SRGB8_ALPHA8_to_R8G8B8A8_UNORM_SRGB;
4482 default:
4483 break;
4484 }
4485 break;
4486 }
4487 case GL_STENCIL_INDEX8:
4488 return STENCIL_INDEX8_to_default;
4489
4490 default:
4491 break;
4492 }
4493 // clang-format on
4494 ASSERT(internalFormat == GL_NONE || angleFormat == angle::FormatID::NONE);
4495 static LoadFunctionMap emptyLoadFunctionsMap;
4496 return emptyLoadFunctionsMap;
4497
4498 } // GetLoadFunctionsMap
4499
4500 } // namespace angle
4501