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