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