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