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