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