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