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