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