xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/load_functions_table_autogen.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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(const ImageLoadContext & context,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(const ImageLoadContext &context,
34                                size_t width,
35                                size_t height,
36                                size_t depth,
37                                const uint8_t *input,
38                                size_t inputRowPitch,
39                                size_t inputDepthPitch,
40                                uint8_t *output,
41                                size_t outputRowPitch,
42                                size_t outputDepthPitch)
43 {
44     UNIMPLEMENTED();
45 }
46 
UnreachableLoadFunction(const ImageLoadContext & context,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)47 void UnreachableLoadFunction(const ImageLoadContext &context,
48                              size_t width,
49                              size_t height,
50                              size_t depth,
51                              const uint8_t *input,
52                              size_t inputRowPitch,
53                              size_t inputDepthPitch,
54                              uint8_t *output,
55                              size_t outputRowPitch,
56                              size_t outputDepthPitch)
57 {
58     UNREACHABLE();
59 }
60 
A1RGB5_ANGLEX_to_A1R5G5B5_UNORM(GLenum type)61 LoadImageFunctionInfo A1RGB5_ANGLEX_to_A1R5G5B5_UNORM(GLenum type)
62 {
63     switch (type)
64     {
65         case GL_UNSIGNED_BYTE:
66             return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true);
67         case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:
68             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
69         default:
70             UNREACHABLE();
71             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
72     }
73 }
74 
ALPHA_to_R16G16B16A16_FLOAT(GLenum type)75 LoadImageFunctionInfo ALPHA_to_R16G16B16A16_FLOAT(GLenum type)
76 {
77     switch (type)
78     {
79         case GL_HALF_FLOAT:
80             return LoadImageFunctionInfo(LoadA16FToRGBA16F, true);
81         case GL_HALF_FLOAT_OES:
82             return LoadImageFunctionInfo(LoadA16FToRGBA16F, true);
83         case GL_UNSIGNED_BYTE:
84             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
85         default:
86             UNREACHABLE();
87             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
88     }
89 }
90 
ALPHA_to_R32G32B32A32_FLOAT(GLenum type)91 LoadImageFunctionInfo ALPHA_to_R32G32B32A32_FLOAT(GLenum type)
92 {
93     switch (type)
94     {
95         case GL_FLOAT:
96             return LoadImageFunctionInfo(LoadA32FToRGBA32F, true);
97         case GL_UNSIGNED_BYTE:
98             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
99         default:
100             UNREACHABLE();
101             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
102     }
103 }
104 
ALPHA_to_default(GLenum type)105 LoadImageFunctionInfo ALPHA_to_default(GLenum type)
106 {
107     switch (type)
108     {
109         case GL_UNSIGNED_BYTE:
110             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
111         default:
112             UNREACHABLE();
113             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
114     }
115 }
116 
ALPHA16F_EXT_to_R16_FLOAT(GLenum type)117 LoadImageFunctionInfo ALPHA16F_EXT_to_R16_FLOAT(GLenum type)
118 {
119     switch (type)
120     {
121         case GL_HALF_FLOAT:
122             return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
123         case GL_HALF_FLOAT_OES:
124             return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
125         default:
126             UNREACHABLE();
127             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
128     }
129 }
130 
ALPHA16F_EXT_to_default(GLenum type)131 LoadImageFunctionInfo ALPHA16F_EXT_to_default(GLenum type)
132 {
133     switch (type)
134     {
135         case GL_HALF_FLOAT:
136             return LoadImageFunctionInfo(LoadA16FToRGBA16F, true);
137         case GL_HALF_FLOAT_OES:
138             return LoadImageFunctionInfo(LoadA16FToRGBA16F, true);
139         default:
140             UNREACHABLE();
141             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
142     }
143 }
144 
ALPHA32F_EXT_to_R32_FLOAT(GLenum type)145 LoadImageFunctionInfo ALPHA32F_EXT_to_R32_FLOAT(GLenum type)
146 {
147     switch (type)
148     {
149         case GL_FLOAT:
150             return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
151         default:
152             UNREACHABLE();
153             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
154     }
155 }
156 
ALPHA32F_EXT_to_default(GLenum type)157 LoadImageFunctionInfo ALPHA32F_EXT_to_default(GLenum type)
158 {
159     switch (type)
160     {
161         case GL_FLOAT:
162             return LoadImageFunctionInfo(LoadA32FToRGBA32F, true);
163         default:
164             UNREACHABLE();
165             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
166     }
167 }
168 
ALPHA8_EXT_to_A8_UNORM(GLenum type)169 LoadImageFunctionInfo ALPHA8_EXT_to_A8_UNORM(GLenum type)
170 {
171     switch (type)
172     {
173         case GL_UNSIGNED_BYTE:
174             return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
175         default:
176             UNREACHABLE();
177             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
178     }
179 }
180 
ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)181 LoadImageFunctionInfo ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)
182 {
183     switch (type)
184     {
185         case GL_UNSIGNED_BYTE:
186             return LoadImageFunctionInfo(LoadA8ToRGBA8, true);
187         default:
188             UNREACHABLE();
189             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
190     }
191 }
192 
ALPHA8_EXT_to_R8_UNORM(GLenum type)193 LoadImageFunctionInfo ALPHA8_EXT_to_R8_UNORM(GLenum type)
194 {
195     switch (type)
196     {
197         case GL_UNSIGNED_BYTE:
198             return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
199         default:
200             UNREACHABLE();
201             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
202     }
203 }
204 
BGR10_A2_ANGLEX_to_B10G10R10A2_UNORM(GLenum type)205 LoadImageFunctionInfo BGR10_A2_ANGLEX_to_B10G10R10A2_UNORM(GLenum type)
206 {
207     switch (type)
208     {
209         case GL_UNSIGNED_INT_2_10_10_10_REV:
210             return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
211         default:
212             UNREACHABLE();
213             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
214     }
215 }
216 
BGR10_A2_ANGLEX_to_R10G10B10A2_UNORM(GLenum type)217 LoadImageFunctionInfo BGR10_A2_ANGLEX_to_R10G10B10A2_UNORM(GLenum type)
218 {
219     switch (type)
220     {
221         case GL_UNSIGNED_INT_2_10_10_10_REV:
222             return LoadImageFunctionInfo(LoadBGR10A2ToRGB10A2, true);
223         default:
224             UNREACHABLE();
225             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
226     }
227 }
228 
BGR565_ANGLEX_to_B5G6R5_UNORM(GLenum type)229 LoadImageFunctionInfo BGR565_ANGLEX_to_B5G6R5_UNORM(GLenum type)
230 {
231     switch (type)
232     {
233         case GL_UNSIGNED_BYTE:
234             return LoadImageFunctionInfo(LoadRGB8ToBGR565, true);
235         case GL_UNSIGNED_SHORT_5_6_5:
236             return LoadImageFunctionInfo(LoadRGB565ToBGR565, true);
237         default:
238             UNREACHABLE();
239             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
240     }
241 }
242 
BGR565_ANGLEX_to_R8G8B8A8_UNORM(GLenum type)243 LoadImageFunctionInfo BGR565_ANGLEX_to_R8G8B8A8_UNORM(GLenum type)
244 {
245     switch (type)
246     {
247         case GL_UNSIGNED_BYTE:
248             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
249         case GL_UNSIGNED_SHORT_5_6_5:
250             return LoadImageFunctionInfo(LoadR5G6B5ToRGBA8, true);
251         default:
252             UNREACHABLE();
253             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
254     }
255 }
256 
BGR5_A1_ANGLEX_to_default(GLenum type)257 LoadImageFunctionInfo BGR5_A1_ANGLEX_to_default(GLenum type)
258 {
259     switch (type)
260     {
261         case GL_UNSIGNED_BYTE:
262             return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true);
263         case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:
264             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
265         default:
266             UNREACHABLE();
267             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
268     }
269 }
270 
BGRA4_ANGLEX_to_default(GLenum type)271 LoadImageFunctionInfo BGRA4_ANGLEX_to_default(GLenum type)
272 {
273     switch (type)
274     {
275         case GL_UNSIGNED_BYTE:
276             return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
277         case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT:
278             return LoadImageFunctionInfo(LoadRGBA4ToRGBA8, true);
279         default:
280             UNREACHABLE();
281             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
282     }
283 }
284 
BGRA8_EXT_to_default(GLenum type)285 LoadImageFunctionInfo BGRA8_EXT_to_default(GLenum type)
286 {
287     switch (type)
288     {
289         case GL_UNSIGNED_BYTE:
290             return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
291         default:
292             UNREACHABLE();
293             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
294     }
295 }
296 
BGRA8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB(GLenum type)297 LoadImageFunctionInfo BGRA8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB(GLenum type)
298 {
299     switch (type)
300     {
301         case GL_UNSIGNED_BYTE:
302             return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
303         default:
304             UNREACHABLE();
305             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
306     }
307 }
308 
BGRA_EXT_to_default(GLenum type)309 LoadImageFunctionInfo BGRA_EXT_to_default(GLenum type)
310 {
311     switch (type)
312     {
313         case GL_UNSIGNED_BYTE:
314             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
315         default:
316             UNREACHABLE();
317             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
318     }
319 }
320 
BGRX8_ANGLEX_to_B8G8R8A8_UNORM(GLenum type)321 LoadImageFunctionInfo BGRX8_ANGLEX_to_B8G8R8A8_UNORM(GLenum type)
322 {
323     switch (type)
324     {
325         case GL_UNSIGNED_BYTE:
326             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
327         default:
328             UNREACHABLE();
329             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
330     }
331 }
332 
BGRX8_ANGLEX_to_B8G8R8X8_UNORM(GLenum type)333 LoadImageFunctionInfo BGRX8_ANGLEX_to_B8G8R8X8_UNORM(GLenum type)
334 {
335     switch (type)
336     {
337         case GL_UNSIGNED_BYTE:
338             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
339         default:
340             UNREACHABLE();
341             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
342     }
343 }
344 
BGRX8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB(GLenum type)345 LoadImageFunctionInfo BGRX8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB(GLenum type)
346 {
347     switch (type)
348     {
349         case GL_UNSIGNED_BYTE:
350             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
351         default:
352             UNREACHABLE();
353             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
354     }
355 }
356 
BGRX8_SRGB_ANGLEX_to_B8G8R8X8_UNORM_SRGB(GLenum type)357 LoadImageFunctionInfo BGRX8_SRGB_ANGLEX_to_B8G8R8X8_UNORM_SRGB(GLenum type)
358 {
359     switch (type)
360     {
361         case GL_UNSIGNED_BYTE:
362             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
363         default:
364             UNREACHABLE();
365             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
366     }
367 }
368 
COMPRESSED_R11_EAC_to_EAC_R11_UNORM_BLOCK(GLenum type)369 LoadImageFunctionInfo COMPRESSED_R11_EAC_to_EAC_R11_UNORM_BLOCK(GLenum type)
370 {
371     switch (type)
372     {
373         case GL_UNSIGNED_BYTE:
374             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
375         default:
376             UNREACHABLE();
377             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
378     }
379 }
380 
COMPRESSED_R11_EAC_to_R16_FLOAT(GLenum type)381 LoadImageFunctionInfo COMPRESSED_R11_EAC_to_R16_FLOAT(GLenum type)
382 {
383     switch (type)
384     {
385         case GL_UNSIGNED_BYTE:
386             return LoadImageFunctionInfo(LoadEACR11ToR16F, true);
387         default:
388             UNREACHABLE();
389             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
390     }
391 }
392 
COMPRESSED_R11_EAC_to_R16_UNORM(GLenum type)393 LoadImageFunctionInfo COMPRESSED_R11_EAC_to_R16_UNORM(GLenum type)
394 {
395     switch (type)
396     {
397         case GL_UNSIGNED_BYTE:
398             return LoadImageFunctionInfo(LoadEACR11ToR16, true);
399         default:
400             UNREACHABLE();
401             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
402     }
403 }
404 
COMPRESSED_RED_GREEN_RGTC2_EXT_to_default(GLenum type)405 LoadImageFunctionInfo COMPRESSED_RED_GREEN_RGTC2_EXT_to_default(GLenum type)
406 {
407     switch (type)
408     {
409         case GL_UNSIGNED_BYTE:
410             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
411         default:
412             UNREACHABLE();
413             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
414     }
415 }
416 
COMPRESSED_RED_RGTC1_EXT_to_default(GLenum type)417 LoadImageFunctionInfo COMPRESSED_RED_RGTC1_EXT_to_default(GLenum type)
418 {
419     switch (type)
420     {
421         case GL_UNSIGNED_BYTE:
422             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
423         default:
424             UNREACHABLE();
425             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
426     }
427 }
428 
COMPRESSED_RG11_EAC_to_EAC_R11G11_UNORM_BLOCK(GLenum type)429 LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_EAC_R11G11_UNORM_BLOCK(GLenum type)
430 {
431     switch (type)
432     {
433         case GL_UNSIGNED_BYTE:
434             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
435         default:
436             UNREACHABLE();
437             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
438     }
439 }
440 
COMPRESSED_RG11_EAC_to_R16G16_FLOAT(GLenum type)441 LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_R16G16_FLOAT(GLenum type)
442 {
443     switch (type)
444     {
445         case GL_UNSIGNED_BYTE:
446             return LoadImageFunctionInfo(LoadEACRG11ToRG16F, true);
447         default:
448             UNREACHABLE();
449             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
450     }
451 }
452 
COMPRESSED_RG11_EAC_to_R16G16_UNORM(GLenum type)453 LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_R16G16_UNORM(GLenum type)
454 {
455     switch (type)
456     {
457         case GL_UNSIGNED_BYTE:
458             return LoadImageFunctionInfo(LoadEACRG11ToRG16, true);
459         default:
460             UNREACHABLE();
461             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
462     }
463 }
464 
COMPRESSED_RGB8_ETC2_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)465 LoadImageFunctionInfo COMPRESSED_RGB8_ETC2_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)
466 {
467     switch (type)
468     {
469         case GL_UNSIGNED_BYTE:
470             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
471         default:
472             UNREACHABLE();
473             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
474     }
475 }
476 
COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM(GLenum type)477 LoadImageFunctionInfo COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM(GLenum type)
478 {
479     switch (type)
480     {
481         case GL_UNSIGNED_BYTE:
482             return LoadImageFunctionInfo(LoadETC2RGB8ToRGBA8, true);
483         default:
484             UNREACHABLE();
485             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
486     }
487 }
488 
COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)489 LoadImageFunctionInfo COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)
490 {
491     switch (type)
492     {
493         case GL_UNSIGNED_BYTE:
494             return LoadImageFunctionInfo(LoadETC2RGB8ToBC1, true);
495         default:
496             UNREACHABLE();
497             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
498     }
499 }
500 
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_UNORM_BLOCK(GLenum type)501 LoadImageFunctionInfo COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_UNORM_BLOCK(
502     GLenum type)
503 {
504     switch (type)
505     {
506         case GL_UNSIGNED_BYTE:
507             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
508         default:
509             UNREACHABLE();
510             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
511     }
512 }
513 
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM(GLenum type)514 LoadImageFunctionInfo COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM(GLenum type)
515 {
516     switch (type)
517     {
518         case GL_UNSIGNED_BYTE:
519             return LoadImageFunctionInfo(LoadETC2RGB8A1ToRGBA8, true);
520         default:
521             UNREACHABLE();
522             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
523     }
524 }
525 
526 LoadImageFunctionInfo
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_BLOCK(GLenum type)527 COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_BLOCK(GLenum type)
528 {
529     switch (type)
530     {
531         case GL_UNSIGNED_BYTE:
532             return LoadImageFunctionInfo(LoadETC2RGB8A1ToBC1, true);
533         default:
534             UNREACHABLE();
535             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
536     }
537 }
538 
COMPRESSED_RGBA8_ETC2_EAC_to_ETC2_R8G8B8A8_UNORM_BLOCK(GLenum type)539 LoadImageFunctionInfo COMPRESSED_RGBA8_ETC2_EAC_to_ETC2_R8G8B8A8_UNORM_BLOCK(GLenum type)
540 {
541     switch (type)
542     {
543         case GL_UNSIGNED_BYTE:
544             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
545         default:
546             UNREACHABLE();
547             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
548     }
549 }
550 
COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM(GLenum type)551 LoadImageFunctionInfo COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM(GLenum type)
552 {
553     switch (type)
554     {
555         case GL_UNSIGNED_BYTE:
556             return LoadImageFunctionInfo(LoadETC2RGBA8ToRGBA8, true);
557         default:
558             UNREACHABLE();
559             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
560     }
561 }
562 
COMPRESSED_RGBA_ASTC_10x10_KHR_to_R8G8B8A8_UNORM(GLenum type)563 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x10_KHR_to_R8G8B8A8_UNORM(GLenum type)
564 {
565     switch (type)
566     {
567         case GL_UNSIGNED_BYTE:
568             return LoadImageFunctionInfo(LoadASTCToRGBA8<10, 10>, true);
569         default:
570             UNREACHABLE();
571             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
572     }
573 }
574 
COMPRESSED_RGBA_ASTC_10x10_KHR_to_default(GLenum type)575 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x10_KHR_to_default(GLenum type)
576 {
577     switch (type)
578     {
579         case GL_UNSIGNED_BYTE:
580             return LoadImageFunctionInfo(LoadCompressedToNative<10, 10, 1, 16>, false);
581         default:
582             UNREACHABLE();
583             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
584     }
585 }
586 
COMPRESSED_RGBA_ASTC_10x5_KHR_to_R8G8B8A8_UNORM(GLenum type)587 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x5_KHR_to_R8G8B8A8_UNORM(GLenum type)
588 {
589     switch (type)
590     {
591         case GL_UNSIGNED_BYTE:
592             return LoadImageFunctionInfo(LoadASTCToRGBA8<10, 5>, true);
593         default:
594             UNREACHABLE();
595             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
596     }
597 }
598 
COMPRESSED_RGBA_ASTC_10x5_KHR_to_default(GLenum type)599 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x5_KHR_to_default(GLenum type)
600 {
601     switch (type)
602     {
603         case GL_UNSIGNED_BYTE:
604             return LoadImageFunctionInfo(LoadCompressedToNative<10, 5, 1, 16>, false);
605         default:
606             UNREACHABLE();
607             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
608     }
609 }
610 
COMPRESSED_RGBA_ASTC_10x6_KHR_to_R8G8B8A8_UNORM(GLenum type)611 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x6_KHR_to_R8G8B8A8_UNORM(GLenum type)
612 {
613     switch (type)
614     {
615         case GL_UNSIGNED_BYTE:
616             return LoadImageFunctionInfo(LoadASTCToRGBA8<10, 6>, true);
617         default:
618             UNREACHABLE();
619             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
620     }
621 }
622 
COMPRESSED_RGBA_ASTC_10x6_KHR_to_default(GLenum type)623 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x6_KHR_to_default(GLenum type)
624 {
625     switch (type)
626     {
627         case GL_UNSIGNED_BYTE:
628             return LoadImageFunctionInfo(LoadCompressedToNative<10, 6, 1, 16>, false);
629         default:
630             UNREACHABLE();
631             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
632     }
633 }
634 
COMPRESSED_RGBA_ASTC_10x8_KHR_to_R8G8B8A8_UNORM(GLenum type)635 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x8_KHR_to_R8G8B8A8_UNORM(GLenum type)
636 {
637     switch (type)
638     {
639         case GL_UNSIGNED_BYTE:
640             return LoadImageFunctionInfo(LoadASTCToRGBA8<10, 8>, true);
641         default:
642             UNREACHABLE();
643             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
644     }
645 }
646 
COMPRESSED_RGBA_ASTC_10x8_KHR_to_default(GLenum type)647 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x8_KHR_to_default(GLenum type)
648 {
649     switch (type)
650     {
651         case GL_UNSIGNED_BYTE:
652             return LoadImageFunctionInfo(LoadCompressedToNative<10, 8, 1, 16>, false);
653         default:
654             UNREACHABLE();
655             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
656     }
657 }
658 
COMPRESSED_RGBA_ASTC_12x10_KHR_to_R8G8B8A8_UNORM(GLenum type)659 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_12x10_KHR_to_R8G8B8A8_UNORM(GLenum type)
660 {
661     switch (type)
662     {
663         case GL_UNSIGNED_BYTE:
664             return LoadImageFunctionInfo(LoadASTCToRGBA8<12, 10>, true);
665         default:
666             UNREACHABLE();
667             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
668     }
669 }
670 
COMPRESSED_RGBA_ASTC_12x10_KHR_to_default(GLenum type)671 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_12x10_KHR_to_default(GLenum type)
672 {
673     switch (type)
674     {
675         case GL_UNSIGNED_BYTE:
676             return LoadImageFunctionInfo(LoadCompressedToNative<12, 10, 1, 16>, false);
677         default:
678             UNREACHABLE();
679             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
680     }
681 }
682 
COMPRESSED_RGBA_ASTC_12x12_KHR_to_R8G8B8A8_UNORM(GLenum type)683 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_12x12_KHR_to_R8G8B8A8_UNORM(GLenum type)
684 {
685     switch (type)
686     {
687         case GL_UNSIGNED_BYTE:
688             return LoadImageFunctionInfo(LoadASTCToRGBA8<12, 12>, true);
689         default:
690             UNREACHABLE();
691             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
692     }
693 }
694 
COMPRESSED_RGBA_ASTC_12x12_KHR_to_default(GLenum type)695 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_12x12_KHR_to_default(GLenum type)
696 {
697     switch (type)
698     {
699         case GL_UNSIGNED_BYTE:
700             return LoadImageFunctionInfo(LoadCompressedToNative<12, 12, 1, 16>, false);
701         default:
702             UNREACHABLE();
703             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
704     }
705 }
706 
COMPRESSED_RGBA_ASTC_3x3x3_OES_to_default(GLenum type)707 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_3x3x3_OES_to_default(GLenum type)
708 {
709     switch (type)
710     {
711         case GL_UNSIGNED_BYTE:
712             return LoadImageFunctionInfo(LoadCompressedToNative<3, 3, 3, 16>, false);
713         default:
714             UNREACHABLE();
715             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
716     }
717 }
718 
COMPRESSED_RGBA_ASTC_4x3x3_OES_to_default(GLenum type)719 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x3x3_OES_to_default(GLenum type)
720 {
721     switch (type)
722     {
723         case GL_UNSIGNED_BYTE:
724             return LoadImageFunctionInfo(LoadCompressedToNative<4, 3, 3, 16>, false);
725         default:
726             UNREACHABLE();
727             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
728     }
729 }
730 
COMPRESSED_RGBA_ASTC_4x4_KHR_to_R8G8B8A8_UNORM(GLenum type)731 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x4_KHR_to_R8G8B8A8_UNORM(GLenum type)
732 {
733     switch (type)
734     {
735         case GL_UNSIGNED_BYTE:
736             return LoadImageFunctionInfo(LoadASTCToRGBA8<4, 4>, true);
737         default:
738             UNREACHABLE();
739             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
740     }
741 }
742 
COMPRESSED_RGBA_ASTC_4x4_KHR_to_default(GLenum type)743 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x4_KHR_to_default(GLenum type)
744 {
745     switch (type)
746     {
747         case GL_UNSIGNED_BYTE:
748             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
749         default:
750             UNREACHABLE();
751             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
752     }
753 }
754 
COMPRESSED_RGBA_ASTC_4x4x3_OES_to_default(GLenum type)755 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x4x3_OES_to_default(GLenum type)
756 {
757     switch (type)
758     {
759         case GL_UNSIGNED_BYTE:
760             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 3, 16>, false);
761         default:
762             UNREACHABLE();
763             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
764     }
765 }
766 
COMPRESSED_RGBA_ASTC_4x4x4_OES_to_default(GLenum type)767 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x4x4_OES_to_default(GLenum type)
768 {
769     switch (type)
770     {
771         case GL_UNSIGNED_BYTE:
772             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 4, 16>, false);
773         default:
774             UNREACHABLE();
775             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
776     }
777 }
778 
COMPRESSED_RGBA_ASTC_5x4_KHR_to_R8G8B8A8_UNORM(GLenum type)779 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x4_KHR_to_R8G8B8A8_UNORM(GLenum type)
780 {
781     switch (type)
782     {
783         case GL_UNSIGNED_BYTE:
784             return LoadImageFunctionInfo(LoadASTCToRGBA8<5, 4>, true);
785         default:
786             UNREACHABLE();
787             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
788     }
789 }
790 
COMPRESSED_RGBA_ASTC_5x4_KHR_to_default(GLenum type)791 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x4_KHR_to_default(GLenum type)
792 {
793     switch (type)
794     {
795         case GL_UNSIGNED_BYTE:
796             return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 1, 16>, false);
797         default:
798             UNREACHABLE();
799             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
800     }
801 }
802 
COMPRESSED_RGBA_ASTC_5x4x4_OES_to_default(GLenum type)803 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x4x4_OES_to_default(GLenum type)
804 {
805     switch (type)
806     {
807         case GL_UNSIGNED_BYTE:
808             return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 4, 16>, false);
809         default:
810             UNREACHABLE();
811             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
812     }
813 }
814 
COMPRESSED_RGBA_ASTC_5x5_KHR_to_R8G8B8A8_UNORM(GLenum type)815 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x5_KHR_to_R8G8B8A8_UNORM(GLenum type)
816 {
817     switch (type)
818     {
819         case GL_UNSIGNED_BYTE:
820             return LoadImageFunctionInfo(LoadASTCToRGBA8<5, 5>, true);
821         default:
822             UNREACHABLE();
823             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
824     }
825 }
826 
COMPRESSED_RGBA_ASTC_5x5_KHR_to_default(GLenum type)827 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x5_KHR_to_default(GLenum type)
828 {
829     switch (type)
830     {
831         case GL_UNSIGNED_BYTE:
832             return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 1, 16>, false);
833         default:
834             UNREACHABLE();
835             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
836     }
837 }
838 
COMPRESSED_RGBA_ASTC_5x5x4_OES_to_default(GLenum type)839 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x5x4_OES_to_default(GLenum type)
840 {
841     switch (type)
842     {
843         case GL_UNSIGNED_BYTE:
844             return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 4, 16>, false);
845         default:
846             UNREACHABLE();
847             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
848     }
849 }
850 
COMPRESSED_RGBA_ASTC_5x5x5_OES_to_default(GLenum type)851 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x5x5_OES_to_default(GLenum type)
852 {
853     switch (type)
854     {
855         case GL_UNSIGNED_BYTE:
856             return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 5, 16>, false);
857         default:
858             UNREACHABLE();
859             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
860     }
861 }
862 
COMPRESSED_RGBA_ASTC_6x5_KHR_to_R8G8B8A8_UNORM(GLenum type)863 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x5_KHR_to_R8G8B8A8_UNORM(GLenum type)
864 {
865     switch (type)
866     {
867         case GL_UNSIGNED_BYTE:
868             return LoadImageFunctionInfo(LoadASTCToRGBA8<6, 5>, true);
869         default:
870             UNREACHABLE();
871             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
872     }
873 }
874 
COMPRESSED_RGBA_ASTC_6x5_KHR_to_default(GLenum type)875 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x5_KHR_to_default(GLenum type)
876 {
877     switch (type)
878     {
879         case GL_UNSIGNED_BYTE:
880             return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 1, 16>, false);
881         default:
882             UNREACHABLE();
883             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
884     }
885 }
886 
COMPRESSED_RGBA_ASTC_6x5x5_OES_to_default(GLenum type)887 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x5x5_OES_to_default(GLenum type)
888 {
889     switch (type)
890     {
891         case GL_UNSIGNED_BYTE:
892             return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 5, 16>, false);
893         default:
894             UNREACHABLE();
895             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
896     }
897 }
898 
COMPRESSED_RGBA_ASTC_6x6_KHR_to_R8G8B8A8_UNORM(GLenum type)899 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x6_KHR_to_R8G8B8A8_UNORM(GLenum type)
900 {
901     switch (type)
902     {
903         case GL_UNSIGNED_BYTE:
904             return LoadImageFunctionInfo(LoadASTCToRGBA8<6, 6>, true);
905         default:
906             UNREACHABLE();
907             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
908     }
909 }
910 
COMPRESSED_RGBA_ASTC_6x6_KHR_to_default(GLenum type)911 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x6_KHR_to_default(GLenum type)
912 {
913     switch (type)
914     {
915         case GL_UNSIGNED_BYTE:
916             return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 1, 16>, false);
917         default:
918             UNREACHABLE();
919             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
920     }
921 }
922 
COMPRESSED_RGBA_ASTC_6x6x5_OES_to_default(GLenum type)923 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x6x5_OES_to_default(GLenum type)
924 {
925     switch (type)
926     {
927         case GL_UNSIGNED_BYTE:
928             return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 5, 16>, false);
929         default:
930             UNREACHABLE();
931             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
932     }
933 }
934 
COMPRESSED_RGBA_ASTC_6x6x6_OES_to_default(GLenum type)935 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x6x6_OES_to_default(GLenum type)
936 {
937     switch (type)
938     {
939         case GL_UNSIGNED_BYTE:
940             return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 6, 16>, false);
941         default:
942             UNREACHABLE();
943             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
944     }
945 }
946 
COMPRESSED_RGBA_ASTC_8x5_KHR_to_R8G8B8A8_UNORM(GLenum type)947 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x5_KHR_to_R8G8B8A8_UNORM(GLenum type)
948 {
949     switch (type)
950     {
951         case GL_UNSIGNED_BYTE:
952             return LoadImageFunctionInfo(LoadASTCToRGBA8<8, 5>, true);
953         default:
954             UNREACHABLE();
955             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
956     }
957 }
958 
COMPRESSED_RGBA_ASTC_8x5_KHR_to_default(GLenum type)959 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x5_KHR_to_default(GLenum type)
960 {
961     switch (type)
962     {
963         case GL_UNSIGNED_BYTE:
964             return LoadImageFunctionInfo(LoadCompressedToNative<8, 5, 1, 16>, false);
965         default:
966             UNREACHABLE();
967             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
968     }
969 }
970 
COMPRESSED_RGBA_ASTC_8x6_KHR_to_R8G8B8A8_UNORM(GLenum type)971 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x6_KHR_to_R8G8B8A8_UNORM(GLenum type)
972 {
973     switch (type)
974     {
975         case GL_UNSIGNED_BYTE:
976             return LoadImageFunctionInfo(LoadASTCToRGBA8<8, 6>, true);
977         default:
978             UNREACHABLE();
979             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
980     }
981 }
982 
COMPRESSED_RGBA_ASTC_8x6_KHR_to_default(GLenum type)983 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x6_KHR_to_default(GLenum type)
984 {
985     switch (type)
986     {
987         case GL_UNSIGNED_BYTE:
988             return LoadImageFunctionInfo(LoadCompressedToNative<8, 6, 1, 16>, false);
989         default:
990             UNREACHABLE();
991             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
992     }
993 }
994 
COMPRESSED_RGBA_ASTC_8x8_KHR_to_R8G8B8A8_UNORM(GLenum type)995 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x8_KHR_to_R8G8B8A8_UNORM(GLenum type)
996 {
997     switch (type)
998     {
999         case GL_UNSIGNED_BYTE:
1000             return LoadImageFunctionInfo(LoadASTCToRGBA8<8, 8>, true);
1001         default:
1002             UNREACHABLE();
1003             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1004     }
1005 }
1006 
COMPRESSED_RGBA_ASTC_8x8_KHR_to_default(GLenum type)1007 LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x8_KHR_to_default(GLenum type)
1008 {
1009     switch (type)
1010     {
1011         case GL_UNSIGNED_BYTE:
1012             return LoadImageFunctionInfo(LoadCompressedToNative<8, 8, 1, 16>, false);
1013         default:
1014             UNREACHABLE();
1015             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1016     }
1017 }
1018 
COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default(GLenum type)1019 LoadImageFunctionInfo COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default(GLenum type)
1020 {
1021     switch (type)
1022     {
1023         case GL_UNSIGNED_BYTE:
1024             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1025         default:
1026             UNREACHABLE();
1027             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1028     }
1029 }
1030 
COMPRESSED_RGBA_S3TC_DXT1_EXT_to_default(GLenum type)1031 LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT1_EXT_to_default(GLenum type)
1032 {
1033     switch (type)
1034     {
1035         case GL_UNSIGNED_BYTE:
1036             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1037         default:
1038             UNREACHABLE();
1039             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1040     }
1041 }
1042 
COMPRESSED_RGBA_S3TC_DXT3_ANGLE_to_default(GLenum type)1043 LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT3_ANGLE_to_default(GLenum type)
1044 {
1045     switch (type)
1046     {
1047         case GL_UNSIGNED_BYTE:
1048             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1049         default:
1050             UNREACHABLE();
1051             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1052     }
1053 }
1054 
COMPRESSED_RGBA_S3TC_DXT5_ANGLE_to_default(GLenum type)1055 LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT5_ANGLE_to_default(GLenum type)
1056 {
1057     switch (type)
1058     {
1059         case GL_UNSIGNED_BYTE:
1060             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1061         default:
1062             UNREACHABLE();
1063             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1064     }
1065 }
1066 
COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT_to_default(GLenum type)1067 LoadImageFunctionInfo COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT_to_default(GLenum type)
1068 {
1069     switch (type)
1070     {
1071         case GL_UNSIGNED_BYTE:
1072             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1073         default:
1074             UNREACHABLE();
1075             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1076     }
1077 }
1078 
COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT_to_default(GLenum type)1079 LoadImageFunctionInfo COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT_to_default(GLenum type)
1080 {
1081     switch (type)
1082     {
1083         case GL_UNSIGNED_BYTE:
1084             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1085         default:
1086             UNREACHABLE();
1087             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1088     }
1089 }
1090 
COMPRESSED_RGB_S3TC_DXT1_EXT_to_default(GLenum type)1091 LoadImageFunctionInfo COMPRESSED_RGB_S3TC_DXT1_EXT_to_default(GLenum type)
1092 {
1093     switch (type)
1094     {
1095         case GL_UNSIGNED_BYTE:
1096             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1097         default:
1098             UNREACHABLE();
1099             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1100     }
1101 }
1102 
COMPRESSED_SIGNED_R11_EAC_to_EAC_R11_SNORM_BLOCK(GLenum type)1103 LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_EAC_R11_SNORM_BLOCK(GLenum type)
1104 {
1105     switch (type)
1106     {
1107         case GL_UNSIGNED_BYTE:
1108             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1109         default:
1110             UNREACHABLE();
1111             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1112     }
1113 }
1114 
COMPRESSED_SIGNED_R11_EAC_to_R16_FLOAT(GLenum type)1115 LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_R16_FLOAT(GLenum type)
1116 {
1117     switch (type)
1118     {
1119         case GL_UNSIGNED_BYTE:
1120             return LoadImageFunctionInfo(LoadEACR11SToR16F, true);
1121         default:
1122             UNREACHABLE();
1123             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1124     }
1125 }
1126 
COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM(GLenum type)1127 LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM(GLenum type)
1128 {
1129     switch (type)
1130     {
1131         case GL_UNSIGNED_BYTE:
1132             return LoadImageFunctionInfo(LoadEACR11SToR16, true);
1133         default:
1134             UNREACHABLE();
1135             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1136     }
1137 }
1138 
COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT_to_default(GLenum type)1139 LoadImageFunctionInfo COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT_to_default(GLenum type)
1140 {
1141     switch (type)
1142     {
1143         case GL_UNSIGNED_BYTE:
1144             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1145         default:
1146             UNREACHABLE();
1147             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1148     }
1149 }
1150 
COMPRESSED_SIGNED_RED_RGTC1_EXT_to_default(GLenum type)1151 LoadImageFunctionInfo COMPRESSED_SIGNED_RED_RGTC1_EXT_to_default(GLenum type)
1152 {
1153     switch (type)
1154     {
1155         case GL_UNSIGNED_BYTE:
1156             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1157         default:
1158             UNREACHABLE();
1159             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1160     }
1161 }
1162 
COMPRESSED_SIGNED_RG11_EAC_to_EAC_R11G11_SNORM_BLOCK(GLenum type)1163 LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_EAC_R11G11_SNORM_BLOCK(GLenum type)
1164 {
1165     switch (type)
1166     {
1167         case GL_UNSIGNED_BYTE:
1168             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1169         default:
1170             UNREACHABLE();
1171             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1172     }
1173 }
1174 
COMPRESSED_SIGNED_RG11_EAC_to_R16G16_FLOAT(GLenum type)1175 LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_R16G16_FLOAT(GLenum type)
1176 {
1177     switch (type)
1178     {
1179         case GL_UNSIGNED_BYTE:
1180             return LoadImageFunctionInfo(LoadEACRG11SToRG16F, true);
1181         default:
1182             UNREACHABLE();
1183             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1184     }
1185 }
1186 
COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM(GLenum type)1187 LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM(GLenum type)
1188 {
1189     switch (type)
1190     {
1191         case GL_UNSIGNED_BYTE:
1192             return LoadImageFunctionInfo(LoadEACRG11SToRG16, true);
1193         default:
1194             UNREACHABLE();
1195             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1196     }
1197 }
1198 
COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1199 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1200 {
1201     switch (type)
1202     {
1203         case GL_UNSIGNED_BYTE:
1204             return LoadImageFunctionInfo(LoadASTCToRGBA8<10, 10>, true);
1205         default:
1206             UNREACHABLE();
1207             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1208     }
1209 }
1210 
COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_default(GLenum type)1211 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_default(GLenum type)
1212 {
1213     switch (type)
1214     {
1215         case GL_UNSIGNED_BYTE:
1216             return LoadImageFunctionInfo(LoadCompressedToNative<10, 10, 1, 16>, false);
1217         default:
1218             UNREACHABLE();
1219             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1220     }
1221 }
1222 
COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1223 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1224 {
1225     switch (type)
1226     {
1227         case GL_UNSIGNED_BYTE:
1228             return LoadImageFunctionInfo(LoadASTCToRGBA8<10, 5>, true);
1229         default:
1230             UNREACHABLE();
1231             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1232     }
1233 }
1234 
COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_default(GLenum type)1235 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_default(GLenum type)
1236 {
1237     switch (type)
1238     {
1239         case GL_UNSIGNED_BYTE:
1240             return LoadImageFunctionInfo(LoadCompressedToNative<10, 5, 1, 16>, false);
1241         default:
1242             UNREACHABLE();
1243             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1244     }
1245 }
1246 
COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1247 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1248 {
1249     switch (type)
1250     {
1251         case GL_UNSIGNED_BYTE:
1252             return LoadImageFunctionInfo(LoadASTCToRGBA8<10, 6>, true);
1253         default:
1254             UNREACHABLE();
1255             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1256     }
1257 }
1258 
COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_default(GLenum type)1259 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_default(GLenum type)
1260 {
1261     switch (type)
1262     {
1263         case GL_UNSIGNED_BYTE:
1264             return LoadImageFunctionInfo(LoadCompressedToNative<10, 6, 1, 16>, false);
1265         default:
1266             UNREACHABLE();
1267             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1268     }
1269 }
1270 
COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1271 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1272 {
1273     switch (type)
1274     {
1275         case GL_UNSIGNED_BYTE:
1276             return LoadImageFunctionInfo(LoadASTCToRGBA8<10, 8>, true);
1277         default:
1278             UNREACHABLE();
1279             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1280     }
1281 }
1282 
COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_default(GLenum type)1283 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_default(GLenum type)
1284 {
1285     switch (type)
1286     {
1287         case GL_UNSIGNED_BYTE:
1288             return LoadImageFunctionInfo(LoadCompressedToNative<10, 8, 1, 16>, false);
1289         default:
1290             UNREACHABLE();
1291             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1292     }
1293 }
1294 
COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1295 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1296 {
1297     switch (type)
1298     {
1299         case GL_UNSIGNED_BYTE:
1300             return LoadImageFunctionInfo(LoadASTCToRGBA8<12, 10>, true);
1301         default:
1302             UNREACHABLE();
1303             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1304     }
1305 }
1306 
COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_default(GLenum type)1307 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_default(GLenum type)
1308 {
1309     switch (type)
1310     {
1311         case GL_UNSIGNED_BYTE:
1312             return LoadImageFunctionInfo(LoadCompressedToNative<12, 10, 1, 16>, false);
1313         default:
1314             UNREACHABLE();
1315             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1316     }
1317 }
1318 
COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1319 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1320 {
1321     switch (type)
1322     {
1323         case GL_UNSIGNED_BYTE:
1324             return LoadImageFunctionInfo(LoadASTCToRGBA8<12, 12>, true);
1325         default:
1326             UNREACHABLE();
1327             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1328     }
1329 }
1330 
COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_default(GLenum type)1331 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_default(GLenum type)
1332 {
1333     switch (type)
1334     {
1335         case GL_UNSIGNED_BYTE:
1336             return LoadImageFunctionInfo(LoadCompressedToNative<12, 12, 1, 16>, false);
1337         default:
1338             UNREACHABLE();
1339             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1340     }
1341 }
1342 
COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES_to_default(GLenum type)1343 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES_to_default(GLenum type)
1344 {
1345     switch (type)
1346     {
1347         case GL_UNSIGNED_BYTE:
1348             return LoadImageFunctionInfo(LoadCompressedToNative<3, 3, 3, 16>, false);
1349         default:
1350             UNREACHABLE();
1351             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1352     }
1353 }
1354 
COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES_to_default(GLenum type)1355 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES_to_default(GLenum type)
1356 {
1357     switch (type)
1358     {
1359         case GL_UNSIGNED_BYTE:
1360             return LoadImageFunctionInfo(LoadCompressedToNative<4, 3, 3, 16>, false);
1361         default:
1362             UNREACHABLE();
1363             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1364     }
1365 }
1366 
COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1367 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1368 {
1369     switch (type)
1370     {
1371         case GL_UNSIGNED_BYTE:
1372             return LoadImageFunctionInfo(LoadASTCToRGBA8<4, 4>, true);
1373         default:
1374             UNREACHABLE();
1375             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1376     }
1377 }
1378 
COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_default(GLenum type)1379 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_default(GLenum type)
1380 {
1381     switch (type)
1382     {
1383         case GL_UNSIGNED_BYTE:
1384             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1385         default:
1386             UNREACHABLE();
1387             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1388     }
1389 }
1390 
COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES_to_default(GLenum type)1391 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES_to_default(GLenum type)
1392 {
1393     switch (type)
1394     {
1395         case GL_UNSIGNED_BYTE:
1396             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 3, 16>, false);
1397         default:
1398             UNREACHABLE();
1399             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1400     }
1401 }
1402 
COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES_to_default(GLenum type)1403 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES_to_default(GLenum type)
1404 {
1405     switch (type)
1406     {
1407         case GL_UNSIGNED_BYTE:
1408             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 4, 16>, false);
1409         default:
1410             UNREACHABLE();
1411             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1412     }
1413 }
1414 
COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1415 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1416 {
1417     switch (type)
1418     {
1419         case GL_UNSIGNED_BYTE:
1420             return LoadImageFunctionInfo(LoadASTCToRGBA8<5, 4>, true);
1421         default:
1422             UNREACHABLE();
1423             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1424     }
1425 }
1426 
COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_default(GLenum type)1427 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_default(GLenum type)
1428 {
1429     switch (type)
1430     {
1431         case GL_UNSIGNED_BYTE:
1432             return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 1, 16>, false);
1433         default:
1434             UNREACHABLE();
1435             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1436     }
1437 }
1438 
COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES_to_default(GLenum type)1439 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES_to_default(GLenum type)
1440 {
1441     switch (type)
1442     {
1443         case GL_UNSIGNED_BYTE:
1444             return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 4, 16>, false);
1445         default:
1446             UNREACHABLE();
1447             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1448     }
1449 }
1450 
COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1451 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1452 {
1453     switch (type)
1454     {
1455         case GL_UNSIGNED_BYTE:
1456             return LoadImageFunctionInfo(LoadASTCToRGBA8<5, 5>, true);
1457         default:
1458             UNREACHABLE();
1459             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1460     }
1461 }
1462 
COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_default(GLenum type)1463 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_default(GLenum type)
1464 {
1465     switch (type)
1466     {
1467         case GL_UNSIGNED_BYTE:
1468             return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 1, 16>, false);
1469         default:
1470             UNREACHABLE();
1471             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1472     }
1473 }
1474 
COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES_to_default(GLenum type)1475 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES_to_default(GLenum type)
1476 {
1477     switch (type)
1478     {
1479         case GL_UNSIGNED_BYTE:
1480             return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 4, 16>, false);
1481         default:
1482             UNREACHABLE();
1483             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1484     }
1485 }
1486 
COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES_to_default(GLenum type)1487 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES_to_default(GLenum type)
1488 {
1489     switch (type)
1490     {
1491         case GL_UNSIGNED_BYTE:
1492             return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 5, 16>, false);
1493         default:
1494             UNREACHABLE();
1495             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1496     }
1497 }
1498 
COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1499 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1500 {
1501     switch (type)
1502     {
1503         case GL_UNSIGNED_BYTE:
1504             return LoadImageFunctionInfo(LoadASTCToRGBA8<6, 5>, true);
1505         default:
1506             UNREACHABLE();
1507             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1508     }
1509 }
1510 
COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_default(GLenum type)1511 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_default(GLenum type)
1512 {
1513     switch (type)
1514     {
1515         case GL_UNSIGNED_BYTE:
1516             return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 1, 16>, false);
1517         default:
1518             UNREACHABLE();
1519             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1520     }
1521 }
1522 
COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES_to_default(GLenum type)1523 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES_to_default(GLenum type)
1524 {
1525     switch (type)
1526     {
1527         case GL_UNSIGNED_BYTE:
1528             return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 5, 16>, false);
1529         default:
1530             UNREACHABLE();
1531             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1532     }
1533 }
1534 
COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1535 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1536 {
1537     switch (type)
1538     {
1539         case GL_UNSIGNED_BYTE:
1540             return LoadImageFunctionInfo(LoadASTCToRGBA8<6, 6>, true);
1541         default:
1542             UNREACHABLE();
1543             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1544     }
1545 }
1546 
COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_default(GLenum type)1547 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_default(GLenum type)
1548 {
1549     switch (type)
1550     {
1551         case GL_UNSIGNED_BYTE:
1552             return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 1, 16>, false);
1553         default:
1554             UNREACHABLE();
1555             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1556     }
1557 }
1558 
COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES_to_default(GLenum type)1559 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES_to_default(GLenum type)
1560 {
1561     switch (type)
1562     {
1563         case GL_UNSIGNED_BYTE:
1564             return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 5, 16>, false);
1565         default:
1566             UNREACHABLE();
1567             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1568     }
1569 }
1570 
COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES_to_default(GLenum type)1571 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES_to_default(GLenum type)
1572 {
1573     switch (type)
1574     {
1575         case GL_UNSIGNED_BYTE:
1576             return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 6, 16>, false);
1577         default:
1578             UNREACHABLE();
1579             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1580     }
1581 }
1582 
COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1583 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1584 {
1585     switch (type)
1586     {
1587         case GL_UNSIGNED_BYTE:
1588             return LoadImageFunctionInfo(LoadASTCToRGBA8<8, 5>, true);
1589         default:
1590             UNREACHABLE();
1591             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1592     }
1593 }
1594 
COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_default(GLenum type)1595 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_default(GLenum type)
1596 {
1597     switch (type)
1598     {
1599         case GL_UNSIGNED_BYTE:
1600             return LoadImageFunctionInfo(LoadCompressedToNative<8, 5, 1, 16>, false);
1601         default:
1602             UNREACHABLE();
1603             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1604     }
1605 }
1606 
COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1607 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1608 {
1609     switch (type)
1610     {
1611         case GL_UNSIGNED_BYTE:
1612             return LoadImageFunctionInfo(LoadASTCToRGBA8<8, 6>, true);
1613         default:
1614             UNREACHABLE();
1615             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1616     }
1617 }
1618 
COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_default(GLenum type)1619 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_default(GLenum type)
1620 {
1621     switch (type)
1622     {
1623         case GL_UNSIGNED_BYTE:
1624             return LoadImageFunctionInfo(LoadCompressedToNative<8, 6, 1, 16>, false);
1625         default:
1626             UNREACHABLE();
1627             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1628     }
1629 }
1630 
COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)1631 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1632 {
1633     switch (type)
1634     {
1635         case GL_UNSIGNED_BYTE:
1636             return LoadImageFunctionInfo(LoadASTCToRGBA8<8, 8>, true);
1637         default:
1638             UNREACHABLE();
1639             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1640     }
1641 }
1642 
COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_default(GLenum type)1643 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_default(GLenum type)
1644 {
1645     switch (type)
1646     {
1647         case GL_UNSIGNED_BYTE:
1648             return LoadImageFunctionInfo(LoadCompressedToNative<8, 8, 1, 16>, false);
1649         default:
1650             UNREACHABLE();
1651             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1652     }
1653 }
1654 
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_ETC2_R8G8B8A8_SRGB_BLOCK(GLenum type)1655 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_ETC2_R8G8B8A8_SRGB_BLOCK(GLenum type)
1656 {
1657     switch (type)
1658     {
1659         case GL_UNSIGNED_BYTE:
1660             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1661         default:
1662             UNREACHABLE();
1663             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1664     }
1665 }
1666 
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB(GLenum type)1667 LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1668 {
1669     switch (type)
1670     {
1671         case GL_UNSIGNED_BYTE:
1672             return LoadImageFunctionInfo(LoadETC2SRGBA8ToSRGBA8, true);
1673         default:
1674             UNREACHABLE();
1675             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1676     }
1677 }
1678 
COMPRESSED_SRGB8_ETC2_to_ETC2_R8G8B8_SRGB_BLOCK(GLenum type)1679 LoadImageFunctionInfo COMPRESSED_SRGB8_ETC2_to_ETC2_R8G8B8_SRGB_BLOCK(GLenum type)
1680 {
1681     switch (type)
1682     {
1683         case GL_UNSIGNED_BYTE:
1684             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1685         default:
1686             UNREACHABLE();
1687             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1688     }
1689 }
1690 
COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)1691 LoadImageFunctionInfo COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1692 {
1693     switch (type)
1694     {
1695         case GL_UNSIGNED_BYTE:
1696             return LoadImageFunctionInfo(LoadETC2SRGB8ToRGBA8, true);
1697         default:
1698             UNREACHABLE();
1699             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1700     }
1701 }
1702 
COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_SRGB_BLOCK(GLenum type)1703 LoadImageFunctionInfo COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_SRGB_BLOCK(
1704     GLenum type)
1705 {
1706     switch (type)
1707     {
1708         case GL_UNSIGNED_BYTE:
1709             return LoadImageFunctionInfo(LoadETC2SRGB8ToBC1, true);
1710         default:
1711             UNREACHABLE();
1712             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1713     }
1714 }
1715 
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_SRGB_BLOCK(GLenum type)1716 LoadImageFunctionInfo COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_SRGB_BLOCK(
1717     GLenum type)
1718 {
1719     switch (type)
1720     {
1721         case GL_UNSIGNED_BYTE:
1722             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1723         default:
1724             UNREACHABLE();
1725             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1726     }
1727 }
1728 
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)1729 LoadImageFunctionInfo COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)
1730 {
1731     switch (type)
1732     {
1733         case GL_UNSIGNED_BYTE:
1734             return LoadImageFunctionInfo(LoadETC2SRGB8A1ToRGBA8, true);
1735         default:
1736             UNREACHABLE();
1737             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1738     }
1739 }
1740 
1741 LoadImageFunctionInfo
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_SRGB_BLOCK(GLenum type)1742 COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_SRGB_BLOCK(
1743     GLenum type)
1744 {
1745     switch (type)
1746     {
1747         case GL_UNSIGNED_BYTE:
1748             return LoadImageFunctionInfo(LoadETC2SRGB8A1ToBC1, true);
1749         default:
1750             UNREACHABLE();
1751             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1752     }
1753 }
1754 
COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default(GLenum type)1755 LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default(GLenum type)
1756 {
1757     switch (type)
1758     {
1759         case GL_UNSIGNED_BYTE:
1760             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1761         default:
1762             UNREACHABLE();
1763             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1764     }
1765 }
1766 
COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT_to_default(GLenum type)1767 LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT_to_default(GLenum type)
1768 {
1769     switch (type)
1770     {
1771         case GL_UNSIGNED_BYTE:
1772             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1773         default:
1774             UNREACHABLE();
1775             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1776     }
1777 }
1778 
COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT_to_default(GLenum type)1779 LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT_to_default(GLenum type)
1780 {
1781     switch (type)
1782     {
1783         case GL_UNSIGNED_BYTE:
1784             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1785         default:
1786             UNREACHABLE();
1787             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1788     }
1789 }
1790 
COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT_to_default(GLenum type)1791 LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT_to_default(GLenum type)
1792 {
1793     switch (type)
1794     {
1795         case GL_UNSIGNED_BYTE:
1796             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 16>, false);
1797         default:
1798             UNREACHABLE();
1799             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1800     }
1801 }
1802 
COMPRESSED_SRGB_S3TC_DXT1_EXT_to_default(GLenum type)1803 LoadImageFunctionInfo COMPRESSED_SRGB_S3TC_DXT1_EXT_to_default(GLenum type)
1804 {
1805     switch (type)
1806     {
1807         case GL_UNSIGNED_BYTE:
1808             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1809         default:
1810             UNREACHABLE();
1811             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1812     }
1813 }
1814 
DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)1815 LoadImageFunctionInfo DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)
1816 {
1817     switch (type)
1818     {
1819         case GL_UNSIGNED_INT_24_8:
1820             return LoadImageFunctionInfo(LoadD24S8ToS8D24, true);
1821         default:
1822             UNREACHABLE();
1823             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1824     }
1825 }
1826 
DEPTH24_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)1827 LoadImageFunctionInfo DEPTH24_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)
1828 {
1829     switch (type)
1830     {
1831         case GL_UNSIGNED_INT_24_8:
1832             return LoadImageFunctionInfo(LoadD24S8ToD32FS8X24, true);
1833         default:
1834             UNREACHABLE();
1835             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1836     }
1837 }
1838 
DEPTH32F_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)1839 LoadImageFunctionInfo DEPTH32F_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)
1840 {
1841     switch (type)
1842     {
1843         case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
1844             return LoadImageFunctionInfo(LoadD32FS8X24ToS8D24, true);
1845         default:
1846             UNREACHABLE();
1847             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1848     }
1849 }
1850 
DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)1851 LoadImageFunctionInfo DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)
1852 {
1853     switch (type)
1854     {
1855         case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
1856             return LoadImageFunctionInfo(LoadD32FS8X24ToD32FS8X24, true);
1857         default:
1858             UNREACHABLE();
1859             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1860     }
1861 }
1862 
DEPTH_COMPONENT16_to_D16_UNORM(GLenum type)1863 LoadImageFunctionInfo DEPTH_COMPONENT16_to_D16_UNORM(GLenum type)
1864 {
1865     switch (type)
1866     {
1867         case GL_UNSIGNED_INT:
1868             return LoadImageFunctionInfo(LoadR32ToR16, true);
1869         case GL_UNSIGNED_SHORT:
1870             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
1871         default:
1872             UNREACHABLE();
1873             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1874     }
1875 }
1876 
DEPTH_COMPONENT16_to_D32_FLOAT(GLenum type)1877 LoadImageFunctionInfo DEPTH_COMPONENT16_to_D32_FLOAT(GLenum type)
1878 {
1879     switch (type)
1880     {
1881         case GL_UNSIGNED_INT:
1882             return LoadImageFunctionInfo(LoadD32ToD32F, true);
1883         case GL_UNSIGNED_SHORT:
1884             return LoadImageFunctionInfo(LoadD16ToD32F, true);
1885         default:
1886             UNREACHABLE();
1887             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1888     }
1889 }
1890 
DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT(GLenum type)1891 LoadImageFunctionInfo DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT(GLenum type)
1892 {
1893     switch (type)
1894     {
1895         case GL_UNSIGNED_INT:
1896             return LoadImageFunctionInfo(LoadD32ToX8D24, true);
1897         default:
1898             UNREACHABLE();
1899             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1900     }
1901 }
1902 
DEPTH_COMPONENT24_to_D24_UNORM_X8_UINT(GLenum type)1903 LoadImageFunctionInfo DEPTH_COMPONENT24_to_D24_UNORM_X8_UINT(GLenum type)
1904 {
1905     switch (type)
1906     {
1907         case GL_UNSIGNED_INT:
1908             return LoadImageFunctionInfo(LoadD32ToX8D24, true);
1909         default:
1910             UNREACHABLE();
1911             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1912     }
1913 }
1914 
DEPTH_COMPONENT24_to_D32_FLOAT(GLenum type)1915 LoadImageFunctionInfo DEPTH_COMPONENT24_to_D32_FLOAT(GLenum type)
1916 {
1917     switch (type)
1918     {
1919         case GL_UNSIGNED_INT:
1920             return LoadImageFunctionInfo(LoadD32ToD32F, true);
1921         default:
1922             UNREACHABLE();
1923             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1924     }
1925 }
1926 
DEPTH_COMPONENT24_to_D32_FLOAT_S8X24_UINT(GLenum type)1927 LoadImageFunctionInfo DEPTH_COMPONENT24_to_D32_FLOAT_S8X24_UINT(GLenum type)
1928 {
1929     switch (type)
1930     {
1931         case GL_UNSIGNED_INT:
1932             return LoadImageFunctionInfo(LoadD32ToD32FX32, true);
1933         case GL_UNSIGNED_INT_24_8:
1934             return LoadImageFunctionInfo(LoadD24S8ToD32FS8X24, true);
1935         default:
1936             UNREACHABLE();
1937             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1938     }
1939 }
1940 
DEPTH_COMPONENT32F_to_D32_FLOAT(GLenum type)1941 LoadImageFunctionInfo DEPTH_COMPONENT32F_to_D32_FLOAT(GLenum type)
1942 {
1943     switch (type)
1944     {
1945         case GL_FLOAT:
1946             return LoadImageFunctionInfo(LoadD32FToD32F, true);
1947         default:
1948             UNREACHABLE();
1949             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1950     }
1951 }
1952 
DEPTH_COMPONENT32_OES_to_D32_FLOAT(GLenum type)1953 LoadImageFunctionInfo DEPTH_COMPONENT32_OES_to_D32_FLOAT(GLenum type)
1954 {
1955     switch (type)
1956     {
1957         case GL_UNSIGNED_INT:
1958             return LoadImageFunctionInfo(LoadD32ToD32F, true);
1959         default:
1960             UNREACHABLE();
1961             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1962     }
1963 }
1964 
DEPTH_COMPONENT32_OES_to_default(GLenum type)1965 LoadImageFunctionInfo DEPTH_COMPONENT32_OES_to_default(GLenum type)
1966 {
1967     switch (type)
1968     {
1969         case GL_UNSIGNED_INT:
1970             return LoadImageFunctionInfo(LoadD32ToX8D24, true);
1971         default:
1972             UNREACHABLE();
1973             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1974     }
1975 }
1976 
ETC1_RGB8_LOSSY_DECODE_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)1977 LoadImageFunctionInfo ETC1_RGB8_LOSSY_DECODE_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)
1978 {
1979     switch (type)
1980     {
1981         case GL_UNSIGNED_BYTE:
1982             return LoadImageFunctionInfo(LoadETC1RGB8ToBC1, true);
1983         default:
1984             UNREACHABLE();
1985             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1986     }
1987 }
1988 
ETC1_RGB8_OES_to_ETC1_R8G8B8_UNORM_BLOCK(GLenum type)1989 LoadImageFunctionInfo ETC1_RGB8_OES_to_ETC1_R8G8B8_UNORM_BLOCK(GLenum type)
1990 {
1991     switch (type)
1992     {
1993         case GL_UNSIGNED_BYTE:
1994             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
1995         default:
1996             UNREACHABLE();
1997             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
1998     }
1999 }
2000 
ETC1_RGB8_OES_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)2001 LoadImageFunctionInfo ETC1_RGB8_OES_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)
2002 {
2003     switch (type)
2004     {
2005         case GL_UNSIGNED_BYTE:
2006             return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 1, 8>, false);
2007         default:
2008             UNREACHABLE();
2009             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2010     }
2011 }
2012 
ETC1_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)2013 LoadImageFunctionInfo ETC1_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)
2014 {
2015     switch (type)
2016     {
2017         case GL_UNSIGNED_BYTE:
2018             return LoadImageFunctionInfo(LoadETC1RGB8ToRGBA8, true);
2019         default:
2020             UNREACHABLE();
2021             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2022     }
2023 }
2024 
G8_B8R8_2PLANE_420_UNORM_ANGLE_to_default(GLenum type)2025 LoadImageFunctionInfo G8_B8R8_2PLANE_420_UNORM_ANGLE_to_default(GLenum type)
2026 {
2027     switch (type)
2028     {
2029         case GL_UNSIGNED_BYTE:
2030             return LoadImageFunctionInfo(LoadYuvToNative, true);
2031         default:
2032             UNREACHABLE();
2033             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2034     }
2035 }
2036 
G8_B8_R8_3PLANE_420_UNORM_ANGLE_to_default(GLenum type)2037 LoadImageFunctionInfo G8_B8_R8_3PLANE_420_UNORM_ANGLE_to_default(GLenum type)
2038 {
2039     switch (type)
2040     {
2041         case GL_UNSIGNED_BYTE:
2042             return LoadImageFunctionInfo(UnimplementedLoadFunction, true);
2043         default:
2044             UNREACHABLE();
2045             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2046     }
2047 }
2048 
LUMINANCE_to_R16G16B16A16_FLOAT(GLenum type)2049 LoadImageFunctionInfo LUMINANCE_to_R16G16B16A16_FLOAT(GLenum type)
2050 {
2051     switch (type)
2052     {
2053         case GL_HALF_FLOAT:
2054             return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
2055         case GL_HALF_FLOAT_OES:
2056             return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
2057         case GL_UNSIGNED_BYTE:
2058             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2059         default:
2060             UNREACHABLE();
2061             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2062     }
2063 }
2064 
LUMINANCE_to_R32G32B32A32_FLOAT(GLenum type)2065 LoadImageFunctionInfo LUMINANCE_to_R32G32B32A32_FLOAT(GLenum type)
2066 {
2067     switch (type)
2068     {
2069         case GL_FLOAT:
2070             return LoadImageFunctionInfo(LoadL32FToRGBA32F, true);
2071         case GL_UNSIGNED_BYTE:
2072             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2073         default:
2074             UNREACHABLE();
2075             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2076     }
2077 }
2078 
LUMINANCE_to_default(GLenum type)2079 LoadImageFunctionInfo LUMINANCE_to_default(GLenum type)
2080 {
2081     switch (type)
2082     {
2083         case GL_UNSIGNED_BYTE:
2084             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2085         default:
2086             UNREACHABLE();
2087             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2088     }
2089 }
2090 
LUMINANCE16F_EXT_to_R16_FLOAT(GLenum type)2091 LoadImageFunctionInfo LUMINANCE16F_EXT_to_R16_FLOAT(GLenum type)
2092 {
2093     switch (type)
2094     {
2095         case GL_HALF_FLOAT:
2096             return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
2097         case GL_HALF_FLOAT_OES:
2098             return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
2099         default:
2100             UNREACHABLE();
2101             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2102     }
2103 }
2104 
LUMINANCE16F_EXT_to_default(GLenum type)2105 LoadImageFunctionInfo LUMINANCE16F_EXT_to_default(GLenum type)
2106 {
2107     switch (type)
2108     {
2109         case GL_HALF_FLOAT:
2110             return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
2111         case GL_HALF_FLOAT_OES:
2112             return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
2113         default:
2114             UNREACHABLE();
2115             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2116     }
2117 }
2118 
LUMINANCE32F_EXT_to_R32_FLOAT(GLenum type)2119 LoadImageFunctionInfo LUMINANCE32F_EXT_to_R32_FLOAT(GLenum type)
2120 {
2121     switch (type)
2122     {
2123         case GL_FLOAT:
2124             return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
2125         default:
2126             UNREACHABLE();
2127             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2128     }
2129 }
2130 
LUMINANCE32F_EXT_to_default(GLenum type)2131 LoadImageFunctionInfo LUMINANCE32F_EXT_to_default(GLenum type)
2132 {
2133     switch (type)
2134     {
2135         case GL_FLOAT:
2136             return LoadImageFunctionInfo(LoadL32FToRGBA32F, true);
2137         default:
2138             UNREACHABLE();
2139             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2140     }
2141 }
2142 
LUMINANCE4_ALPHA4_OES_to_B4G4R4A4_UNORM(GLenum type)2143 LoadImageFunctionInfo LUMINANCE4_ALPHA4_OES_to_B4G4R4A4_UNORM(GLenum type)
2144 {
2145     switch (type)
2146     {
2147         case GL_UNSIGNED_BYTE:
2148             return LoadImageFunctionInfo(LoadLA8ToRGBA4, true);
2149         default:
2150             UNREACHABLE();
2151             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2152     }
2153 }
2154 
LUMINANCE4_ALPHA4_OES_to_R8G8B8A8_UNORM(GLenum type)2155 LoadImageFunctionInfo LUMINANCE4_ALPHA4_OES_to_R8G8B8A8_UNORM(GLenum type)
2156 {
2157     switch (type)
2158     {
2159         case GL_UNSIGNED_BYTE:
2160             return LoadImageFunctionInfo(LoadLA8ToRGBA8, true);
2161         default:
2162             UNREACHABLE();
2163             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2164     }
2165 }
2166 
LUMINANCE4_ALPHA4_OES_to_R8G8_UNORM(GLenum type)2167 LoadImageFunctionInfo LUMINANCE4_ALPHA4_OES_to_R8G8_UNORM(GLenum type)
2168 {
2169     switch (type)
2170     {
2171         case GL_UNSIGNED_BYTE:
2172             return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
2173         default:
2174             UNREACHABLE();
2175             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2176     }
2177 }
2178 
LUMINANCE8_ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)2179 LoadImageFunctionInfo LUMINANCE8_ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)
2180 {
2181     switch (type)
2182     {
2183         case GL_UNSIGNED_BYTE:
2184             return LoadImageFunctionInfo(LoadLA8ToRGBA8, true);
2185         default:
2186             UNREACHABLE();
2187             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2188     }
2189 }
2190 
LUMINANCE8_ALPHA8_EXT_to_R8G8_UNORM(GLenum type)2191 LoadImageFunctionInfo LUMINANCE8_ALPHA8_EXT_to_R8G8_UNORM(GLenum type)
2192 {
2193     switch (type)
2194     {
2195         case GL_UNSIGNED_BYTE:
2196             return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
2197         default:
2198             UNREACHABLE();
2199             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2200     }
2201 }
2202 
LUMINANCE8_EXT_to_R8G8B8A8_UNORM(GLenum type)2203 LoadImageFunctionInfo LUMINANCE8_EXT_to_R8G8B8A8_UNORM(GLenum type)
2204 {
2205     switch (type)
2206     {
2207         case GL_UNSIGNED_BYTE:
2208             return LoadImageFunctionInfo(LoadL8ToRGBA8, true);
2209         default:
2210             UNREACHABLE();
2211             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2212     }
2213 }
2214 
LUMINANCE8_EXT_to_R8_UNORM(GLenum type)2215 LoadImageFunctionInfo LUMINANCE8_EXT_to_R8_UNORM(GLenum type)
2216 {
2217     switch (type)
2218     {
2219         case GL_UNSIGNED_BYTE:
2220             return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
2221         default:
2222             UNREACHABLE();
2223             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2224     }
2225 }
2226 
LUMINANCE_ALPHA_to_R16G16B16A16_FLOAT(GLenum type)2227 LoadImageFunctionInfo LUMINANCE_ALPHA_to_R16G16B16A16_FLOAT(GLenum type)
2228 {
2229     switch (type)
2230     {
2231         case GL_HALF_FLOAT:
2232             return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
2233         case GL_HALF_FLOAT_OES:
2234             return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
2235         case GL_UNSIGNED_BYTE:
2236             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2237         default:
2238             UNREACHABLE();
2239             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2240     }
2241 }
2242 
LUMINANCE_ALPHA_to_R32G32B32A32_FLOAT(GLenum type)2243 LoadImageFunctionInfo LUMINANCE_ALPHA_to_R32G32B32A32_FLOAT(GLenum type)
2244 {
2245     switch (type)
2246     {
2247         case GL_FLOAT:
2248             return LoadImageFunctionInfo(LoadLA32FToRGBA32F, true);
2249         case GL_UNSIGNED_BYTE:
2250             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2251         default:
2252             UNREACHABLE();
2253             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2254     }
2255 }
2256 
LUMINANCE_ALPHA_to_default(GLenum type)2257 LoadImageFunctionInfo LUMINANCE_ALPHA_to_default(GLenum type)
2258 {
2259     switch (type)
2260     {
2261         case GL_UNSIGNED_BYTE:
2262             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2263         default:
2264             UNREACHABLE();
2265             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2266     }
2267 }
2268 
LUMINANCE_ALPHA16F_EXT_to_R16G16_FLOAT(GLenum type)2269 LoadImageFunctionInfo LUMINANCE_ALPHA16F_EXT_to_R16G16_FLOAT(GLenum type)
2270 {
2271     switch (type)
2272     {
2273         case GL_HALF_FLOAT:
2274             return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
2275         case GL_HALF_FLOAT_OES:
2276             return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
2277         default:
2278             UNREACHABLE();
2279             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2280     }
2281 }
2282 
LUMINANCE_ALPHA16F_EXT_to_default(GLenum type)2283 LoadImageFunctionInfo LUMINANCE_ALPHA16F_EXT_to_default(GLenum type)
2284 {
2285     switch (type)
2286     {
2287         case GL_HALF_FLOAT:
2288             return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
2289         case GL_HALF_FLOAT_OES:
2290             return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
2291         default:
2292             UNREACHABLE();
2293             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2294     }
2295 }
2296 
LUMINANCE_ALPHA32F_EXT_to_R32G32_FLOAT(GLenum type)2297 LoadImageFunctionInfo LUMINANCE_ALPHA32F_EXT_to_R32G32_FLOAT(GLenum type)
2298 {
2299     switch (type)
2300     {
2301         case GL_FLOAT:
2302             return LoadImageFunctionInfo(LoadToNative<GLfloat, 2>, false);
2303         default:
2304             UNREACHABLE();
2305             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2306     }
2307 }
2308 
LUMINANCE_ALPHA32F_EXT_to_default(GLenum type)2309 LoadImageFunctionInfo LUMINANCE_ALPHA32F_EXT_to_default(GLenum type)
2310 {
2311     switch (type)
2312     {
2313         case GL_FLOAT:
2314             return LoadImageFunctionInfo(LoadLA32FToRGBA32F, true);
2315         default:
2316             UNREACHABLE();
2317             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2318     }
2319 }
2320 
PALETTE4_R5_G6_B5_OES_to_R8G8B8A8_UNORM(GLenum type)2321 LoadImageFunctionInfo PALETTE4_R5_G6_B5_OES_to_R8G8B8A8_UNORM(GLenum type)
2322 {
2323     switch (type)
2324     {
2325         case GL_UNSIGNED_BYTE:
2326             return LoadImageFunctionInfo(LoadPalettedToRGBA8<4, 5, 6, 0>, true);
2327         default:
2328             UNREACHABLE();
2329             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2330     }
2331 }
2332 
PALETTE4_RGB5_A1_OES_to_R8G8B8A8_UNORM(GLenum type)2333 LoadImageFunctionInfo PALETTE4_RGB5_A1_OES_to_R8G8B8A8_UNORM(GLenum type)
2334 {
2335     switch (type)
2336     {
2337         case GL_UNSIGNED_BYTE:
2338             return LoadImageFunctionInfo(LoadPalettedToRGBA8<4, 5, 5, 1>, true);
2339         default:
2340             UNREACHABLE();
2341             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2342     }
2343 }
2344 
PALETTE4_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)2345 LoadImageFunctionInfo PALETTE4_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)
2346 {
2347     switch (type)
2348     {
2349         case GL_UNSIGNED_BYTE:
2350             return LoadImageFunctionInfo(LoadPalettedToRGBA8<4, 8, 8, 0>, true);
2351         default:
2352             UNREACHABLE();
2353             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2354     }
2355 }
2356 
PALETTE4_RGBA4_OES_to_R8G8B8A8_UNORM(GLenum type)2357 LoadImageFunctionInfo PALETTE4_RGBA4_OES_to_R8G8B8A8_UNORM(GLenum type)
2358 {
2359     switch (type)
2360     {
2361         case GL_UNSIGNED_BYTE:
2362             return LoadImageFunctionInfo(LoadPalettedToRGBA8<4, 4, 4, 4>, true);
2363         default:
2364             UNREACHABLE();
2365             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2366     }
2367 }
2368 
PALETTE4_RGBA8_OES_to_R8G8B8A8_UNORM(GLenum type)2369 LoadImageFunctionInfo PALETTE4_RGBA8_OES_to_R8G8B8A8_UNORM(GLenum type)
2370 {
2371     switch (type)
2372     {
2373         case GL_UNSIGNED_BYTE:
2374             return LoadImageFunctionInfo(LoadPalettedToRGBA8<4, 8, 8, 8>, true);
2375         default:
2376             UNREACHABLE();
2377             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2378     }
2379 }
2380 
PALETTE8_R5_G6_B5_OES_to_R8G8B8A8_UNORM(GLenum type)2381 LoadImageFunctionInfo PALETTE8_R5_G6_B5_OES_to_R8G8B8A8_UNORM(GLenum type)
2382 {
2383     switch (type)
2384     {
2385         case GL_UNSIGNED_BYTE:
2386             return LoadImageFunctionInfo(LoadPalettedToRGBA8<8, 5, 6, 0>, true);
2387         default:
2388             UNREACHABLE();
2389             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2390     }
2391 }
2392 
PALETTE8_RGB5_A1_OES_to_R8G8B8A8_UNORM(GLenum type)2393 LoadImageFunctionInfo PALETTE8_RGB5_A1_OES_to_R8G8B8A8_UNORM(GLenum type)
2394 {
2395     switch (type)
2396     {
2397         case GL_UNSIGNED_BYTE:
2398             return LoadImageFunctionInfo(LoadPalettedToRGBA8<8, 5, 5, 1>, true);
2399         default:
2400             UNREACHABLE();
2401             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2402     }
2403 }
2404 
PALETTE8_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)2405 LoadImageFunctionInfo PALETTE8_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)
2406 {
2407     switch (type)
2408     {
2409         case GL_UNSIGNED_BYTE:
2410             return LoadImageFunctionInfo(LoadPalettedToRGBA8<8, 8, 8, 0>, true);
2411         default:
2412             UNREACHABLE();
2413             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2414     }
2415 }
2416 
PALETTE8_RGBA4_OES_to_R8G8B8A8_UNORM(GLenum type)2417 LoadImageFunctionInfo PALETTE8_RGBA4_OES_to_R8G8B8A8_UNORM(GLenum type)
2418 {
2419     switch (type)
2420     {
2421         case GL_UNSIGNED_BYTE:
2422             return LoadImageFunctionInfo(LoadPalettedToRGBA8<8, 4, 4, 4>, true);
2423         default:
2424             UNREACHABLE();
2425             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2426     }
2427 }
2428 
PALETTE8_RGBA8_OES_to_R8G8B8A8_UNORM(GLenum type)2429 LoadImageFunctionInfo PALETTE8_RGBA8_OES_to_R8G8B8A8_UNORM(GLenum type)
2430 {
2431     switch (type)
2432     {
2433         case GL_UNSIGNED_BYTE:
2434             return LoadImageFunctionInfo(LoadPalettedToRGBA8<8, 8, 8, 8>, true);
2435         default:
2436             UNREACHABLE();
2437             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2438     }
2439 }
2440 
R11F_G11F_B10F_to_R11G11B10_FLOAT(GLenum type)2441 LoadImageFunctionInfo R11F_G11F_B10F_to_R11G11B10_FLOAT(GLenum type)
2442 {
2443     switch (type)
2444     {
2445         case GL_FLOAT:
2446             return LoadImageFunctionInfo(LoadRGB32FToRG11B10F, true);
2447         case GL_HALF_FLOAT:
2448             return LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true);
2449         case GL_HALF_FLOAT_OES:
2450             return LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true);
2451         case GL_UNSIGNED_INT_10F_11F_11F_REV:
2452             return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2453         default:
2454             UNREACHABLE();
2455             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2456     }
2457 }
2458 
R16F_to_R16_FLOAT(GLenum type)2459 LoadImageFunctionInfo R16F_to_R16_FLOAT(GLenum type)
2460 {
2461     switch (type)
2462     {
2463         case GL_FLOAT:
2464             return LoadImageFunctionInfo(Load32FTo16F<1>, true);
2465         case GL_HALF_FLOAT:
2466             return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
2467         case GL_HALF_FLOAT_OES:
2468             return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
2469         default:
2470             UNREACHABLE();
2471             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2472     }
2473 }
2474 
R16I_to_R16_SINT(GLenum type)2475 LoadImageFunctionInfo R16I_to_R16_SINT(GLenum type)
2476 {
2477     switch (type)
2478     {
2479         case GL_SHORT:
2480             return LoadImageFunctionInfo(LoadToNative<GLshort, 1>, false);
2481         default:
2482             UNREACHABLE();
2483             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2484     }
2485 }
2486 
R16UI_to_R16_UINT(GLenum type)2487 LoadImageFunctionInfo R16UI_to_R16_UINT(GLenum type)
2488 {
2489     switch (type)
2490     {
2491         case GL_UNSIGNED_SHORT:
2492             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
2493         default:
2494             UNREACHABLE();
2495             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2496     }
2497 }
2498 
R16_EXT_to_R16_UNORM(GLenum type)2499 LoadImageFunctionInfo R16_EXT_to_R16_UNORM(GLenum type)
2500 {
2501     switch (type)
2502     {
2503         case GL_UNSIGNED_SHORT:
2504             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
2505         default:
2506             UNREACHABLE();
2507             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2508     }
2509 }
2510 
R16_SNORM_EXT_to_R16_SNORM(GLenum type)2511 LoadImageFunctionInfo R16_SNORM_EXT_to_R16_SNORM(GLenum type)
2512 {
2513     switch (type)
2514     {
2515         case GL_SHORT:
2516             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
2517         default:
2518             UNREACHABLE();
2519             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2520     }
2521 }
2522 
R16_SSCALED_ANGLEX_to_default(GLenum type)2523 LoadImageFunctionInfo R16_SSCALED_ANGLEX_to_default(GLenum type)
2524 {
2525     switch (type)
2526     {
2527         case GL_UNSIGNED_BYTE:
2528             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2529         default:
2530             UNREACHABLE();
2531             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2532     }
2533 }
2534 
R16_USCALED_ANGLEX_to_default(GLenum type)2535 LoadImageFunctionInfo R16_USCALED_ANGLEX_to_default(GLenum type)
2536 {
2537     switch (type)
2538     {
2539         case GL_UNSIGNED_BYTE:
2540             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2541         default:
2542             UNREACHABLE();
2543             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2544     }
2545 }
2546 
R32F_to_R32_FLOAT(GLenum type)2547 LoadImageFunctionInfo R32F_to_R32_FLOAT(GLenum type)
2548 {
2549     switch (type)
2550     {
2551         case GL_FLOAT:
2552             return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
2553         default:
2554             UNREACHABLE();
2555             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2556     }
2557 }
2558 
R32I_to_R32_SINT(GLenum type)2559 LoadImageFunctionInfo R32I_to_R32_SINT(GLenum type)
2560 {
2561     switch (type)
2562     {
2563         case GL_INT:
2564             return LoadImageFunctionInfo(LoadToNative<GLint, 1>, false);
2565         default:
2566             UNREACHABLE();
2567             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2568     }
2569 }
2570 
R32UI_to_R32_UINT(GLenum type)2571 LoadImageFunctionInfo R32UI_to_R32_UINT(GLenum type)
2572 {
2573     switch (type)
2574     {
2575         case GL_UNSIGNED_INT:
2576             return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2577         default:
2578             UNREACHABLE();
2579             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2580     }
2581 }
2582 
R8_to_R8_UNORM(GLenum type)2583 LoadImageFunctionInfo R8_to_R8_UNORM(GLenum type)
2584 {
2585     switch (type)
2586     {
2587         case GL_UNSIGNED_BYTE:
2588             return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
2589         default:
2590             UNREACHABLE();
2591             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2592     }
2593 }
2594 
R8I_to_R8_SINT(GLenum type)2595 LoadImageFunctionInfo R8I_to_R8_SINT(GLenum type)
2596 {
2597     switch (type)
2598     {
2599         case GL_BYTE:
2600             return LoadImageFunctionInfo(LoadToNative<GLbyte, 1>, false);
2601         default:
2602             UNREACHABLE();
2603             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2604     }
2605 }
2606 
R8UI_to_R8_UINT(GLenum type)2607 LoadImageFunctionInfo R8UI_to_R8_UINT(GLenum type)
2608 {
2609     switch (type)
2610     {
2611         case GL_UNSIGNED_BYTE:
2612             return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
2613         default:
2614             UNREACHABLE();
2615             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2616     }
2617 }
2618 
R8_SNORM_to_R8_SNORM(GLenum type)2619 LoadImageFunctionInfo R8_SNORM_to_R8_SNORM(GLenum type)
2620 {
2621     switch (type)
2622     {
2623         case GL_BYTE:
2624             return LoadImageFunctionInfo(LoadToNative<GLbyte, 1>, false);
2625         default:
2626             UNREACHABLE();
2627             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2628     }
2629 }
2630 
R8_SSCALED_ANGLEX_to_default(GLenum type)2631 LoadImageFunctionInfo R8_SSCALED_ANGLEX_to_default(GLenum type)
2632 {
2633     switch (type)
2634     {
2635         case GL_UNSIGNED_BYTE:
2636             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2637         default:
2638             UNREACHABLE();
2639             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2640     }
2641 }
2642 
R8_USCALED_ANGLEX_to_default(GLenum type)2643 LoadImageFunctionInfo R8_USCALED_ANGLEX_to_default(GLenum type)
2644 {
2645     switch (type)
2646     {
2647         case GL_UNSIGNED_BYTE:
2648             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2649         default:
2650             UNREACHABLE();
2651             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2652     }
2653 }
2654 
RG16F_to_R16G16_FLOAT(GLenum type)2655 LoadImageFunctionInfo RG16F_to_R16G16_FLOAT(GLenum type)
2656 {
2657     switch (type)
2658     {
2659         case GL_FLOAT:
2660             return LoadImageFunctionInfo(Load32FTo16F<2>, true);
2661         case GL_HALF_FLOAT:
2662             return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
2663         case GL_HALF_FLOAT_OES:
2664             return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
2665         default:
2666             UNREACHABLE();
2667             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2668     }
2669 }
2670 
RG16I_to_R16G16_SINT(GLenum type)2671 LoadImageFunctionInfo RG16I_to_R16G16_SINT(GLenum type)
2672 {
2673     switch (type)
2674     {
2675         case GL_SHORT:
2676             return LoadImageFunctionInfo(LoadToNative<GLshort, 2>, false);
2677         default:
2678             UNREACHABLE();
2679             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2680     }
2681 }
2682 
RG16UI_to_R16G16_UINT(GLenum type)2683 LoadImageFunctionInfo RG16UI_to_R16G16_UINT(GLenum type)
2684 {
2685     switch (type)
2686     {
2687         case GL_UNSIGNED_SHORT:
2688             return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
2689         default:
2690             UNREACHABLE();
2691             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2692     }
2693 }
2694 
RG16_EXT_to_R16G16_UNORM(GLenum type)2695 LoadImageFunctionInfo RG16_EXT_to_R16G16_UNORM(GLenum type)
2696 {
2697     switch (type)
2698     {
2699         case GL_UNSIGNED_SHORT:
2700             return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
2701         default:
2702             UNREACHABLE();
2703             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2704     }
2705 }
2706 
RG16_SNORM_EXT_to_R16G16_SNORM(GLenum type)2707 LoadImageFunctionInfo RG16_SNORM_EXT_to_R16G16_SNORM(GLenum type)
2708 {
2709     switch (type)
2710     {
2711         case GL_SHORT:
2712             return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
2713         default:
2714             UNREACHABLE();
2715             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2716     }
2717 }
2718 
RG16_SSCALED_ANGLEX_to_default(GLenum type)2719 LoadImageFunctionInfo RG16_SSCALED_ANGLEX_to_default(GLenum type)
2720 {
2721     switch (type)
2722     {
2723         case GL_UNSIGNED_BYTE:
2724             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2725         default:
2726             UNREACHABLE();
2727             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2728     }
2729 }
2730 
RG16_USCALED_ANGLEX_to_default(GLenum type)2731 LoadImageFunctionInfo RG16_USCALED_ANGLEX_to_default(GLenum type)
2732 {
2733     switch (type)
2734     {
2735         case GL_UNSIGNED_BYTE:
2736             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2737         default:
2738             UNREACHABLE();
2739             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2740     }
2741 }
2742 
RG32F_to_R32G32_FLOAT(GLenum type)2743 LoadImageFunctionInfo RG32F_to_R32G32_FLOAT(GLenum type)
2744 {
2745     switch (type)
2746     {
2747         case GL_FLOAT:
2748             return LoadImageFunctionInfo(LoadToNative<GLfloat, 2>, false);
2749         default:
2750             UNREACHABLE();
2751             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2752     }
2753 }
2754 
RG32I_to_R32G32_SINT(GLenum type)2755 LoadImageFunctionInfo RG32I_to_R32G32_SINT(GLenum type)
2756 {
2757     switch (type)
2758     {
2759         case GL_INT:
2760             return LoadImageFunctionInfo(LoadToNative<GLint, 2>, false);
2761         default:
2762             UNREACHABLE();
2763             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2764     }
2765 }
2766 
RG32UI_to_R32G32_UINT(GLenum type)2767 LoadImageFunctionInfo RG32UI_to_R32G32_UINT(GLenum type)
2768 {
2769     switch (type)
2770     {
2771         case GL_UNSIGNED_INT:
2772             return LoadImageFunctionInfo(LoadToNative<GLuint, 2>, false);
2773         default:
2774             UNREACHABLE();
2775             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2776     }
2777 }
2778 
RG8_to_R8G8_UNORM(GLenum type)2779 LoadImageFunctionInfo RG8_to_R8G8_UNORM(GLenum type)
2780 {
2781     switch (type)
2782     {
2783         case GL_UNSIGNED_BYTE:
2784             return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
2785         default:
2786             UNREACHABLE();
2787             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2788     }
2789 }
2790 
RG8I_to_R8G8_SINT(GLenum type)2791 LoadImageFunctionInfo RG8I_to_R8G8_SINT(GLenum type)
2792 {
2793     switch (type)
2794     {
2795         case GL_BYTE:
2796             return LoadImageFunctionInfo(LoadToNative<GLbyte, 2>, false);
2797         default:
2798             UNREACHABLE();
2799             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2800     }
2801 }
2802 
RG8UI_to_R8G8_UINT(GLenum type)2803 LoadImageFunctionInfo RG8UI_to_R8G8_UINT(GLenum type)
2804 {
2805     switch (type)
2806     {
2807         case GL_UNSIGNED_BYTE:
2808             return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
2809         default:
2810             UNREACHABLE();
2811             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2812     }
2813 }
2814 
RG8_SNORM_to_R8G8_SNORM(GLenum type)2815 LoadImageFunctionInfo RG8_SNORM_to_R8G8_SNORM(GLenum type)
2816 {
2817     switch (type)
2818     {
2819         case GL_BYTE:
2820             return LoadImageFunctionInfo(LoadToNative<GLbyte, 2>, false);
2821         default:
2822             UNREACHABLE();
2823             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2824     }
2825 }
2826 
RG8_SSCALED_ANGLEX_to_default(GLenum type)2827 LoadImageFunctionInfo RG8_SSCALED_ANGLEX_to_default(GLenum type)
2828 {
2829     switch (type)
2830     {
2831         case GL_UNSIGNED_BYTE:
2832             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2833         default:
2834             UNREACHABLE();
2835             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2836     }
2837 }
2838 
RG8_USCALED_ANGLEX_to_default(GLenum type)2839 LoadImageFunctionInfo RG8_USCALED_ANGLEX_to_default(GLenum type)
2840 {
2841     switch (type)
2842     {
2843         case GL_UNSIGNED_BYTE:
2844             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2845         default:
2846             UNREACHABLE();
2847             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2848     }
2849 }
2850 
RGB_to_default(GLenum type)2851 LoadImageFunctionInfo RGB_to_default(GLenum type)
2852 {
2853     switch (type)
2854     {
2855         case GL_UNSIGNED_BYTE:
2856             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2857         case GL_UNSIGNED_SHORT_5_6_5:
2858             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2859         default:
2860             UNREACHABLE();
2861             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2862     }
2863 }
2864 
RGB10_A2_to_R10G10B10A2_UNORM(GLenum type)2865 LoadImageFunctionInfo RGB10_A2_to_R10G10B10A2_UNORM(GLenum type)
2866 {
2867     switch (type)
2868     {
2869         case GL_UNSIGNED_INT_2_10_10_10_REV:
2870             return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2871         default:
2872             UNREACHABLE();
2873             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2874     }
2875 }
2876 
RGB10_A2UI_to_R10G10B10A2_UINT(GLenum type)2877 LoadImageFunctionInfo RGB10_A2UI_to_R10G10B10A2_UINT(GLenum type)
2878 {
2879     switch (type)
2880     {
2881         case GL_UNSIGNED_INT_2_10_10_10_REV:
2882             return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2883         default:
2884             UNREACHABLE();
2885             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2886     }
2887 }
2888 
RGB10_A2_SINT_ANGLEX_to_R10G10B10A2_SINT(GLenum type)2889 LoadImageFunctionInfo RGB10_A2_SINT_ANGLEX_to_R10G10B10A2_SINT(GLenum type)
2890 {
2891     switch (type)
2892     {
2893         case GL_UNSIGNED_BYTE:
2894             return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
2895         case GL_UNSIGNED_INT_2_10_10_10_REV:
2896             return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2897         default:
2898             UNREACHABLE();
2899             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2900     }
2901 }
2902 
RGB10_A2_SNORM_ANGLEX_to_R10G10B10A2_SNORM(GLenum type)2903 LoadImageFunctionInfo RGB10_A2_SNORM_ANGLEX_to_R10G10B10A2_SNORM(GLenum type)
2904 {
2905     switch (type)
2906     {
2907         case GL_UNSIGNED_BYTE:
2908             return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
2909         case GL_UNSIGNED_INT_2_10_10_10_REV:
2910             return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
2911         default:
2912             UNREACHABLE();
2913             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2914     }
2915 }
2916 
RGB10_A2_SSCALED_ANGLEX_to_default(GLenum type)2917 LoadImageFunctionInfo RGB10_A2_SSCALED_ANGLEX_to_default(GLenum type)
2918 {
2919     switch (type)
2920     {
2921         case GL_UNSIGNED_BYTE:
2922             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2923         default:
2924             UNREACHABLE();
2925             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2926     }
2927 }
2928 
RGB10_A2_USCALED_ANGLEX_to_default(GLenum type)2929 LoadImageFunctionInfo RGB10_A2_USCALED_ANGLEX_to_default(GLenum type)
2930 {
2931     switch (type)
2932     {
2933         case GL_UNSIGNED_BYTE:
2934             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2935         default:
2936             UNREACHABLE();
2937             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2938     }
2939 }
2940 
RGB10_EXT_to_R10G10B10A2_UNORM(GLenum type)2941 LoadImageFunctionInfo RGB10_EXT_to_R10G10B10A2_UNORM(GLenum type)
2942 {
2943     switch (type)
2944     {
2945         case GL_UNSIGNED_INT_2_10_10_10_REV:
2946             return LoadImageFunctionInfo(LoadRGB10A2ToRGB10X2, true);
2947         default:
2948             UNREACHABLE();
2949             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2950     }
2951 }
2952 
RGB10_EXT_to_R10G10B10X2_UNORM(GLenum type)2953 LoadImageFunctionInfo RGB10_EXT_to_R10G10B10X2_UNORM(GLenum type)
2954 {
2955     switch (type)
2956     {
2957         case GL_UNSIGNED_INT_2_10_10_10_REV:
2958             return LoadImageFunctionInfo(LoadRGB10A2ToRGB10X2, true);
2959         default:
2960             UNREACHABLE();
2961             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2962     }
2963 }
2964 
RGB16F_to_R16G16B16A16_FLOAT(GLenum type)2965 LoadImageFunctionInfo RGB16F_to_R16G16B16A16_FLOAT(GLenum type)
2966 {
2967     switch (type)
2968     {
2969         case GL_FLOAT:
2970             return LoadImageFunctionInfo(LoadRGB32FToRGBA16F, true);
2971         case GL_HALF_FLOAT:
2972             return LoadImageFunctionInfo(LoadToNative3To4<GLhalf, gl::Float16One>, true);
2973         case GL_HALF_FLOAT_OES:
2974             return LoadImageFunctionInfo(LoadToNative3To4<GLhalf, gl::Float16One>, true);
2975         default:
2976             UNREACHABLE();
2977             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2978     }
2979 }
2980 
RGB16F_to_R16G16B16_FLOAT(GLenum type)2981 LoadImageFunctionInfo RGB16F_to_R16G16B16_FLOAT(GLenum type)
2982 {
2983     switch (type)
2984     {
2985         case GL_FLOAT:
2986             return LoadImageFunctionInfo(LoadRGB32FToRGB16F, true);
2987         case GL_HALF_FLOAT:
2988             return LoadImageFunctionInfo(LoadToNative<GLhalf, 3>, false);
2989         case GL_HALF_FLOAT_OES:
2990             return LoadImageFunctionInfo(LoadToNative<GLhalf, 3>, false);
2991         default:
2992             UNREACHABLE();
2993             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
2994     }
2995 }
2996 
RGB16I_to_R16G16B16A16_SINT(GLenum type)2997 LoadImageFunctionInfo RGB16I_to_R16G16B16A16_SINT(GLenum type)
2998 {
2999     switch (type)
3000     {
3001         case GL_SHORT:
3002             return LoadImageFunctionInfo(LoadToNative3To4<GLshort, 0x0001>, true);
3003         default:
3004             UNREACHABLE();
3005             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3006     }
3007 }
3008 
RGB16I_to_R16G16B16_SINT(GLenum type)3009 LoadImageFunctionInfo RGB16I_to_R16G16B16_SINT(GLenum type)
3010 {
3011     switch (type)
3012     {
3013         case GL_SHORT:
3014             return LoadImageFunctionInfo(LoadToNative<GLshort, 3>, false);
3015         default:
3016             UNREACHABLE();
3017             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3018     }
3019 }
3020 
RGB16UI_to_R16G16B16A16_UINT(GLenum type)3021 LoadImageFunctionInfo RGB16UI_to_R16G16B16A16_UINT(GLenum type)
3022 {
3023     switch (type)
3024     {
3025         case GL_UNSIGNED_SHORT:
3026             return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0x0001>, true);
3027         default:
3028             UNREACHABLE();
3029             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3030     }
3031 }
3032 
RGB16UI_to_R16G16B16_UINT(GLenum type)3033 LoadImageFunctionInfo RGB16UI_to_R16G16B16_UINT(GLenum type)
3034 {
3035     switch (type)
3036     {
3037         case GL_UNSIGNED_SHORT:
3038             return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
3039         default:
3040             UNREACHABLE();
3041             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3042     }
3043 }
3044 
RGB16_EXT_to_R16G16B16A16_UNORM(GLenum type)3045 LoadImageFunctionInfo RGB16_EXT_to_R16G16B16A16_UNORM(GLenum type)
3046 {
3047     switch (type)
3048     {
3049         case GL_UNSIGNED_SHORT:
3050             return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0xFFFF>, true);
3051         default:
3052             UNREACHABLE();
3053             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3054     }
3055 }
3056 
RGB16_EXT_to_R16G16B16_UNORM(GLenum type)3057 LoadImageFunctionInfo RGB16_EXT_to_R16G16B16_UNORM(GLenum type)
3058 {
3059     switch (type)
3060     {
3061         case GL_UNSIGNED_SHORT:
3062             return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
3063         default:
3064             UNREACHABLE();
3065             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3066     }
3067 }
3068 
RGB16_EXT_to_R32G32B32A32_FLOAT(GLenum type)3069 LoadImageFunctionInfo RGB16_EXT_to_R32G32B32A32_FLOAT(GLenum type)
3070 {
3071     switch (type)
3072     {
3073         case GL_UNSIGNED_SHORT:
3074             return LoadImageFunctionInfo(LoadToFloat<GLushort, 3, 4, true>, true);
3075         default:
3076             UNREACHABLE();
3077             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3078     }
3079 }
3080 
RGB16_EXT_to_R32G32B32_FLOAT(GLenum type)3081 LoadImageFunctionInfo RGB16_EXT_to_R32G32B32_FLOAT(GLenum type)
3082 {
3083     switch (type)
3084     {
3085         case GL_UNSIGNED_SHORT:
3086             return LoadImageFunctionInfo(LoadToFloat<GLushort, 3, 3, true>, true);
3087         default:
3088             UNREACHABLE();
3089             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3090     }
3091 }
3092 
RGB16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)3093 LoadImageFunctionInfo RGB16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)
3094 {
3095     switch (type)
3096     {
3097         case GL_SHORT:
3098             return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0x7FFF>, true);
3099         default:
3100             UNREACHABLE();
3101             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3102     }
3103 }
3104 
RGB16_SNORM_EXT_to_R16G16B16_SNORM(GLenum type)3105 LoadImageFunctionInfo RGB16_SNORM_EXT_to_R16G16B16_SNORM(GLenum type)
3106 {
3107     switch (type)
3108     {
3109         case GL_SHORT:
3110             return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
3111         default:
3112             UNREACHABLE();
3113             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3114     }
3115 }
3116 
RGB16_SNORM_EXT_to_R32G32B32A32_FLOAT(GLenum type)3117 LoadImageFunctionInfo RGB16_SNORM_EXT_to_R32G32B32A32_FLOAT(GLenum type)
3118 {
3119     switch (type)
3120     {
3121         case GL_SHORT:
3122             return LoadImageFunctionInfo(LoadToFloat<GLshort, 3, 4, true>, true);
3123         default:
3124             UNREACHABLE();
3125             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3126     }
3127 }
3128 
RGB16_SNORM_EXT_to_R32G32B32_FLOAT(GLenum type)3129 LoadImageFunctionInfo RGB16_SNORM_EXT_to_R32G32B32_FLOAT(GLenum type)
3130 {
3131     switch (type)
3132     {
3133         case GL_SHORT:
3134             return LoadImageFunctionInfo(LoadToFloat<GLshort, 3, 3, true>, true);
3135         default:
3136             UNREACHABLE();
3137             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3138     }
3139 }
3140 
RGB16_SSCALED_ANGLEX_to_default(GLenum type)3141 LoadImageFunctionInfo RGB16_SSCALED_ANGLEX_to_default(GLenum type)
3142 {
3143     switch (type)
3144     {
3145         case GL_UNSIGNED_BYTE:
3146             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3147         default:
3148             UNREACHABLE();
3149             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3150     }
3151 }
3152 
RGB16_USCALED_ANGLEX_to_default(GLenum type)3153 LoadImageFunctionInfo RGB16_USCALED_ANGLEX_to_default(GLenum type)
3154 {
3155     switch (type)
3156     {
3157         case GL_UNSIGNED_BYTE:
3158             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3159         default:
3160             UNREACHABLE();
3161             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3162     }
3163 }
3164 
RGB32F_to_R32G32B32A32_FLOAT(GLenum type)3165 LoadImageFunctionInfo RGB32F_to_R32G32B32A32_FLOAT(GLenum type)
3166 {
3167     switch (type)
3168     {
3169         case GL_FLOAT:
3170             return LoadImageFunctionInfo(LoadToNative3To4<GLfloat, gl::Float32One>, true);
3171         default:
3172             UNREACHABLE();
3173             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3174     }
3175 }
3176 
RGB32F_to_R32G32B32_FLOAT(GLenum type)3177 LoadImageFunctionInfo RGB32F_to_R32G32B32_FLOAT(GLenum type)
3178 {
3179     switch (type)
3180     {
3181         case GL_FLOAT:
3182             return LoadImageFunctionInfo(LoadToNative<GLfloat, 3>, false);
3183         default:
3184             UNREACHABLE();
3185             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3186     }
3187 }
3188 
RGB32I_to_R32G32B32A32_SINT(GLenum type)3189 LoadImageFunctionInfo RGB32I_to_R32G32B32A32_SINT(GLenum type)
3190 {
3191     switch (type)
3192     {
3193         case GL_INT:
3194             return LoadImageFunctionInfo(LoadToNative3To4<GLint, 0x00000001>, true);
3195         default:
3196             UNREACHABLE();
3197             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3198     }
3199 }
3200 
RGB32I_to_R32G32B32_SINT(GLenum type)3201 LoadImageFunctionInfo RGB32I_to_R32G32B32_SINT(GLenum type)
3202 {
3203     switch (type)
3204     {
3205         case GL_INT:
3206             return LoadImageFunctionInfo(LoadToNative<GLint, 3>, false);
3207         default:
3208             UNREACHABLE();
3209             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3210     }
3211 }
3212 
RGB32UI_to_R32G32B32A32_UINT(GLenum type)3213 LoadImageFunctionInfo RGB32UI_to_R32G32B32A32_UINT(GLenum type)
3214 {
3215     switch (type)
3216     {
3217         case GL_UNSIGNED_INT:
3218             return LoadImageFunctionInfo(LoadToNative3To4<GLuint, 0x00000001>, true);
3219         default:
3220             UNREACHABLE();
3221             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3222     }
3223 }
3224 
RGB32UI_to_R32G32B32_UINT(GLenum type)3225 LoadImageFunctionInfo RGB32UI_to_R32G32B32_UINT(GLenum type)
3226 {
3227     switch (type)
3228     {
3229         case GL_UNSIGNED_INT:
3230             return LoadImageFunctionInfo(LoadToNative<GLuint, 3>, false);
3231         default:
3232             UNREACHABLE();
3233             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3234     }
3235 }
3236 
RGB565_to_B5G6R5_UNORM(GLenum type)3237 LoadImageFunctionInfo RGB565_to_B5G6R5_UNORM(GLenum type)
3238 {
3239     switch (type)
3240     {
3241         case GL_UNSIGNED_BYTE:
3242             return LoadImageFunctionInfo(LoadRGB8ToBGR565, true);
3243         case GL_UNSIGNED_SHORT_5_6_5:
3244             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
3245         default:
3246             UNREACHABLE();
3247             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3248     }
3249 }
3250 
RGB565_to_R5G6B5_UNORM(GLenum type)3251 LoadImageFunctionInfo RGB565_to_R5G6B5_UNORM(GLenum type)
3252 {
3253     switch (type)
3254     {
3255         case GL_UNSIGNED_BYTE:
3256             return LoadImageFunctionInfo(LoadRGB8ToBGR565, true);
3257         case GL_UNSIGNED_INT_2_10_10_10_REV_EXT:
3258             return LoadImageFunctionInfo(LoadRGB10A2ToRGB565, true);
3259         case GL_UNSIGNED_SHORT_5_6_5:
3260             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
3261         default:
3262             UNREACHABLE();
3263             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3264     }
3265 }
3266 
RGB565_to_R8G8B8A8_UNORM(GLenum type)3267 LoadImageFunctionInfo RGB565_to_R8G8B8A8_UNORM(GLenum type)
3268 {
3269     switch (type)
3270     {
3271         case GL_UNSIGNED_BYTE:
3272             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
3273         case GL_UNSIGNED_SHORT_5_6_5:
3274             return LoadImageFunctionInfo(LoadR5G6B5ToRGBA8, true);
3275         default:
3276             UNREACHABLE();
3277             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3278     }
3279 }
3280 
RGB5_A1_to_A1R5G5B5_UNORM(GLenum type)3281 LoadImageFunctionInfo RGB5_A1_to_A1R5G5B5_UNORM(GLenum type)
3282 {
3283     switch (type)
3284     {
3285         case GL_UNSIGNED_BYTE:
3286             return LoadImageFunctionInfo(LoadRGBA8ToBGR5A1, true);
3287         case GL_UNSIGNED_INT_2_10_10_10_REV:
3288             return LoadImageFunctionInfo(LoadRGB10A2ToBGR5A1, true);
3289         case GL_UNSIGNED_SHORT_5_5_5_1:
3290             return LoadImageFunctionInfo(LoadRGB5A1ToA1RGB5, true);
3291         default:
3292             UNREACHABLE();
3293             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3294     }
3295 }
3296 
RGB5_A1_to_B5G5R5A1_UNORM(GLenum type)3297 LoadImageFunctionInfo RGB5_A1_to_B5G5R5A1_UNORM(GLenum type)
3298 {
3299     switch (type)
3300     {
3301         case GL_UNSIGNED_BYTE:
3302             return LoadImageFunctionInfo(LoadRGBA8ToBGR5A1, true);
3303         case GL_UNSIGNED_INT_2_10_10_10_REV:
3304             return LoadImageFunctionInfo(LoadRGB10A2ToBGR5A1, true);
3305         case GL_UNSIGNED_SHORT_5_5_5_1:
3306             return LoadImageFunctionInfo(LoadRGB5A1ToA1RGB5, true);
3307         default:
3308             UNREACHABLE();
3309             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3310     }
3311 }
3312 
RGB5_A1_to_R5G5B5A1_UNORM(GLenum type)3313 LoadImageFunctionInfo RGB5_A1_to_R5G5B5A1_UNORM(GLenum type)
3314 {
3315     switch (type)
3316     {
3317         case GL_UNSIGNED_BYTE:
3318             return LoadImageFunctionInfo(LoadRGBA8ToRGB5A1, true);
3319         case GL_UNSIGNED_INT_2_10_10_10_REV:
3320             return LoadImageFunctionInfo(LoadRGB10A2ToRGB5A1, true);
3321         case GL_UNSIGNED_SHORT_5_5_5_1:
3322             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
3323         default:
3324             UNREACHABLE();
3325             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3326     }
3327 }
3328 
RGB5_A1_to_R8G8B8A8_UNORM(GLenum type)3329 LoadImageFunctionInfo RGB5_A1_to_R8G8B8A8_UNORM(GLenum type)
3330 {
3331     switch (type)
3332     {
3333         case GL_UNSIGNED_BYTE:
3334             return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
3335         case GL_UNSIGNED_INT_2_10_10_10_REV:
3336             return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
3337         case GL_UNSIGNED_SHORT_5_5_5_1:
3338             return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true);
3339         default:
3340             UNREACHABLE();
3341             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3342     }
3343 }
3344 
RGB8_to_R8G8B8A8_UNORM(GLenum type)3345 LoadImageFunctionInfo RGB8_to_R8G8B8A8_UNORM(GLenum type)
3346 {
3347     switch (type)
3348     {
3349         case GL_UNSIGNED_BYTE:
3350             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
3351         case GL_UNSIGNED_INT_2_10_10_10_REV:
3352             return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
3353         default:
3354             UNREACHABLE();
3355             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3356     }
3357 }
3358 
RGB8_to_R8G8B8_UNORM(GLenum type)3359 LoadImageFunctionInfo RGB8_to_R8G8B8_UNORM(GLenum type)
3360 {
3361     switch (type)
3362     {
3363         case GL_UNSIGNED_BYTE:
3364             return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
3365         case GL_UNSIGNED_INT_2_10_10_10_REV:
3366             return LoadImageFunctionInfo(LoadRGB10A2ToRGB8, true);
3367         default:
3368             UNREACHABLE();
3369             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3370     }
3371 }
3372 
RGB8I_to_R8G8B8A8_SINT(GLenum type)3373 LoadImageFunctionInfo RGB8I_to_R8G8B8A8_SINT(GLenum type)
3374 {
3375     switch (type)
3376     {
3377         case GL_BYTE:
3378             return LoadImageFunctionInfo(LoadToNative3To4<GLbyte, 0x01>, true);
3379         default:
3380             UNREACHABLE();
3381             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3382     }
3383 }
3384 
RGB8I_to_R8G8B8_SINT(GLenum type)3385 LoadImageFunctionInfo RGB8I_to_R8G8B8_SINT(GLenum type)
3386 {
3387     switch (type)
3388     {
3389         case GL_BYTE:
3390             return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
3391         default:
3392             UNREACHABLE();
3393             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3394     }
3395 }
3396 
RGB8UI_to_R8G8B8A8_UINT(GLenum type)3397 LoadImageFunctionInfo RGB8UI_to_R8G8B8A8_UINT(GLenum type)
3398 {
3399     switch (type)
3400     {
3401         case GL_UNSIGNED_BYTE:
3402             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0x01>, true);
3403         default:
3404             UNREACHABLE();
3405             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3406     }
3407 }
3408 
RGB8UI_to_R8G8B8_UINT(GLenum type)3409 LoadImageFunctionInfo RGB8UI_to_R8G8B8_UINT(GLenum type)
3410 {
3411     switch (type)
3412     {
3413         case GL_UNSIGNED_BYTE:
3414             return LoadImageFunctionInfo(LoadToNative<GLubyte, 3>, false);
3415         default:
3416             UNREACHABLE();
3417             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3418     }
3419 }
3420 
RGB8_SNORM_to_R8G8B8A8_SNORM(GLenum type)3421 LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8A8_SNORM(GLenum type)
3422 {
3423     switch (type)
3424     {
3425         case GL_BYTE:
3426             return LoadImageFunctionInfo(LoadToNative3To4<GLbyte, 0x7F>, true);
3427         default:
3428             UNREACHABLE();
3429             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3430     }
3431 }
3432 
RGB8_SNORM_to_R8G8B8_SNORM(GLenum type)3433 LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8_SNORM(GLenum type)
3434 {
3435     switch (type)
3436     {
3437         case GL_BYTE:
3438             return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
3439         default:
3440             UNREACHABLE();
3441             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3442     }
3443 }
3444 
RGB8_SSCALED_ANGLEX_to_default(GLenum type)3445 LoadImageFunctionInfo RGB8_SSCALED_ANGLEX_to_default(GLenum type)
3446 {
3447     switch (type)
3448     {
3449         case GL_UNSIGNED_BYTE:
3450             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3451         default:
3452             UNREACHABLE();
3453             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3454     }
3455 }
3456 
RGB8_USCALED_ANGLEX_to_default(GLenum type)3457 LoadImageFunctionInfo RGB8_USCALED_ANGLEX_to_default(GLenum type)
3458 {
3459     switch (type)
3460     {
3461         case GL_UNSIGNED_BYTE:
3462             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3463         default:
3464             UNREACHABLE();
3465             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3466     }
3467 }
3468 
RGB9_E5_to_R9G9B9E5_SHAREDEXP(GLenum type)3469 LoadImageFunctionInfo RGB9_E5_to_R9G9B9E5_SHAREDEXP(GLenum type)
3470 {
3471     switch (type)
3472     {
3473         case GL_FLOAT:
3474             return LoadImageFunctionInfo(LoadRGB32FToRGB9E5, true);
3475         case GL_HALF_FLOAT:
3476             return LoadImageFunctionInfo(LoadRGB16FToRGB9E5, true);
3477         case GL_HALF_FLOAT_OES:
3478             return LoadImageFunctionInfo(LoadRGB16FToRGB9E5, true);
3479         case GL_UNSIGNED_INT_5_9_9_9_REV:
3480             return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
3481         default:
3482             UNREACHABLE();
3483             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3484     }
3485 }
3486 
RGBA_to_default(GLenum type)3487 LoadImageFunctionInfo RGBA_to_default(GLenum type)
3488 {
3489     switch (type)
3490     {
3491         case GL_UNSIGNED_BYTE:
3492             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3493         case GL_UNSIGNED_SHORT_4_4_4_4:
3494             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3495         case GL_UNSIGNED_SHORT_5_5_5_1:
3496             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3497         default:
3498             UNREACHABLE();
3499             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3500     }
3501 }
3502 
RGBA16F_to_R16G16B16A16_FLOAT(GLenum type)3503 LoadImageFunctionInfo RGBA16F_to_R16G16B16A16_FLOAT(GLenum type)
3504 {
3505     switch (type)
3506     {
3507         case GL_FLOAT:
3508             return LoadImageFunctionInfo(Load32FTo16F<4>, true);
3509         case GL_HALF_FLOAT:
3510             return LoadImageFunctionInfo(LoadToNative<GLhalf, 4>, false);
3511         case GL_HALF_FLOAT_OES:
3512             return LoadImageFunctionInfo(LoadToNative<GLhalf, 4>, false);
3513         default:
3514             UNREACHABLE();
3515             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3516     }
3517 }
3518 
RGBA16I_to_R16G16B16A16_SINT(GLenum type)3519 LoadImageFunctionInfo RGBA16I_to_R16G16B16A16_SINT(GLenum type)
3520 {
3521     switch (type)
3522     {
3523         case GL_SHORT:
3524             return LoadImageFunctionInfo(LoadToNative<GLshort, 4>, false);
3525         default:
3526             UNREACHABLE();
3527             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3528     }
3529 }
3530 
RGBA16UI_to_R16G16B16A16_UINT(GLenum type)3531 LoadImageFunctionInfo RGBA16UI_to_R16G16B16A16_UINT(GLenum type)
3532 {
3533     switch (type)
3534     {
3535         case GL_UNSIGNED_SHORT:
3536             return LoadImageFunctionInfo(LoadToNative<GLushort, 4>, false);
3537         default:
3538             UNREACHABLE();
3539             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3540     }
3541 }
3542 
RGBA16_EXT_to_R16G16B16A16_UNORM(GLenum type)3543 LoadImageFunctionInfo RGBA16_EXT_to_R16G16B16A16_UNORM(GLenum type)
3544 {
3545     switch (type)
3546     {
3547         case GL_UNSIGNED_SHORT:
3548             return LoadImageFunctionInfo(LoadToNative<GLushort, 4>, false);
3549         default:
3550             UNREACHABLE();
3551             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3552     }
3553 }
3554 
RGBA16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)3555 LoadImageFunctionInfo RGBA16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)
3556 {
3557     switch (type)
3558     {
3559         case GL_SHORT:
3560             return LoadImageFunctionInfo(LoadToNative<GLushort, 4>, false);
3561         default:
3562             UNREACHABLE();
3563             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3564     }
3565 }
3566 
RGBA16_SSCALED_ANGLEX_to_default(GLenum type)3567 LoadImageFunctionInfo RGBA16_SSCALED_ANGLEX_to_default(GLenum type)
3568 {
3569     switch (type)
3570     {
3571         case GL_UNSIGNED_BYTE:
3572             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3573         default:
3574             UNREACHABLE();
3575             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3576     }
3577 }
3578 
RGBA16_USCALED_ANGLEX_to_default(GLenum type)3579 LoadImageFunctionInfo RGBA16_USCALED_ANGLEX_to_default(GLenum type)
3580 {
3581     switch (type)
3582     {
3583         case GL_UNSIGNED_BYTE:
3584             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3585         default:
3586             UNREACHABLE();
3587             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3588     }
3589 }
3590 
RGBA32F_to_R32G32B32A32_FLOAT(GLenum type)3591 LoadImageFunctionInfo RGBA32F_to_R32G32B32A32_FLOAT(GLenum type)
3592 {
3593     switch (type)
3594     {
3595         case GL_FLOAT:
3596             return LoadImageFunctionInfo(LoadToNative<GLfloat, 4>, false);
3597         default:
3598             UNREACHABLE();
3599             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3600     }
3601 }
3602 
RGBA32I_to_R32G32B32A32_SINT(GLenum type)3603 LoadImageFunctionInfo RGBA32I_to_R32G32B32A32_SINT(GLenum type)
3604 {
3605     switch (type)
3606     {
3607         case GL_INT:
3608             return LoadImageFunctionInfo(LoadToNative<GLint, 4>, false);
3609         default:
3610             UNREACHABLE();
3611             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3612     }
3613 }
3614 
RGBA32UI_to_R32G32B32A32_UINT(GLenum type)3615 LoadImageFunctionInfo RGBA32UI_to_R32G32B32A32_UINT(GLenum type)
3616 {
3617     switch (type)
3618     {
3619         case GL_UNSIGNED_INT:
3620             return LoadImageFunctionInfo(LoadToNative<GLuint, 4>, false);
3621         default:
3622             UNREACHABLE();
3623             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3624     }
3625 }
3626 
RGBA4_to_B4G4R4A4_UNORM(GLenum type)3627 LoadImageFunctionInfo RGBA4_to_B4G4R4A4_UNORM(GLenum type)
3628 {
3629     switch (type)
3630     {
3631         case GL_UNSIGNED_BYTE:
3632             return LoadImageFunctionInfo(LoadRGBA8ToBGRA4, true);
3633         case GL_UNSIGNED_SHORT_4_4_4_4:
3634             return LoadImageFunctionInfo(LoadRGBA4ToARGB4, true);
3635         default:
3636             UNREACHABLE();
3637             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3638     }
3639 }
3640 
RGBA4_to_R4G4B4A4_UNORM(GLenum type)3641 LoadImageFunctionInfo RGBA4_to_R4G4B4A4_UNORM(GLenum type)
3642 {
3643     switch (type)
3644     {
3645         case GL_UNSIGNED_BYTE:
3646             return LoadImageFunctionInfo(LoadRGBA8ToRGBA4, true);
3647         case GL_UNSIGNED_SHORT_4_4_4_4:
3648             return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
3649         default:
3650             UNREACHABLE();
3651             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3652     }
3653 }
3654 
RGBA4_to_R8G8B8A8_UNORM(GLenum type)3655 LoadImageFunctionInfo RGBA4_to_R8G8B8A8_UNORM(GLenum type)
3656 {
3657     switch (type)
3658     {
3659         case GL_UNSIGNED_BYTE:
3660             return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
3661         case GL_UNSIGNED_SHORT_4_4_4_4:
3662             return LoadImageFunctionInfo(LoadRGBA4ToRGBA8, true);
3663         default:
3664             UNREACHABLE();
3665             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3666     }
3667 }
3668 
RGBA8_to_R8G8B8A8_UNORM(GLenum type)3669 LoadImageFunctionInfo RGBA8_to_R8G8B8A8_UNORM(GLenum type)
3670 {
3671     switch (type)
3672     {
3673         case GL_UNSIGNED_BYTE:
3674             return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
3675         default:
3676             UNREACHABLE();
3677             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3678     }
3679 }
3680 
RGBA8I_to_R8G8B8A8_SINT(GLenum type)3681 LoadImageFunctionInfo RGBA8I_to_R8G8B8A8_SINT(GLenum type)
3682 {
3683     switch (type)
3684     {
3685         case GL_BYTE:
3686             return LoadImageFunctionInfo(LoadToNative<GLbyte, 4>, false);
3687         default:
3688             UNREACHABLE();
3689             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3690     }
3691 }
3692 
RGBA8UI_to_R8G8B8A8_UINT(GLenum type)3693 LoadImageFunctionInfo RGBA8UI_to_R8G8B8A8_UINT(GLenum type)
3694 {
3695     switch (type)
3696     {
3697         case GL_UNSIGNED_BYTE:
3698             return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
3699         default:
3700             UNREACHABLE();
3701             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3702     }
3703 }
3704 
RGBA8_SNORM_to_R8G8B8A8_SNORM(GLenum type)3705 LoadImageFunctionInfo RGBA8_SNORM_to_R8G8B8A8_SNORM(GLenum type)
3706 {
3707     switch (type)
3708     {
3709         case GL_BYTE:
3710             return LoadImageFunctionInfo(LoadToNative<GLbyte, 4>, false);
3711         default:
3712             UNREACHABLE();
3713             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3714     }
3715 }
3716 
RGBA8_SSCALED_ANGLEX_to_default(GLenum type)3717 LoadImageFunctionInfo RGBA8_SSCALED_ANGLEX_to_default(GLenum type)
3718 {
3719     switch (type)
3720     {
3721         case GL_UNSIGNED_BYTE:
3722             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3723         default:
3724             UNREACHABLE();
3725             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3726     }
3727 }
3728 
RGBA8_USCALED_ANGLEX_to_default(GLenum type)3729 LoadImageFunctionInfo RGBA8_USCALED_ANGLEX_to_default(GLenum type)
3730 {
3731     switch (type)
3732     {
3733         case GL_UNSIGNED_BYTE:
3734             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3735         default:
3736             UNREACHABLE();
3737             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3738     }
3739 }
3740 
RGBX8_ANGLE_to_R8G8B8A8_UNORM(GLenum type)3741 LoadImageFunctionInfo RGBX8_ANGLE_to_R8G8B8A8_UNORM(GLenum type)
3742 {
3743     switch (type)
3744     {
3745         case GL_UNSIGNED_BYTE:
3746             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
3747         default:
3748             UNREACHABLE();
3749             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3750     }
3751 }
3752 
RGBX8_ANGLE_to_R8G8B8X8_UNORM(GLenum type)3753 LoadImageFunctionInfo RGBX8_ANGLE_to_R8G8B8X8_UNORM(GLenum type)
3754 {
3755     switch (type)
3756     {
3757         case GL_UNSIGNED_BYTE:
3758             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
3759         default:
3760             UNREACHABLE();
3761             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3762     }
3763 }
3764 
RGBX8_SRGB_ANGLEX_to_R8G8B8A8_UNORM_SRGB(GLenum type)3765 LoadImageFunctionInfo RGBX8_SRGB_ANGLEX_to_R8G8B8A8_UNORM_SRGB(GLenum type)
3766 {
3767     switch (type)
3768     {
3769         case GL_UNSIGNED_BYTE:
3770             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
3771         default:
3772             UNREACHABLE();
3773             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3774     }
3775 }
3776 
RGBX8_SRGB_ANGLEX_to_R8G8B8X8_UNORM_SRGB(GLenum type)3777 LoadImageFunctionInfo RGBX8_SRGB_ANGLEX_to_R8G8B8X8_UNORM_SRGB(GLenum type)
3778 {
3779     switch (type)
3780     {
3781         case GL_UNSIGNED_BYTE:
3782             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
3783         default:
3784             UNREACHABLE();
3785             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3786     }
3787 }
3788 
SR8_EXT_to_R8_UNORM_SRGB(GLenum type)3789 LoadImageFunctionInfo SR8_EXT_to_R8_UNORM_SRGB(GLenum type)
3790 {
3791     switch (type)
3792     {
3793         case GL_UNSIGNED_BYTE:
3794             return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
3795         default:
3796             UNREACHABLE();
3797             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3798     }
3799 }
3800 
SRG8_EXT_to_R8G8_UNORM_SRGB(GLenum type)3801 LoadImageFunctionInfo SRG8_EXT_to_R8G8_UNORM_SRGB(GLenum type)
3802 {
3803     switch (type)
3804     {
3805         case GL_UNSIGNED_BYTE:
3806             return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
3807         default:
3808             UNREACHABLE();
3809             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3810     }
3811 }
3812 
SRGB8_to_R8G8B8A8_UNORM_SRGB(GLenum type)3813 LoadImageFunctionInfo SRGB8_to_R8G8B8A8_UNORM_SRGB(GLenum type)
3814 {
3815     switch (type)
3816     {
3817         case GL_UNSIGNED_BYTE:
3818             return LoadImageFunctionInfo(LoadToNative3To4<GLubyte, 0xFF>, true);
3819         default:
3820             UNREACHABLE();
3821             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3822     }
3823 }
3824 
SRGB8_to_R8G8B8_UNORM_SRGB(GLenum type)3825 LoadImageFunctionInfo SRGB8_to_R8G8B8_UNORM_SRGB(GLenum type)
3826 {
3827     switch (type)
3828     {
3829         case GL_UNSIGNED_BYTE:
3830             return LoadImageFunctionInfo(LoadToNative<GLubyte, 3>, false);
3831         default:
3832             UNREACHABLE();
3833             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3834     }
3835 }
3836 
SRGB8_ALPHA8_to_R8G8B8A8_UNORM_SRGB(GLenum type)3837 LoadImageFunctionInfo SRGB8_ALPHA8_to_R8G8B8A8_UNORM_SRGB(GLenum type)
3838 {
3839     switch (type)
3840     {
3841         case GL_UNSIGNED_BYTE:
3842             return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
3843         default:
3844             UNREACHABLE();
3845             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3846     }
3847 }
3848 
STENCIL_INDEX8_to_D24_UNORM_S8_UINT(GLenum type)3849 LoadImageFunctionInfo STENCIL_INDEX8_to_D24_UNORM_S8_UINT(GLenum type)
3850 {
3851     switch (type)
3852     {
3853         case GL_UNSIGNED_BYTE:
3854             return LoadImageFunctionInfo(LoadS8ToS8X24, true);
3855         default:
3856             UNREACHABLE();
3857             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3858     }
3859 }
3860 
STENCIL_INDEX8_to_S8_UINT(GLenum type)3861 LoadImageFunctionInfo STENCIL_INDEX8_to_S8_UINT(GLenum type)
3862 {
3863     switch (type)
3864     {
3865         case GL_UNSIGNED_BYTE:
3866             return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
3867         default:
3868             UNREACHABLE();
3869             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3870     }
3871 }
3872 
STENCIL_INDEX8_to_default(GLenum type)3873 LoadImageFunctionInfo STENCIL_INDEX8_to_default(GLenum type)
3874 {
3875     switch (type)
3876     {
3877         case GL_UNSIGNED_BYTE:
3878             return LoadImageFunctionInfo(UnimplementedLoadFunction, true);
3879         default:
3880             UNREACHABLE();
3881             return LoadImageFunctionInfo(UnreachableLoadFunction, true);
3882     }
3883 }
3884 
3885 }  // namespace
3886 
GetLoadFunctionsMap(GLenum internalFormat,FormatID angleFormat)3887 LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
3888 {
3889     // clang-format off
3890     switch (internalFormat)
3891     {
3892         case GL_A1RGB5_ANGLEX:
3893         {
3894             switch (angleFormat)
3895             {
3896                 case FormatID::A1R5G5B5_UNORM:
3897                     return A1RGB5_ANGLEX_to_A1R5G5B5_UNORM;
3898                 default:
3899                     break;
3900             }
3901             break;
3902         }
3903         case GL_ALPHA:
3904         {
3905             switch (angleFormat)
3906             {
3907                 case FormatID::R16G16B16A16_FLOAT:
3908                     return ALPHA_to_R16G16B16A16_FLOAT;
3909                 case FormatID::R32G32B32A32_FLOAT:
3910                     return ALPHA_to_R32G32B32A32_FLOAT;
3911                 default:
3912                     return ALPHA_to_default;
3913             }
3914         }
3915         case GL_ALPHA16F_EXT:
3916         {
3917             switch (angleFormat)
3918             {
3919                 case FormatID::R16_FLOAT:
3920                     return ALPHA16F_EXT_to_R16_FLOAT;
3921                 default:
3922                     return ALPHA16F_EXT_to_default;
3923             }
3924         }
3925         case GL_ALPHA32F_EXT:
3926         {
3927             switch (angleFormat)
3928             {
3929                 case FormatID::R32_FLOAT:
3930                     return ALPHA32F_EXT_to_R32_FLOAT;
3931                 default:
3932                     return ALPHA32F_EXT_to_default;
3933             }
3934         }
3935         case GL_ALPHA8_EXT:
3936         {
3937             switch (angleFormat)
3938             {
3939                 case FormatID::A8_UNORM:
3940                     return ALPHA8_EXT_to_A8_UNORM;
3941                 case FormatID::R8G8B8A8_UNORM:
3942                     return ALPHA8_EXT_to_R8G8B8A8_UNORM;
3943                 case FormatID::R8_UNORM:
3944                     return ALPHA8_EXT_to_R8_UNORM;
3945                 default:
3946                     break;
3947             }
3948             break;
3949         }
3950         case GL_BGR10_A2_ANGLEX:
3951         {
3952             switch (angleFormat)
3953             {
3954                 case FormatID::B10G10R10A2_UNORM:
3955                     return BGR10_A2_ANGLEX_to_B10G10R10A2_UNORM;
3956                 case FormatID::R10G10B10A2_UNORM:
3957                     return BGR10_A2_ANGLEX_to_R10G10B10A2_UNORM;
3958                 default:
3959                     break;
3960             }
3961             break;
3962         }
3963         case GL_BGR565_ANGLEX:
3964         {
3965             switch (angleFormat)
3966             {
3967                 case FormatID::B5G6R5_UNORM:
3968                     return BGR565_ANGLEX_to_B5G6R5_UNORM;
3969                 case FormatID::R8G8B8A8_UNORM:
3970                     return BGR565_ANGLEX_to_R8G8B8A8_UNORM;
3971                 default:
3972                     break;
3973             }
3974             break;
3975         }
3976         case GL_BGR5_A1_ANGLEX:
3977             return BGR5_A1_ANGLEX_to_default;
3978         case GL_BGRA4_ANGLEX:
3979             return BGRA4_ANGLEX_to_default;
3980         case GL_BGRA8_EXT:
3981             return BGRA8_EXT_to_default;
3982         case GL_BGRA8_SRGB_ANGLEX:
3983         {
3984             switch (angleFormat)
3985             {
3986                 case FormatID::B8G8R8A8_UNORM_SRGB:
3987                     return BGRA8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB;
3988                 default:
3989                     break;
3990             }
3991             break;
3992         }
3993         case GL_BGRA_EXT:
3994             return BGRA_EXT_to_default;
3995         case GL_BGRX8_ANGLEX:
3996         {
3997             switch (angleFormat)
3998             {
3999                 case FormatID::B8G8R8A8_UNORM:
4000                     return BGRX8_ANGLEX_to_B8G8R8A8_UNORM;
4001                 case FormatID::B8G8R8X8_UNORM:
4002                     return BGRX8_ANGLEX_to_B8G8R8X8_UNORM;
4003                 default:
4004                     break;
4005             }
4006             break;
4007         }
4008         case GL_BGRX8_SRGB_ANGLEX:
4009         {
4010             switch (angleFormat)
4011             {
4012                 case FormatID::B8G8R8A8_UNORM_SRGB:
4013                     return BGRX8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB;
4014                 case FormatID::B8G8R8X8_UNORM_SRGB:
4015                     return BGRX8_SRGB_ANGLEX_to_B8G8R8X8_UNORM_SRGB;
4016                 default:
4017                     break;
4018             }
4019             break;
4020         }
4021         case GL_COMPRESSED_R11_EAC:
4022         {
4023             switch (angleFormat)
4024             {
4025                 case FormatID::EAC_R11_UNORM_BLOCK:
4026                     return COMPRESSED_R11_EAC_to_EAC_R11_UNORM_BLOCK;
4027                 case FormatID::R16_FLOAT:
4028                     return COMPRESSED_R11_EAC_to_R16_FLOAT;
4029                 case FormatID::R16_UNORM:
4030                     return COMPRESSED_R11_EAC_to_R16_UNORM;
4031                 default:
4032                     break;
4033             }
4034             break;
4035         }
4036         case GL_COMPRESSED_RED_GREEN_RGTC2_EXT:
4037             return COMPRESSED_RED_GREEN_RGTC2_EXT_to_default;
4038         case GL_COMPRESSED_RED_RGTC1_EXT:
4039             return COMPRESSED_RED_RGTC1_EXT_to_default;
4040         case GL_COMPRESSED_RG11_EAC:
4041         {
4042             switch (angleFormat)
4043             {
4044                 case FormatID::EAC_R11G11_UNORM_BLOCK:
4045                     return COMPRESSED_RG11_EAC_to_EAC_R11G11_UNORM_BLOCK;
4046                 case FormatID::R16G16_FLOAT:
4047                     return COMPRESSED_RG11_EAC_to_R16G16_FLOAT;
4048                 case FormatID::R16G16_UNORM:
4049                     return COMPRESSED_RG11_EAC_to_R16G16_UNORM;
4050                 default:
4051                     break;
4052             }
4053             break;
4054         }
4055         case GL_COMPRESSED_RGB8_ETC2:
4056         {
4057             switch (angleFormat)
4058             {
4059                 case FormatID::ETC2_R8G8B8_UNORM_BLOCK:
4060                     return COMPRESSED_RGB8_ETC2_to_ETC2_R8G8B8_UNORM_BLOCK;
4061                 case FormatID::R8G8B8A8_UNORM:
4062                     return COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM;
4063                 default:
4064                     break;
4065             }
4066             break;
4067         }
4068         case GL_COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE:
4069         {
4070             switch (angleFormat)
4071             {
4072                 case FormatID::BC1_RGB_UNORM_BLOCK:
4073                     return COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_BLOCK;
4074                 default:
4075                     break;
4076             }
4077             break;
4078         }
4079         case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
4080         {
4081             switch (angleFormat)
4082             {
4083                 case FormatID::ETC2_R8G8B8A1_UNORM_BLOCK:
4084                     return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_UNORM_BLOCK;
4085                 case FormatID::R8G8B8A8_UNORM:
4086                     return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM;
4087                 default:
4088                     break;
4089             }
4090             break;
4091         }
4092         case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
4093         {
4094             switch (angleFormat)
4095             {
4096                 case FormatID::BC1_RGBA_UNORM_BLOCK:
4097                     return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_BLOCK;
4098                 default:
4099                     break;
4100             }
4101             break;
4102         }
4103         case GL_COMPRESSED_RGBA8_ETC2_EAC:
4104         {
4105             switch (angleFormat)
4106             {
4107                 case FormatID::ETC2_R8G8B8A8_UNORM_BLOCK:
4108                     return COMPRESSED_RGBA8_ETC2_EAC_to_ETC2_R8G8B8A8_UNORM_BLOCK;
4109                 case FormatID::R8G8B8A8_UNORM:
4110                     return COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM;
4111                 default:
4112                     break;
4113             }
4114             break;
4115         }
4116         case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
4117         {
4118             switch (angleFormat)
4119             {
4120                 case FormatID::R8G8B8A8_UNORM:
4121                     return COMPRESSED_RGBA_ASTC_10x10_KHR_to_R8G8B8A8_UNORM;
4122                 default:
4123                     return COMPRESSED_RGBA_ASTC_10x10_KHR_to_default;
4124             }
4125         }
4126         case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
4127         {
4128             switch (angleFormat)
4129             {
4130                 case FormatID::R8G8B8A8_UNORM:
4131                     return COMPRESSED_RGBA_ASTC_10x5_KHR_to_R8G8B8A8_UNORM;
4132                 default:
4133                     return COMPRESSED_RGBA_ASTC_10x5_KHR_to_default;
4134             }
4135         }
4136         case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
4137         {
4138             switch (angleFormat)
4139             {
4140                 case FormatID::R8G8B8A8_UNORM:
4141                     return COMPRESSED_RGBA_ASTC_10x6_KHR_to_R8G8B8A8_UNORM;
4142                 default:
4143                     return COMPRESSED_RGBA_ASTC_10x6_KHR_to_default;
4144             }
4145         }
4146         case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
4147         {
4148             switch (angleFormat)
4149             {
4150                 case FormatID::R8G8B8A8_UNORM:
4151                     return COMPRESSED_RGBA_ASTC_10x8_KHR_to_R8G8B8A8_UNORM;
4152                 default:
4153                     return COMPRESSED_RGBA_ASTC_10x8_KHR_to_default;
4154             }
4155         }
4156         case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
4157         {
4158             switch (angleFormat)
4159             {
4160                 case FormatID::R8G8B8A8_UNORM:
4161                     return COMPRESSED_RGBA_ASTC_12x10_KHR_to_R8G8B8A8_UNORM;
4162                 default:
4163                     return COMPRESSED_RGBA_ASTC_12x10_KHR_to_default;
4164             }
4165         }
4166         case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
4167         {
4168             switch (angleFormat)
4169             {
4170                 case FormatID::R8G8B8A8_UNORM:
4171                     return COMPRESSED_RGBA_ASTC_12x12_KHR_to_R8G8B8A8_UNORM;
4172                 default:
4173                     return COMPRESSED_RGBA_ASTC_12x12_KHR_to_default;
4174             }
4175         }
4176         case GL_COMPRESSED_RGBA_ASTC_3x3x3_OES:
4177             return COMPRESSED_RGBA_ASTC_3x3x3_OES_to_default;
4178         case GL_COMPRESSED_RGBA_ASTC_4x3x3_OES:
4179             return COMPRESSED_RGBA_ASTC_4x3x3_OES_to_default;
4180         case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
4181         {
4182             switch (angleFormat)
4183             {
4184                 case FormatID::R8G8B8A8_UNORM:
4185                     return COMPRESSED_RGBA_ASTC_4x4_KHR_to_R8G8B8A8_UNORM;
4186                 default:
4187                     return COMPRESSED_RGBA_ASTC_4x4_KHR_to_default;
4188             }
4189         }
4190         case GL_COMPRESSED_RGBA_ASTC_4x4x3_OES:
4191             return COMPRESSED_RGBA_ASTC_4x4x3_OES_to_default;
4192         case GL_COMPRESSED_RGBA_ASTC_4x4x4_OES:
4193             return COMPRESSED_RGBA_ASTC_4x4x4_OES_to_default;
4194         case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
4195         {
4196             switch (angleFormat)
4197             {
4198                 case FormatID::R8G8B8A8_UNORM:
4199                     return COMPRESSED_RGBA_ASTC_5x4_KHR_to_R8G8B8A8_UNORM;
4200                 default:
4201                     return COMPRESSED_RGBA_ASTC_5x4_KHR_to_default;
4202             }
4203         }
4204         case GL_COMPRESSED_RGBA_ASTC_5x4x4_OES:
4205             return COMPRESSED_RGBA_ASTC_5x4x4_OES_to_default;
4206         case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
4207         {
4208             switch (angleFormat)
4209             {
4210                 case FormatID::R8G8B8A8_UNORM:
4211                     return COMPRESSED_RGBA_ASTC_5x5_KHR_to_R8G8B8A8_UNORM;
4212                 default:
4213                     return COMPRESSED_RGBA_ASTC_5x5_KHR_to_default;
4214             }
4215         }
4216         case GL_COMPRESSED_RGBA_ASTC_5x5x4_OES:
4217             return COMPRESSED_RGBA_ASTC_5x5x4_OES_to_default;
4218         case GL_COMPRESSED_RGBA_ASTC_5x5x5_OES:
4219             return COMPRESSED_RGBA_ASTC_5x5x5_OES_to_default;
4220         case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
4221         {
4222             switch (angleFormat)
4223             {
4224                 case FormatID::R8G8B8A8_UNORM:
4225                     return COMPRESSED_RGBA_ASTC_6x5_KHR_to_R8G8B8A8_UNORM;
4226                 default:
4227                     return COMPRESSED_RGBA_ASTC_6x5_KHR_to_default;
4228             }
4229         }
4230         case GL_COMPRESSED_RGBA_ASTC_6x5x5_OES:
4231             return COMPRESSED_RGBA_ASTC_6x5x5_OES_to_default;
4232         case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
4233         {
4234             switch (angleFormat)
4235             {
4236                 case FormatID::R8G8B8A8_UNORM:
4237                     return COMPRESSED_RGBA_ASTC_6x6_KHR_to_R8G8B8A8_UNORM;
4238                 default:
4239                     return COMPRESSED_RGBA_ASTC_6x6_KHR_to_default;
4240             }
4241         }
4242         case GL_COMPRESSED_RGBA_ASTC_6x6x5_OES:
4243             return COMPRESSED_RGBA_ASTC_6x6x5_OES_to_default;
4244         case GL_COMPRESSED_RGBA_ASTC_6x6x6_OES:
4245             return COMPRESSED_RGBA_ASTC_6x6x6_OES_to_default;
4246         case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
4247         {
4248             switch (angleFormat)
4249             {
4250                 case FormatID::R8G8B8A8_UNORM:
4251                     return COMPRESSED_RGBA_ASTC_8x5_KHR_to_R8G8B8A8_UNORM;
4252                 default:
4253                     return COMPRESSED_RGBA_ASTC_8x5_KHR_to_default;
4254             }
4255         }
4256         case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
4257         {
4258             switch (angleFormat)
4259             {
4260                 case FormatID::R8G8B8A8_UNORM:
4261                     return COMPRESSED_RGBA_ASTC_8x6_KHR_to_R8G8B8A8_UNORM;
4262                 default:
4263                     return COMPRESSED_RGBA_ASTC_8x6_KHR_to_default;
4264             }
4265         }
4266         case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
4267         {
4268             switch (angleFormat)
4269             {
4270                 case FormatID::R8G8B8A8_UNORM:
4271                     return COMPRESSED_RGBA_ASTC_8x8_KHR_to_R8G8B8A8_UNORM;
4272                 default:
4273                     return COMPRESSED_RGBA_ASTC_8x8_KHR_to_default;
4274             }
4275         }
4276         case GL_COMPRESSED_RGBA_BPTC_UNORM_EXT:
4277             return COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default;
4278         case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
4279             return COMPRESSED_RGBA_S3TC_DXT1_EXT_to_default;
4280         case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
4281             return COMPRESSED_RGBA_S3TC_DXT3_ANGLE_to_default;
4282         case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
4283             return COMPRESSED_RGBA_S3TC_DXT5_ANGLE_to_default;
4284         case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT:
4285             return COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT_to_default;
4286         case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT:
4287             return COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT_to_default;
4288         case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
4289             return COMPRESSED_RGB_S3TC_DXT1_EXT_to_default;
4290         case GL_COMPRESSED_SIGNED_R11_EAC:
4291         {
4292             switch (angleFormat)
4293             {
4294                 case FormatID::EAC_R11_SNORM_BLOCK:
4295                     return COMPRESSED_SIGNED_R11_EAC_to_EAC_R11_SNORM_BLOCK;
4296                 case FormatID::R16_FLOAT:
4297                     return COMPRESSED_SIGNED_R11_EAC_to_R16_FLOAT;
4298                 case FormatID::R16_SNORM:
4299                     return COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM;
4300                 default:
4301                     break;
4302             }
4303             break;
4304         }
4305         case GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:
4306             return COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT_to_default;
4307         case GL_COMPRESSED_SIGNED_RED_RGTC1_EXT:
4308             return COMPRESSED_SIGNED_RED_RGTC1_EXT_to_default;
4309         case GL_COMPRESSED_SIGNED_RG11_EAC:
4310         {
4311             switch (angleFormat)
4312             {
4313                 case FormatID::EAC_R11G11_SNORM_BLOCK:
4314                     return COMPRESSED_SIGNED_RG11_EAC_to_EAC_R11G11_SNORM_BLOCK;
4315                 case FormatID::R16G16_FLOAT:
4316                     return COMPRESSED_SIGNED_RG11_EAC_to_R16G16_FLOAT;
4317                 case FormatID::R16G16_SNORM:
4318                     return COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM;
4319                 default:
4320                     break;
4321             }
4322             break;
4323         }
4324         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
4325         {
4326             switch (angleFormat)
4327             {
4328                 case FormatID::R8G8B8A8_UNORM_SRGB:
4329                     return COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_R8G8B8A8_UNORM_SRGB;
4330                 default:
4331                     return COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_default;
4332             }
4333         }
4334         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
4335         {
4336             switch (angleFormat)
4337             {
4338                 case FormatID::R8G8B8A8_UNORM_SRGB:
4339                     return COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_R8G8B8A8_UNORM_SRGB;
4340                 default:
4341                     return COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_default;
4342             }
4343         }
4344         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
4345         {
4346             switch (angleFormat)
4347             {
4348                 case FormatID::R8G8B8A8_UNORM_SRGB:
4349                     return COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_R8G8B8A8_UNORM_SRGB;
4350                 default:
4351                     return COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_default;
4352             }
4353         }
4354         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
4355         {
4356             switch (angleFormat)
4357             {
4358                 case FormatID::R8G8B8A8_UNORM_SRGB:
4359                     return COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_R8G8B8A8_UNORM_SRGB;
4360                 default:
4361                     return COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_default;
4362             }
4363         }
4364         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
4365         {
4366             switch (angleFormat)
4367             {
4368                 case FormatID::R8G8B8A8_UNORM_SRGB:
4369                     return COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_R8G8B8A8_UNORM_SRGB;
4370                 default:
4371                     return COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_default;
4372             }
4373         }
4374         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
4375         {
4376             switch (angleFormat)
4377             {
4378                 case FormatID::R8G8B8A8_UNORM_SRGB:
4379                     return COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_R8G8B8A8_UNORM_SRGB;
4380                 default:
4381                     return COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_default;
4382             }
4383         }
4384         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES:
4385             return COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES_to_default;
4386         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES:
4387             return COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES_to_default;
4388         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
4389         {
4390             switch (angleFormat)
4391             {
4392                 case FormatID::R8G8B8A8_UNORM_SRGB:
4393                     return COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_R8G8B8A8_UNORM_SRGB;
4394                 default:
4395                     return COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_default;
4396             }
4397         }
4398         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES:
4399             return COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES_to_default;
4400         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES:
4401             return COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES_to_default;
4402         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
4403         {
4404             switch (angleFormat)
4405             {
4406                 case FormatID::R8G8B8A8_UNORM_SRGB:
4407                     return COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_R8G8B8A8_UNORM_SRGB;
4408                 default:
4409                     return COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_default;
4410             }
4411         }
4412         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES:
4413             return COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES_to_default;
4414         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
4415         {
4416             switch (angleFormat)
4417             {
4418                 case FormatID::R8G8B8A8_UNORM_SRGB:
4419                     return COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_R8G8B8A8_UNORM_SRGB;
4420                 default:
4421                     return COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_default;
4422             }
4423         }
4424         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES:
4425             return COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES_to_default;
4426         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES:
4427             return COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES_to_default;
4428         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
4429         {
4430             switch (angleFormat)
4431             {
4432                 case FormatID::R8G8B8A8_UNORM_SRGB:
4433                     return COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_R8G8B8A8_UNORM_SRGB;
4434                 default:
4435                     return COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_default;
4436             }
4437         }
4438         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES:
4439             return COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES_to_default;
4440         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
4441         {
4442             switch (angleFormat)
4443             {
4444                 case FormatID::R8G8B8A8_UNORM_SRGB:
4445                     return COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_R8G8B8A8_UNORM_SRGB;
4446                 default:
4447                     return COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_default;
4448             }
4449         }
4450         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES:
4451             return COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES_to_default;
4452         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES:
4453             return COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES_to_default;
4454         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
4455         {
4456             switch (angleFormat)
4457             {
4458                 case FormatID::R8G8B8A8_UNORM_SRGB:
4459                     return COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_R8G8B8A8_UNORM_SRGB;
4460                 default:
4461                     return COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_default;
4462             }
4463         }
4464         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
4465         {
4466             switch (angleFormat)
4467             {
4468                 case FormatID::R8G8B8A8_UNORM_SRGB:
4469                     return COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_R8G8B8A8_UNORM_SRGB;
4470                 default:
4471                     return COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_default;
4472             }
4473         }
4474         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
4475         {
4476             switch (angleFormat)
4477             {
4478                 case FormatID::R8G8B8A8_UNORM_SRGB:
4479                     return COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_R8G8B8A8_UNORM_SRGB;
4480                 default:
4481                     return COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_default;
4482             }
4483         }
4484         case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
4485         {
4486             switch (angleFormat)
4487             {
4488                 case FormatID::ETC2_R8G8B8A8_SRGB_BLOCK:
4489                     return COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_ETC2_R8G8B8A8_SRGB_BLOCK;
4490                 case FormatID::R8G8B8A8_UNORM_SRGB:
4491                     return COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB;
4492                 default:
4493                     break;
4494             }
4495             break;
4496         }
4497         case GL_COMPRESSED_SRGB8_ETC2:
4498         {
4499             switch (angleFormat)
4500             {
4501                 case FormatID::ETC2_R8G8B8_SRGB_BLOCK:
4502                     return COMPRESSED_SRGB8_ETC2_to_ETC2_R8G8B8_SRGB_BLOCK;
4503                 case FormatID::R8G8B8A8_UNORM_SRGB:
4504                     return COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB;
4505                 default:
4506                     break;
4507             }
4508             break;
4509         }
4510         case GL_COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE:
4511         {
4512             switch (angleFormat)
4513             {
4514                 case FormatID::BC1_RGB_UNORM_SRGB_BLOCK:
4515                     return COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_SRGB_BLOCK;
4516                 default:
4517                     break;
4518             }
4519             break;
4520         }
4521         case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
4522         {
4523             switch (angleFormat)
4524             {
4525                 case FormatID::ETC2_R8G8B8A1_SRGB_BLOCK:
4526                     return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_SRGB_BLOCK;
4527                 case FormatID::R8G8B8A8_UNORM_SRGB:
4528                     return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB;
4529                 default:
4530                     break;
4531             }
4532             break;
4533         }
4534         case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
4535         {
4536             switch (angleFormat)
4537             {
4538                 case FormatID::BC1_RGBA_UNORM_SRGB_BLOCK:
4539                     return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_SRGB_BLOCK;
4540                 default:
4541                     break;
4542             }
4543             break;
4544         }
4545         case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:
4546             return COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default;
4547         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
4548             return COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT_to_default;
4549         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
4550             return COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT_to_default;
4551         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
4552             return COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT_to_default;
4553         case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
4554             return COMPRESSED_SRGB_S3TC_DXT1_EXT_to_default;
4555         case GL_DEPTH24_STENCIL8:
4556         {
4557             switch (angleFormat)
4558             {
4559                 case FormatID::D24_UNORM_S8_UINT:
4560                     return DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT;
4561                 case FormatID::D32_FLOAT_S8X24_UINT:
4562                     return DEPTH24_STENCIL8_to_D32_FLOAT_S8X24_UINT;
4563                 default:
4564                     break;
4565             }
4566             break;
4567         }
4568         case GL_DEPTH32F_STENCIL8:
4569         {
4570             switch (angleFormat)
4571             {
4572                 case FormatID::D24_UNORM_S8_UINT:
4573                     return DEPTH32F_STENCIL8_to_D24_UNORM_S8_UINT;
4574                 case FormatID::D32_FLOAT_S8X24_UINT:
4575                     return DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT;
4576                 default:
4577                     break;
4578             }
4579             break;
4580         }
4581         case GL_DEPTH_COMPONENT16:
4582         {
4583             switch (angleFormat)
4584             {
4585                 case FormatID::D16_UNORM:
4586                     return DEPTH_COMPONENT16_to_D16_UNORM;
4587                 case FormatID::D32_FLOAT:
4588                     return DEPTH_COMPONENT16_to_D32_FLOAT;
4589                 default:
4590                     break;
4591             }
4592             break;
4593         }
4594         case GL_DEPTH_COMPONENT24:
4595         {
4596             switch (angleFormat)
4597             {
4598                 case FormatID::D24_UNORM_S8_UINT:
4599                     return DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT;
4600                 case FormatID::D24_UNORM_X8_UINT:
4601                     return DEPTH_COMPONENT24_to_D24_UNORM_X8_UINT;
4602                 case FormatID::D32_FLOAT:
4603                     return DEPTH_COMPONENT24_to_D32_FLOAT;
4604                 case FormatID::D32_FLOAT_S8X24_UINT:
4605                     return DEPTH_COMPONENT24_to_D32_FLOAT_S8X24_UINT;
4606                 default:
4607                     break;
4608             }
4609             break;
4610         }
4611         case GL_DEPTH_COMPONENT32F:
4612         {
4613             switch (angleFormat)
4614             {
4615                 case FormatID::D32_FLOAT:
4616                     return DEPTH_COMPONENT32F_to_D32_FLOAT;
4617                 default:
4618                     break;
4619             }
4620             break;
4621         }
4622         case GL_DEPTH_COMPONENT32_OES:
4623         {
4624             switch (angleFormat)
4625             {
4626                 case FormatID::D32_FLOAT:
4627                     return DEPTH_COMPONENT32_OES_to_D32_FLOAT;
4628                 default:
4629                     return DEPTH_COMPONENT32_OES_to_default;
4630             }
4631         }
4632         case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
4633         {
4634             switch (angleFormat)
4635             {
4636                 case FormatID::BC1_RGB_UNORM_BLOCK:
4637                     return ETC1_RGB8_LOSSY_DECODE_ANGLE_to_BC1_RGB_UNORM_BLOCK;
4638                 default:
4639                     break;
4640             }
4641             break;
4642         }
4643         case GL_ETC1_RGB8_OES:
4644         {
4645             switch (angleFormat)
4646             {
4647                 case FormatID::ETC1_R8G8B8_UNORM_BLOCK:
4648                     return ETC1_RGB8_OES_to_ETC1_R8G8B8_UNORM_BLOCK;
4649                 case FormatID::ETC2_R8G8B8_UNORM_BLOCK:
4650                     return ETC1_RGB8_OES_to_ETC2_R8G8B8_UNORM_BLOCK;
4651                 case FormatID::R8G8B8A8_UNORM:
4652                     return ETC1_RGB8_OES_to_R8G8B8A8_UNORM;
4653                 default:
4654                     break;
4655             }
4656             break;
4657         }
4658         case GL_G8_B8R8_2PLANE_420_UNORM_ANGLE:
4659             return G8_B8R8_2PLANE_420_UNORM_ANGLE_to_default;
4660         case GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE:
4661             return G8_B8_R8_3PLANE_420_UNORM_ANGLE_to_default;
4662         case GL_LUMINANCE:
4663         {
4664             switch (angleFormat)
4665             {
4666                 case FormatID::R16G16B16A16_FLOAT:
4667                     return LUMINANCE_to_R16G16B16A16_FLOAT;
4668                 case FormatID::R32G32B32A32_FLOAT:
4669                     return LUMINANCE_to_R32G32B32A32_FLOAT;
4670                 default:
4671                     return LUMINANCE_to_default;
4672             }
4673         }
4674         case GL_LUMINANCE16F_EXT:
4675         {
4676             switch (angleFormat)
4677             {
4678                 case FormatID::R16_FLOAT:
4679                     return LUMINANCE16F_EXT_to_R16_FLOAT;
4680                 default:
4681                     return LUMINANCE16F_EXT_to_default;
4682             }
4683         }
4684         case GL_LUMINANCE32F_EXT:
4685         {
4686             switch (angleFormat)
4687             {
4688                 case FormatID::R32_FLOAT:
4689                     return LUMINANCE32F_EXT_to_R32_FLOAT;
4690                 default:
4691                     return LUMINANCE32F_EXT_to_default;
4692             }
4693         }
4694         case GL_LUMINANCE4_ALPHA4_OES:
4695         {
4696             switch (angleFormat)
4697             {
4698                 case FormatID::B4G4R4A4_UNORM:
4699                     return LUMINANCE4_ALPHA4_OES_to_B4G4R4A4_UNORM;
4700                 case FormatID::R8G8B8A8_UNORM:
4701                     return LUMINANCE4_ALPHA4_OES_to_R8G8B8A8_UNORM;
4702                 case FormatID::R8G8_UNORM:
4703                     return LUMINANCE4_ALPHA4_OES_to_R8G8_UNORM;
4704                 default:
4705                     break;
4706             }
4707             break;
4708         }
4709         case GL_LUMINANCE8_ALPHA8_EXT:
4710         {
4711             switch (angleFormat)
4712             {
4713                 case FormatID::R8G8B8A8_UNORM:
4714                     return LUMINANCE8_ALPHA8_EXT_to_R8G8B8A8_UNORM;
4715                 case FormatID::R8G8_UNORM:
4716                     return LUMINANCE8_ALPHA8_EXT_to_R8G8_UNORM;
4717                 default:
4718                     break;
4719             }
4720             break;
4721         }
4722         case GL_LUMINANCE8_EXT:
4723         {
4724             switch (angleFormat)
4725             {
4726                 case FormatID::R8G8B8A8_UNORM:
4727                     return LUMINANCE8_EXT_to_R8G8B8A8_UNORM;
4728                 case FormatID::R8_UNORM:
4729                     return LUMINANCE8_EXT_to_R8_UNORM;
4730                 default:
4731                     break;
4732             }
4733             break;
4734         }
4735         case GL_LUMINANCE_ALPHA:
4736         {
4737             switch (angleFormat)
4738             {
4739                 case FormatID::R16G16B16A16_FLOAT:
4740                     return LUMINANCE_ALPHA_to_R16G16B16A16_FLOAT;
4741                 case FormatID::R32G32B32A32_FLOAT:
4742                     return LUMINANCE_ALPHA_to_R32G32B32A32_FLOAT;
4743                 default:
4744                     return LUMINANCE_ALPHA_to_default;
4745             }
4746         }
4747         case GL_LUMINANCE_ALPHA16F_EXT:
4748         {
4749             switch (angleFormat)
4750             {
4751                 case FormatID::R16G16_FLOAT:
4752                     return LUMINANCE_ALPHA16F_EXT_to_R16G16_FLOAT;
4753                 default:
4754                     return LUMINANCE_ALPHA16F_EXT_to_default;
4755             }
4756         }
4757         case GL_LUMINANCE_ALPHA32F_EXT:
4758         {
4759             switch (angleFormat)
4760             {
4761                 case FormatID::R32G32_FLOAT:
4762                     return LUMINANCE_ALPHA32F_EXT_to_R32G32_FLOAT;
4763                 default:
4764                     return LUMINANCE_ALPHA32F_EXT_to_default;
4765             }
4766         }
4767         case GL_PALETTE4_R5_G6_B5_OES:
4768         {
4769             switch (angleFormat)
4770             {
4771                 case FormatID::R8G8B8A8_UNORM:
4772                     return PALETTE4_R5_G6_B5_OES_to_R8G8B8A8_UNORM;
4773                 default:
4774                     break;
4775             }
4776             break;
4777         }
4778         case GL_PALETTE4_RGB5_A1_OES:
4779         {
4780             switch (angleFormat)
4781             {
4782                 case FormatID::R8G8B8A8_UNORM:
4783                     return PALETTE4_RGB5_A1_OES_to_R8G8B8A8_UNORM;
4784                 default:
4785                     break;
4786             }
4787             break;
4788         }
4789         case GL_PALETTE4_RGB8_OES:
4790         {
4791             switch (angleFormat)
4792             {
4793                 case FormatID::R8G8B8A8_UNORM:
4794                     return PALETTE4_RGB8_OES_to_R8G8B8A8_UNORM;
4795                 default:
4796                     break;
4797             }
4798             break;
4799         }
4800         case GL_PALETTE4_RGBA4_OES:
4801         {
4802             switch (angleFormat)
4803             {
4804                 case FormatID::R8G8B8A8_UNORM:
4805                     return PALETTE4_RGBA4_OES_to_R8G8B8A8_UNORM;
4806                 default:
4807                     break;
4808             }
4809             break;
4810         }
4811         case GL_PALETTE4_RGBA8_OES:
4812         {
4813             switch (angleFormat)
4814             {
4815                 case FormatID::R8G8B8A8_UNORM:
4816                     return PALETTE4_RGBA8_OES_to_R8G8B8A8_UNORM;
4817                 default:
4818                     break;
4819             }
4820             break;
4821         }
4822         case GL_PALETTE8_R5_G6_B5_OES:
4823         {
4824             switch (angleFormat)
4825             {
4826                 case FormatID::R8G8B8A8_UNORM:
4827                     return PALETTE8_R5_G6_B5_OES_to_R8G8B8A8_UNORM;
4828                 default:
4829                     break;
4830             }
4831             break;
4832         }
4833         case GL_PALETTE8_RGB5_A1_OES:
4834         {
4835             switch (angleFormat)
4836             {
4837                 case FormatID::R8G8B8A8_UNORM:
4838                     return PALETTE8_RGB5_A1_OES_to_R8G8B8A8_UNORM;
4839                 default:
4840                     break;
4841             }
4842             break;
4843         }
4844         case GL_PALETTE8_RGB8_OES:
4845         {
4846             switch (angleFormat)
4847             {
4848                 case FormatID::R8G8B8A8_UNORM:
4849                     return PALETTE8_RGB8_OES_to_R8G8B8A8_UNORM;
4850                 default:
4851                     break;
4852             }
4853             break;
4854         }
4855         case GL_PALETTE8_RGBA4_OES:
4856         {
4857             switch (angleFormat)
4858             {
4859                 case FormatID::R8G8B8A8_UNORM:
4860                     return PALETTE8_RGBA4_OES_to_R8G8B8A8_UNORM;
4861                 default:
4862                     break;
4863             }
4864             break;
4865         }
4866         case GL_PALETTE8_RGBA8_OES:
4867         {
4868             switch (angleFormat)
4869             {
4870                 case FormatID::R8G8B8A8_UNORM:
4871                     return PALETTE8_RGBA8_OES_to_R8G8B8A8_UNORM;
4872                 default:
4873                     break;
4874             }
4875             break;
4876         }
4877         case GL_R11F_G11F_B10F:
4878         {
4879             switch (angleFormat)
4880             {
4881                 case FormatID::R11G11B10_FLOAT:
4882                     return R11F_G11F_B10F_to_R11G11B10_FLOAT;
4883                 default:
4884                     break;
4885             }
4886             break;
4887         }
4888         case GL_R16F:
4889         {
4890             switch (angleFormat)
4891             {
4892                 case FormatID::R16_FLOAT:
4893                     return R16F_to_R16_FLOAT;
4894                 default:
4895                     break;
4896             }
4897             break;
4898         }
4899         case GL_R16I:
4900         {
4901             switch (angleFormat)
4902             {
4903                 case FormatID::R16_SINT:
4904                     return R16I_to_R16_SINT;
4905                 default:
4906                     break;
4907             }
4908             break;
4909         }
4910         case GL_R16UI:
4911         {
4912             switch (angleFormat)
4913             {
4914                 case FormatID::R16_UINT:
4915                     return R16UI_to_R16_UINT;
4916                 default:
4917                     break;
4918             }
4919             break;
4920         }
4921         case GL_R16_EXT:
4922         {
4923             switch (angleFormat)
4924             {
4925                 case FormatID::R16_UNORM:
4926                     return R16_EXT_to_R16_UNORM;
4927                 default:
4928                     break;
4929             }
4930             break;
4931         }
4932         case GL_R16_SNORM_EXT:
4933         {
4934             switch (angleFormat)
4935             {
4936                 case FormatID::R16_SNORM:
4937                     return R16_SNORM_EXT_to_R16_SNORM;
4938                 default:
4939                     break;
4940             }
4941             break;
4942         }
4943         case GL_R16_SSCALED_ANGLEX:
4944             return R16_SSCALED_ANGLEX_to_default;
4945         case GL_R16_USCALED_ANGLEX:
4946             return R16_USCALED_ANGLEX_to_default;
4947         case GL_R32F:
4948         {
4949             switch (angleFormat)
4950             {
4951                 case FormatID::R32_FLOAT:
4952                     return R32F_to_R32_FLOAT;
4953                 default:
4954                     break;
4955             }
4956             break;
4957         }
4958         case GL_R32I:
4959         {
4960             switch (angleFormat)
4961             {
4962                 case FormatID::R32_SINT:
4963                     return R32I_to_R32_SINT;
4964                 default:
4965                     break;
4966             }
4967             break;
4968         }
4969         case GL_R32UI:
4970         {
4971             switch (angleFormat)
4972             {
4973                 case FormatID::R32_UINT:
4974                     return R32UI_to_R32_UINT;
4975                 default:
4976                     break;
4977             }
4978             break;
4979         }
4980         case GL_R8:
4981         {
4982             switch (angleFormat)
4983             {
4984                 case FormatID::R8_UNORM:
4985                     return R8_to_R8_UNORM;
4986                 default:
4987                     break;
4988             }
4989             break;
4990         }
4991         case GL_R8I:
4992         {
4993             switch (angleFormat)
4994             {
4995                 case FormatID::R8_SINT:
4996                     return R8I_to_R8_SINT;
4997                 default:
4998                     break;
4999             }
5000             break;
5001         }
5002         case GL_R8UI:
5003         {
5004             switch (angleFormat)
5005             {
5006                 case FormatID::R8_UINT:
5007                     return R8UI_to_R8_UINT;
5008                 default:
5009                     break;
5010             }
5011             break;
5012         }
5013         case GL_R8_SNORM:
5014         {
5015             switch (angleFormat)
5016             {
5017                 case FormatID::R8_SNORM:
5018                     return R8_SNORM_to_R8_SNORM;
5019                 default:
5020                     break;
5021             }
5022             break;
5023         }
5024         case GL_R8_SSCALED_ANGLEX:
5025             return R8_SSCALED_ANGLEX_to_default;
5026         case GL_R8_USCALED_ANGLEX:
5027             return R8_USCALED_ANGLEX_to_default;
5028         case GL_RG16F:
5029         {
5030             switch (angleFormat)
5031             {
5032                 case FormatID::R16G16_FLOAT:
5033                     return RG16F_to_R16G16_FLOAT;
5034                 default:
5035                     break;
5036             }
5037             break;
5038         }
5039         case GL_RG16I:
5040         {
5041             switch (angleFormat)
5042             {
5043                 case FormatID::R16G16_SINT:
5044                     return RG16I_to_R16G16_SINT;
5045                 default:
5046                     break;
5047             }
5048             break;
5049         }
5050         case GL_RG16UI:
5051         {
5052             switch (angleFormat)
5053             {
5054                 case FormatID::R16G16_UINT:
5055                     return RG16UI_to_R16G16_UINT;
5056                 default:
5057                     break;
5058             }
5059             break;
5060         }
5061         case GL_RG16_EXT:
5062         {
5063             switch (angleFormat)
5064             {
5065                 case FormatID::R16G16_UNORM:
5066                     return RG16_EXT_to_R16G16_UNORM;
5067                 default:
5068                     break;
5069             }
5070             break;
5071         }
5072         case GL_RG16_SNORM_EXT:
5073         {
5074             switch (angleFormat)
5075             {
5076                 case FormatID::R16G16_SNORM:
5077                     return RG16_SNORM_EXT_to_R16G16_SNORM;
5078                 default:
5079                     break;
5080             }
5081             break;
5082         }
5083         case GL_RG16_SSCALED_ANGLEX:
5084             return RG16_SSCALED_ANGLEX_to_default;
5085         case GL_RG16_USCALED_ANGLEX:
5086             return RG16_USCALED_ANGLEX_to_default;
5087         case GL_RG32F:
5088         {
5089             switch (angleFormat)
5090             {
5091                 case FormatID::R32G32_FLOAT:
5092                     return RG32F_to_R32G32_FLOAT;
5093                 default:
5094                     break;
5095             }
5096             break;
5097         }
5098         case GL_RG32I:
5099         {
5100             switch (angleFormat)
5101             {
5102                 case FormatID::R32G32_SINT:
5103                     return RG32I_to_R32G32_SINT;
5104                 default:
5105                     break;
5106             }
5107             break;
5108         }
5109         case GL_RG32UI:
5110         {
5111             switch (angleFormat)
5112             {
5113                 case FormatID::R32G32_UINT:
5114                     return RG32UI_to_R32G32_UINT;
5115                 default:
5116                     break;
5117             }
5118             break;
5119         }
5120         case GL_RG8:
5121         {
5122             switch (angleFormat)
5123             {
5124                 case FormatID::R8G8_UNORM:
5125                     return RG8_to_R8G8_UNORM;
5126                 default:
5127                     break;
5128             }
5129             break;
5130         }
5131         case GL_RG8I:
5132         {
5133             switch (angleFormat)
5134             {
5135                 case FormatID::R8G8_SINT:
5136                     return RG8I_to_R8G8_SINT;
5137                 default:
5138                     break;
5139             }
5140             break;
5141         }
5142         case GL_RG8UI:
5143         {
5144             switch (angleFormat)
5145             {
5146                 case FormatID::R8G8_UINT:
5147                     return RG8UI_to_R8G8_UINT;
5148                 default:
5149                     break;
5150             }
5151             break;
5152         }
5153         case GL_RG8_SNORM:
5154         {
5155             switch (angleFormat)
5156             {
5157                 case FormatID::R8G8_SNORM:
5158                     return RG8_SNORM_to_R8G8_SNORM;
5159                 default:
5160                     break;
5161             }
5162             break;
5163         }
5164         case GL_RG8_SSCALED_ANGLEX:
5165             return RG8_SSCALED_ANGLEX_to_default;
5166         case GL_RG8_USCALED_ANGLEX:
5167             return RG8_USCALED_ANGLEX_to_default;
5168         case GL_RGB:
5169             return RGB_to_default;
5170         case GL_RGB10_A2:
5171         {
5172             switch (angleFormat)
5173             {
5174                 case FormatID::R10G10B10A2_UNORM:
5175                     return RGB10_A2_to_R10G10B10A2_UNORM;
5176                 default:
5177                     break;
5178             }
5179             break;
5180         }
5181         case GL_RGB10_A2UI:
5182         {
5183             switch (angleFormat)
5184             {
5185                 case FormatID::R10G10B10A2_UINT:
5186                     return RGB10_A2UI_to_R10G10B10A2_UINT;
5187                 default:
5188                     break;
5189             }
5190             break;
5191         }
5192         case GL_RGB10_A2_SINT_ANGLEX:
5193         {
5194             switch (angleFormat)
5195             {
5196                 case FormatID::R10G10B10A2_SINT:
5197                     return RGB10_A2_SINT_ANGLEX_to_R10G10B10A2_SINT;
5198                 default:
5199                     break;
5200             }
5201             break;
5202         }
5203         case GL_RGB10_A2_SNORM_ANGLEX:
5204         {
5205             switch (angleFormat)
5206             {
5207                 case FormatID::R10G10B10A2_SNORM:
5208                     return RGB10_A2_SNORM_ANGLEX_to_R10G10B10A2_SNORM;
5209                 default:
5210                     break;
5211             }
5212             break;
5213         }
5214         case GL_RGB10_A2_SSCALED_ANGLEX:
5215             return RGB10_A2_SSCALED_ANGLEX_to_default;
5216         case GL_RGB10_A2_USCALED_ANGLEX:
5217             return RGB10_A2_USCALED_ANGLEX_to_default;
5218         case GL_RGB10_EXT:
5219         {
5220             switch (angleFormat)
5221             {
5222                 case FormatID::R10G10B10A2_UNORM:
5223                     return RGB10_EXT_to_R10G10B10A2_UNORM;
5224                 case FormatID::R10G10B10X2_UNORM:
5225                     return RGB10_EXT_to_R10G10B10X2_UNORM;
5226                 default:
5227                     break;
5228             }
5229             break;
5230         }
5231         case GL_RGB16F:
5232         {
5233             switch (angleFormat)
5234             {
5235                 case FormatID::R16G16B16A16_FLOAT:
5236                     return RGB16F_to_R16G16B16A16_FLOAT;
5237                 case FormatID::R16G16B16_FLOAT:
5238                     return RGB16F_to_R16G16B16_FLOAT;
5239                 default:
5240                     break;
5241             }
5242             break;
5243         }
5244         case GL_RGB16I:
5245         {
5246             switch (angleFormat)
5247             {
5248                 case FormatID::R16G16B16A16_SINT:
5249                     return RGB16I_to_R16G16B16A16_SINT;
5250                 case FormatID::R16G16B16_SINT:
5251                     return RGB16I_to_R16G16B16_SINT;
5252                 default:
5253                     break;
5254             }
5255             break;
5256         }
5257         case GL_RGB16UI:
5258         {
5259             switch (angleFormat)
5260             {
5261                 case FormatID::R16G16B16A16_UINT:
5262                     return RGB16UI_to_R16G16B16A16_UINT;
5263                 case FormatID::R16G16B16_UINT:
5264                     return RGB16UI_to_R16G16B16_UINT;
5265                 default:
5266                     break;
5267             }
5268             break;
5269         }
5270         case GL_RGB16_EXT:
5271         {
5272             switch (angleFormat)
5273             {
5274                 case FormatID::R16G16B16A16_UNORM:
5275                     return RGB16_EXT_to_R16G16B16A16_UNORM;
5276                 case FormatID::R16G16B16_UNORM:
5277                     return RGB16_EXT_to_R16G16B16_UNORM;
5278                 case FormatID::R32G32B32A32_FLOAT:
5279                     return RGB16_EXT_to_R32G32B32A32_FLOAT;
5280                 case FormatID::R32G32B32_FLOAT:
5281                     return RGB16_EXT_to_R32G32B32_FLOAT;
5282                 default:
5283                     break;
5284             }
5285             break;
5286         }
5287         case GL_RGB16_SNORM_EXT:
5288         {
5289             switch (angleFormat)
5290             {
5291                 case FormatID::R16G16B16A16_SNORM:
5292                     return RGB16_SNORM_EXT_to_R16G16B16A16_SNORM;
5293                 case FormatID::R16G16B16_SNORM:
5294                     return RGB16_SNORM_EXT_to_R16G16B16_SNORM;
5295                 case FormatID::R32G32B32A32_FLOAT:
5296                     return RGB16_SNORM_EXT_to_R32G32B32A32_FLOAT;
5297                 case FormatID::R32G32B32_FLOAT:
5298                     return RGB16_SNORM_EXT_to_R32G32B32_FLOAT;
5299                 default:
5300                     break;
5301             }
5302             break;
5303         }
5304         case GL_RGB16_SSCALED_ANGLEX:
5305             return RGB16_SSCALED_ANGLEX_to_default;
5306         case GL_RGB16_USCALED_ANGLEX:
5307             return RGB16_USCALED_ANGLEX_to_default;
5308         case GL_RGB32F:
5309         {
5310             switch (angleFormat)
5311             {
5312                 case FormatID::R32G32B32A32_FLOAT:
5313                     return RGB32F_to_R32G32B32A32_FLOAT;
5314                 case FormatID::R32G32B32_FLOAT:
5315                     return RGB32F_to_R32G32B32_FLOAT;
5316                 default:
5317                     break;
5318             }
5319             break;
5320         }
5321         case GL_RGB32I:
5322         {
5323             switch (angleFormat)
5324             {
5325                 case FormatID::R32G32B32A32_SINT:
5326                     return RGB32I_to_R32G32B32A32_SINT;
5327                 case FormatID::R32G32B32_SINT:
5328                     return RGB32I_to_R32G32B32_SINT;
5329                 default:
5330                     break;
5331             }
5332             break;
5333         }
5334         case GL_RGB32UI:
5335         {
5336             switch (angleFormat)
5337             {
5338                 case FormatID::R32G32B32A32_UINT:
5339                     return RGB32UI_to_R32G32B32A32_UINT;
5340                 case FormatID::R32G32B32_UINT:
5341                     return RGB32UI_to_R32G32B32_UINT;
5342                 default:
5343                     break;
5344             }
5345             break;
5346         }
5347         case GL_RGB565:
5348         {
5349             switch (angleFormat)
5350             {
5351                 case FormatID::B5G6R5_UNORM:
5352                     return RGB565_to_B5G6R5_UNORM;
5353                 case FormatID::R5G6B5_UNORM:
5354                     return RGB565_to_R5G6B5_UNORM;
5355                 case FormatID::R8G8B8A8_UNORM:
5356                     return RGB565_to_R8G8B8A8_UNORM;
5357                 default:
5358                     break;
5359             }
5360             break;
5361         }
5362         case GL_RGB5_A1:
5363         {
5364             switch (angleFormat)
5365             {
5366                 case FormatID::A1R5G5B5_UNORM:
5367                     return RGB5_A1_to_A1R5G5B5_UNORM;
5368                 case FormatID::B5G5R5A1_UNORM:
5369                     return RGB5_A1_to_B5G5R5A1_UNORM;
5370                 case FormatID::R5G5B5A1_UNORM:
5371                     return RGB5_A1_to_R5G5B5A1_UNORM;
5372                 case FormatID::R8G8B8A8_UNORM:
5373                     return RGB5_A1_to_R8G8B8A8_UNORM;
5374                 default:
5375                     break;
5376             }
5377             break;
5378         }
5379         case GL_RGB8:
5380         {
5381             switch (angleFormat)
5382             {
5383                 case FormatID::R8G8B8A8_UNORM:
5384                     return RGB8_to_R8G8B8A8_UNORM;
5385                 case FormatID::R8G8B8_UNORM:
5386                     return RGB8_to_R8G8B8_UNORM;
5387                 default:
5388                     break;
5389             }
5390             break;
5391         }
5392         case GL_RGB8I:
5393         {
5394             switch (angleFormat)
5395             {
5396                 case FormatID::R8G8B8A8_SINT:
5397                     return RGB8I_to_R8G8B8A8_SINT;
5398                 case FormatID::R8G8B8_SINT:
5399                     return RGB8I_to_R8G8B8_SINT;
5400                 default:
5401                     break;
5402             }
5403             break;
5404         }
5405         case GL_RGB8UI:
5406         {
5407             switch (angleFormat)
5408             {
5409                 case FormatID::R8G8B8A8_UINT:
5410                     return RGB8UI_to_R8G8B8A8_UINT;
5411                 case FormatID::R8G8B8_UINT:
5412                     return RGB8UI_to_R8G8B8_UINT;
5413                 default:
5414                     break;
5415             }
5416             break;
5417         }
5418         case GL_RGB8_SNORM:
5419         {
5420             switch (angleFormat)
5421             {
5422                 case FormatID::R8G8B8A8_SNORM:
5423                     return RGB8_SNORM_to_R8G8B8A8_SNORM;
5424                 case FormatID::R8G8B8_SNORM:
5425                     return RGB8_SNORM_to_R8G8B8_SNORM;
5426                 default:
5427                     break;
5428             }
5429             break;
5430         }
5431         case GL_RGB8_SSCALED_ANGLEX:
5432             return RGB8_SSCALED_ANGLEX_to_default;
5433         case GL_RGB8_USCALED_ANGLEX:
5434             return RGB8_USCALED_ANGLEX_to_default;
5435         case GL_RGB9_E5:
5436         {
5437             switch (angleFormat)
5438             {
5439                 case FormatID::R9G9B9E5_SHAREDEXP:
5440                     return RGB9_E5_to_R9G9B9E5_SHAREDEXP;
5441                 default:
5442                     break;
5443             }
5444             break;
5445         }
5446         case GL_RGBA:
5447             return RGBA_to_default;
5448         case GL_RGBA16F:
5449         {
5450             switch (angleFormat)
5451             {
5452                 case FormatID::R16G16B16A16_FLOAT:
5453                     return RGBA16F_to_R16G16B16A16_FLOAT;
5454                 default:
5455                     break;
5456             }
5457             break;
5458         }
5459         case GL_RGBA16I:
5460         {
5461             switch (angleFormat)
5462             {
5463                 case FormatID::R16G16B16A16_SINT:
5464                     return RGBA16I_to_R16G16B16A16_SINT;
5465                 default:
5466                     break;
5467             }
5468             break;
5469         }
5470         case GL_RGBA16UI:
5471         {
5472             switch (angleFormat)
5473             {
5474                 case FormatID::R16G16B16A16_UINT:
5475                     return RGBA16UI_to_R16G16B16A16_UINT;
5476                 default:
5477                     break;
5478             }
5479             break;
5480         }
5481         case GL_RGBA16_EXT:
5482         {
5483             switch (angleFormat)
5484             {
5485                 case FormatID::R16G16B16A16_UNORM:
5486                     return RGBA16_EXT_to_R16G16B16A16_UNORM;
5487                 default:
5488                     break;
5489             }
5490             break;
5491         }
5492         case GL_RGBA16_SNORM_EXT:
5493         {
5494             switch (angleFormat)
5495             {
5496                 case FormatID::R16G16B16A16_SNORM:
5497                     return RGBA16_SNORM_EXT_to_R16G16B16A16_SNORM;
5498                 default:
5499                     break;
5500             }
5501             break;
5502         }
5503         case GL_RGBA16_SSCALED_ANGLEX:
5504             return RGBA16_SSCALED_ANGLEX_to_default;
5505         case GL_RGBA16_USCALED_ANGLEX:
5506             return RGBA16_USCALED_ANGLEX_to_default;
5507         case GL_RGBA32F:
5508         {
5509             switch (angleFormat)
5510             {
5511                 case FormatID::R32G32B32A32_FLOAT:
5512                     return RGBA32F_to_R32G32B32A32_FLOAT;
5513                 default:
5514                     break;
5515             }
5516             break;
5517         }
5518         case GL_RGBA32I:
5519         {
5520             switch (angleFormat)
5521             {
5522                 case FormatID::R32G32B32A32_SINT:
5523                     return RGBA32I_to_R32G32B32A32_SINT;
5524                 default:
5525                     break;
5526             }
5527             break;
5528         }
5529         case GL_RGBA32UI:
5530         {
5531             switch (angleFormat)
5532             {
5533                 case FormatID::R32G32B32A32_UINT:
5534                     return RGBA32UI_to_R32G32B32A32_UINT;
5535                 default:
5536                     break;
5537             }
5538             break;
5539         }
5540         case GL_RGBA4:
5541         {
5542             switch (angleFormat)
5543             {
5544                 case FormatID::B4G4R4A4_UNORM:
5545                     return RGBA4_to_B4G4R4A4_UNORM;
5546                 case FormatID::R4G4B4A4_UNORM:
5547                     return RGBA4_to_R4G4B4A4_UNORM;
5548                 case FormatID::R8G8B8A8_UNORM:
5549                     return RGBA4_to_R8G8B8A8_UNORM;
5550                 default:
5551                     break;
5552             }
5553             break;
5554         }
5555         case GL_RGBA8:
5556         {
5557             switch (angleFormat)
5558             {
5559                 case FormatID::R8G8B8A8_UNORM:
5560                     return RGBA8_to_R8G8B8A8_UNORM;
5561                 default:
5562                     break;
5563             }
5564             break;
5565         }
5566         case GL_RGBA8I:
5567         {
5568             switch (angleFormat)
5569             {
5570                 case FormatID::R8G8B8A8_SINT:
5571                     return RGBA8I_to_R8G8B8A8_SINT;
5572                 default:
5573                     break;
5574             }
5575             break;
5576         }
5577         case GL_RGBA8UI:
5578         {
5579             switch (angleFormat)
5580             {
5581                 case FormatID::R8G8B8A8_UINT:
5582                     return RGBA8UI_to_R8G8B8A8_UINT;
5583                 default:
5584                     break;
5585             }
5586             break;
5587         }
5588         case GL_RGBA8_SNORM:
5589         {
5590             switch (angleFormat)
5591             {
5592                 case FormatID::R8G8B8A8_SNORM:
5593                     return RGBA8_SNORM_to_R8G8B8A8_SNORM;
5594                 default:
5595                     break;
5596             }
5597             break;
5598         }
5599         case GL_RGBA8_SSCALED_ANGLEX:
5600             return RGBA8_SSCALED_ANGLEX_to_default;
5601         case GL_RGBA8_USCALED_ANGLEX:
5602             return RGBA8_USCALED_ANGLEX_to_default;
5603         case GL_RGBX8_ANGLE:
5604         {
5605             switch (angleFormat)
5606             {
5607                 case FormatID::R8G8B8A8_UNORM:
5608                     return RGBX8_ANGLE_to_R8G8B8A8_UNORM;
5609                 case FormatID::R8G8B8X8_UNORM:
5610                     return RGBX8_ANGLE_to_R8G8B8X8_UNORM;
5611                 default:
5612                     break;
5613             }
5614             break;
5615         }
5616         case GL_RGBX8_SRGB_ANGLEX:
5617         {
5618             switch (angleFormat)
5619             {
5620                 case FormatID::R8G8B8A8_UNORM_SRGB:
5621                     return RGBX8_SRGB_ANGLEX_to_R8G8B8A8_UNORM_SRGB;
5622                 case FormatID::R8G8B8X8_UNORM_SRGB:
5623                     return RGBX8_SRGB_ANGLEX_to_R8G8B8X8_UNORM_SRGB;
5624                 default:
5625                     break;
5626             }
5627             break;
5628         }
5629         case GL_SR8_EXT:
5630         {
5631             switch (angleFormat)
5632             {
5633                 case FormatID::R8_UNORM_SRGB:
5634                     return SR8_EXT_to_R8_UNORM_SRGB;
5635                 default:
5636                     break;
5637             }
5638             break;
5639         }
5640         case GL_SRG8_EXT:
5641         {
5642             switch (angleFormat)
5643             {
5644                 case FormatID::R8G8_UNORM_SRGB:
5645                     return SRG8_EXT_to_R8G8_UNORM_SRGB;
5646                 default:
5647                     break;
5648             }
5649             break;
5650         }
5651         case GL_SRGB8:
5652         {
5653             switch (angleFormat)
5654             {
5655                 case FormatID::R8G8B8A8_UNORM_SRGB:
5656                     return SRGB8_to_R8G8B8A8_UNORM_SRGB;
5657                 case FormatID::R8G8B8_UNORM_SRGB:
5658                     return SRGB8_to_R8G8B8_UNORM_SRGB;
5659                 default:
5660                     break;
5661             }
5662             break;
5663         }
5664         case GL_SRGB8_ALPHA8:
5665         {
5666             switch (angleFormat)
5667             {
5668                 case FormatID::R8G8B8A8_UNORM_SRGB:
5669                     return SRGB8_ALPHA8_to_R8G8B8A8_UNORM_SRGB;
5670                 default:
5671                     break;
5672             }
5673             break;
5674         }
5675         case GL_STENCIL_INDEX8:
5676         {
5677             switch (angleFormat)
5678             {
5679                 case FormatID::D24_UNORM_S8_UINT:
5680                     return STENCIL_INDEX8_to_D24_UNORM_S8_UINT;
5681                 case FormatID::S8_UINT:
5682                     return STENCIL_INDEX8_to_S8_UINT;
5683                 default:
5684                     return STENCIL_INDEX8_to_default;
5685             }
5686         }
5687 
5688         default:
5689             break;
5690     }
5691     // clang-format on
5692     ASSERT(internalFormat == GL_NONE || angleFormat == angle::FormatID::NONE);
5693     static LoadFunctionMap emptyLoadFunctionsMap;
5694     return emptyLoadFunctionsMap;
5695 
5696 }  // GetLoadFunctionsMap
5697 
5698 }  // namespace angle
5699