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