1 // GENERATED FILE - DO NOT EDIT. 2 // Generated by gen_format_map.py using data from format_map_data.json. 3 // ES3 format info from es3_format_type_combinations.json. 4 // 5 // Copyright 2020 The ANGLE Project Authors. All rights reserved. 6 // Use of this source code is governed by a BSD-style license that can be 7 // found in the LICENSE file. 8 // 9 // format_map: 10 // Determining the sized internal format from a (format,type) pair. 11 // Also check es3 format combinations for validity. 12 13 #include "angle_gl.h" 14 #include "common/debug.h" 15 16 namespace gl 17 { 18 GetSizedFormatInternal(GLenum format,GLenum type)19GLenum GetSizedFormatInternal(GLenum format, GLenum type) 20 { 21 switch (format) 22 { 23 case GL_ALPHA: 24 switch (type) 25 { 26 case GL_FLOAT: 27 return GL_ALPHA32F_EXT; 28 case GL_HALF_FLOAT: 29 return GL_ALPHA16F_EXT; 30 case GL_HALF_FLOAT_OES: 31 return GL_ALPHA16F_EXT; 32 case GL_UNSIGNED_BYTE: 33 return GL_ALPHA8_EXT; 34 default: 35 break; 36 } 37 break; 38 39 case GL_BGRA_EXT: 40 switch (type) 41 { 42 case GL_UNSIGNED_BYTE: 43 return GL_BGRA8_EXT; 44 case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: 45 return GL_BGR5_A1_ANGLEX; 46 case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: 47 return GL_BGRA4_ANGLEX; 48 case GL_UNSIGNED_SHORT_5_6_5: 49 return GL_BGR565_ANGLEX; 50 default: 51 break; 52 } 53 break; 54 55 case GL_COMPRESSED_RED_GREEN_RGTC2_EXT: 56 switch (type) 57 { 58 case GL_UNSIGNED_BYTE: 59 return GL_COMPRESSED_RED_GREEN_RGTC2_EXT; 60 default: 61 break; 62 } 63 break; 64 65 case GL_COMPRESSED_RED_RGTC1_EXT: 66 switch (type) 67 { 68 case GL_UNSIGNED_BYTE: 69 return GL_COMPRESSED_RED_RGTC1_EXT; 70 default: 71 break; 72 } 73 break; 74 75 case GL_COMPRESSED_RGBA_BPTC_UNORM_EXT: 76 switch (type) 77 { 78 case GL_UNSIGNED_BYTE: 79 return GL_COMPRESSED_RGBA_BPTC_UNORM_EXT; 80 default: 81 break; 82 } 83 break; 84 85 case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 86 switch (type) 87 { 88 case GL_UNSIGNED_BYTE: 89 return GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; 90 default: 91 break; 92 } 93 break; 94 95 case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 96 switch (type) 97 { 98 case GL_UNSIGNED_BYTE: 99 return GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; 100 default: 101 break; 102 } 103 break; 104 105 case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: 106 switch (type) 107 { 108 case GL_UNSIGNED_BYTE: 109 return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; 110 default: 111 break; 112 } 113 break; 114 115 case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: 116 switch (type) 117 { 118 case GL_UNSIGNED_BYTE: 119 return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; 120 default: 121 break; 122 } 123 break; 124 125 case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: 126 switch (type) 127 { 128 case GL_UNSIGNED_BYTE: 129 return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; 130 default: 131 break; 132 } 133 break; 134 135 case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: 136 switch (type) 137 { 138 case GL_UNSIGNED_BYTE: 139 return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; 140 default: 141 break; 142 } 143 break; 144 145 case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: 146 switch (type) 147 { 148 case GL_UNSIGNED_BYTE: 149 return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT; 150 default: 151 break; 152 } 153 break; 154 155 case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 156 switch (type) 157 { 158 case GL_UNSIGNED_BYTE: 159 return GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG; 160 default: 161 break; 162 } 163 break; 164 165 case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 166 switch (type) 167 { 168 case GL_UNSIGNED_BYTE: 169 return GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; 170 default: 171 break; 172 } 173 break; 174 175 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: 176 switch (type) 177 { 178 case GL_UNSIGNED_BYTE: 179 return GL_COMPRESSED_RGB_S3TC_DXT1_EXT; 180 default: 181 break; 182 } 183 break; 184 185 case GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 186 switch (type) 187 { 188 case GL_UNSIGNED_BYTE: 189 return GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT; 190 default: 191 break; 192 } 193 break; 194 195 case GL_COMPRESSED_SIGNED_RED_RGTC1_EXT: 196 switch (type) 197 { 198 case GL_UNSIGNED_BYTE: 199 return GL_COMPRESSED_SIGNED_RED_RGTC1_EXT; 200 default: 201 break; 202 } 203 break; 204 205 case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: 206 switch (type) 207 { 208 case GL_UNSIGNED_BYTE: 209 return GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT; 210 default: 211 break; 212 } 213 break; 214 215 case GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT: 216 switch (type) 217 { 218 case GL_UNSIGNED_BYTE: 219 return GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT; 220 default: 221 break; 222 } 223 break; 224 225 case GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT: 226 switch (type) 227 { 228 case GL_UNSIGNED_BYTE: 229 return GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT; 230 default: 231 break; 232 } 233 break; 234 235 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 236 switch (type) 237 { 238 case GL_UNSIGNED_BYTE: 239 return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; 240 default: 241 break; 242 } 243 break; 244 245 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 246 switch (type) 247 { 248 case GL_UNSIGNED_BYTE: 249 return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; 250 default: 251 break; 252 } 253 break; 254 255 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 256 switch (type) 257 { 258 case GL_UNSIGNED_BYTE: 259 return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; 260 default: 261 break; 262 } 263 break; 264 265 case GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT: 266 switch (type) 267 { 268 case GL_UNSIGNED_BYTE: 269 return GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT; 270 default: 271 break; 272 } 273 break; 274 275 case GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT: 276 switch (type) 277 { 278 case GL_UNSIGNED_BYTE: 279 return GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT; 280 default: 281 break; 282 } 283 break; 284 285 case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: 286 switch (type) 287 { 288 case GL_UNSIGNED_BYTE: 289 return GL_COMPRESSED_SRGB_S3TC_DXT1_EXT; 290 default: 291 break; 292 } 293 break; 294 295 case GL_DEPTH_COMPONENT: 296 switch (type) 297 { 298 case GL_FLOAT: 299 return GL_DEPTH_COMPONENT32F; 300 case GL_UNSIGNED_INT: 301 return GL_DEPTH_COMPONENT32_OES; 302 case GL_UNSIGNED_INT_24_8: 303 return GL_DEPTH24_STENCIL8; 304 case GL_UNSIGNED_SHORT: 305 return GL_DEPTH_COMPONENT16; 306 default: 307 break; 308 } 309 break; 310 311 case GL_DEPTH_STENCIL: 312 switch (type) 313 { 314 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: 315 return GL_DEPTH32F_STENCIL8; 316 case GL_UNSIGNED_INT_24_8: 317 return GL_DEPTH24_STENCIL8; 318 default: 319 break; 320 } 321 break; 322 323 case GL_LUMINANCE: 324 switch (type) 325 { 326 case GL_FLOAT: 327 return GL_LUMINANCE32F_EXT; 328 case GL_HALF_FLOAT: 329 return GL_LUMINANCE16F_EXT; 330 case GL_HALF_FLOAT_OES: 331 return GL_LUMINANCE16F_EXT; 332 case GL_UNSIGNED_BYTE: 333 return GL_LUMINANCE8_EXT; 334 default: 335 break; 336 } 337 break; 338 339 case GL_LUMINANCE_ALPHA: 340 switch (type) 341 { 342 case GL_FLOAT: 343 return GL_LUMINANCE_ALPHA32F_EXT; 344 case GL_HALF_FLOAT: 345 return GL_LUMINANCE_ALPHA16F_EXT; 346 case GL_HALF_FLOAT_OES: 347 return GL_LUMINANCE_ALPHA16F_EXT; 348 case GL_UNSIGNED_BYTE: 349 return GL_LUMINANCE8_ALPHA8_EXT; 350 default: 351 break; 352 } 353 break; 354 355 case GL_RED: 356 switch (type) 357 { 358 case GL_BYTE: 359 return GL_R8_SNORM; 360 case GL_FLOAT: 361 return GL_R32F; 362 case GL_HALF_FLOAT: 363 return GL_R16F; 364 case GL_HALF_FLOAT_OES: 365 return GL_R16F; 366 case GL_SHORT: 367 return GL_R16_SNORM_EXT; 368 case GL_UNSIGNED_BYTE: 369 return GL_R8; 370 case GL_UNSIGNED_SHORT: 371 return GL_R16_EXT; 372 default: 373 break; 374 } 375 break; 376 377 case GL_RED_INTEGER: 378 switch (type) 379 { 380 case GL_BYTE: 381 return GL_R8I; 382 case GL_INT: 383 return GL_R32I; 384 case GL_SHORT: 385 return GL_R16I; 386 case GL_UNSIGNED_BYTE: 387 return GL_R8UI; 388 case GL_UNSIGNED_INT: 389 return GL_R32UI; 390 case GL_UNSIGNED_SHORT: 391 return GL_R16UI; 392 default: 393 break; 394 } 395 break; 396 397 case GL_RG: 398 switch (type) 399 { 400 case GL_BYTE: 401 return GL_RG8_SNORM; 402 case GL_FLOAT: 403 return GL_RG32F; 404 case GL_HALF_FLOAT: 405 return GL_RG16F; 406 case GL_HALF_FLOAT_OES: 407 return GL_RG16F; 408 case GL_SHORT: 409 return GL_RG16_SNORM_EXT; 410 case GL_UNSIGNED_BYTE: 411 return GL_RG8; 412 case GL_UNSIGNED_SHORT: 413 return GL_RG16_EXT; 414 default: 415 break; 416 } 417 break; 418 419 case GL_RGB: 420 switch (type) 421 { 422 case GL_BYTE: 423 return GL_RGB8_SNORM; 424 case GL_FLOAT: 425 return GL_RGB32F; 426 case GL_HALF_FLOAT: 427 return GL_RGB16F; 428 case GL_HALF_FLOAT_OES: 429 return GL_RGB16F; 430 case GL_SHORT: 431 return GL_RGB16_SNORM_EXT; 432 case GL_UNSIGNED_BYTE: 433 return GL_RGB8; 434 case GL_UNSIGNED_INT_10F_11F_11F_REV: 435 return GL_R11F_G11F_B10F; 436 case GL_UNSIGNED_INT_2_10_10_10_REV: 437 return GL_RGB10_UNORM_ANGLEX; 438 case GL_UNSIGNED_INT_5_9_9_9_REV: 439 return GL_RGB9_E5; 440 case GL_UNSIGNED_SHORT: 441 return GL_RGB16_EXT; 442 case GL_UNSIGNED_SHORT_5_6_5: 443 return GL_RGB565; 444 default: 445 break; 446 } 447 break; 448 449 case GL_RGBA: 450 switch (type) 451 { 452 case GL_BYTE: 453 return GL_RGBA8_SNORM; 454 case GL_FLOAT: 455 return GL_RGBA32F; 456 case GL_HALF_FLOAT: 457 return GL_RGBA16F; 458 case GL_HALF_FLOAT_OES: 459 return GL_RGBA16F; 460 case GL_SHORT: 461 return GL_RGBA16_SNORM_EXT; 462 case GL_UNSIGNED_BYTE: 463 return GL_RGBA8; 464 case GL_UNSIGNED_INT_2_10_10_10_REV: 465 return GL_RGB10_A2; 466 case GL_UNSIGNED_SHORT: 467 return GL_RGBA16_EXT; 468 case GL_UNSIGNED_SHORT_4_4_4_4: 469 return GL_RGBA4; 470 case GL_UNSIGNED_SHORT_5_5_5_1: 471 return GL_RGB5_A1; 472 default: 473 break; 474 } 475 break; 476 477 case GL_RGBA_INTEGER: 478 switch (type) 479 { 480 case GL_BYTE: 481 return GL_RGBA8I; 482 case GL_INT: 483 return GL_RGBA32I; 484 case GL_SHORT: 485 return GL_RGBA16I; 486 case GL_UNSIGNED_BYTE: 487 return GL_RGBA8UI; 488 case GL_UNSIGNED_INT: 489 return GL_RGBA32UI; 490 case GL_UNSIGNED_INT_2_10_10_10_REV: 491 return GL_RGB10_A2UI; 492 case GL_UNSIGNED_SHORT: 493 return GL_RGBA16UI; 494 default: 495 break; 496 } 497 break; 498 499 case GL_RGB_INTEGER: 500 switch (type) 501 { 502 case GL_BYTE: 503 return GL_RGB8I; 504 case GL_INT: 505 return GL_RGB32I; 506 case GL_SHORT: 507 return GL_RGB16I; 508 case GL_UNSIGNED_BYTE: 509 return GL_RGB8UI; 510 case GL_UNSIGNED_INT: 511 return GL_RGB32UI; 512 case GL_UNSIGNED_SHORT: 513 return GL_RGB16UI; 514 default: 515 break; 516 } 517 break; 518 519 case GL_RG_INTEGER: 520 switch (type) 521 { 522 case GL_BYTE: 523 return GL_RG8I; 524 case GL_INT: 525 return GL_RG32I; 526 case GL_SHORT: 527 return GL_RG16I; 528 case GL_UNSIGNED_BYTE: 529 return GL_RG8UI; 530 case GL_UNSIGNED_INT: 531 return GL_RG32UI; 532 case GL_UNSIGNED_SHORT: 533 return GL_RG16UI; 534 default: 535 break; 536 } 537 break; 538 539 case GL_SRGB_ALPHA_EXT: 540 switch (type) 541 { 542 case GL_UNSIGNED_BYTE: 543 return GL_SRGB8_ALPHA8; 544 default: 545 break; 546 } 547 break; 548 549 case GL_SRGB_EXT: 550 switch (type) 551 { 552 case GL_UNSIGNED_BYTE: 553 return GL_SRGB8; 554 default: 555 break; 556 } 557 break; 558 559 case GL_STENCIL: 560 switch (type) 561 { 562 case GL_UNSIGNED_BYTE: 563 return GL_STENCIL_INDEX8; 564 default: 565 break; 566 } 567 break; 568 569 case GL_STENCIL_INDEX_OES: 570 switch (type) 571 { 572 case GL_UNSIGNED_BYTE: 573 return GL_STENCIL_INDEX8; 574 default: 575 break; 576 } 577 break; 578 579 case GL_NONE: 580 return GL_NONE; 581 582 default: 583 break; 584 } 585 586 return GL_NONE; 587 } 588 ValidES3Format(GLenum format)589bool ValidES3Format(GLenum format) 590 { 591 switch (format) 592 { 593 case GL_ALPHA: 594 case GL_BGRA_EXT: 595 case GL_DEPTH_COMPONENT: 596 case GL_DEPTH_STENCIL: 597 case GL_LUMINANCE: 598 case GL_LUMINANCE_ALPHA: 599 case GL_RED: 600 case GL_RED_INTEGER: 601 case GL_RG: 602 case GL_RGB: 603 case GL_RGBA: 604 case GL_RGBA_INTEGER: 605 case GL_RGB_INTEGER: 606 case GL_RG_INTEGER: 607 case GL_SRGB_ALPHA_EXT: 608 case GL_SRGB_EXT: 609 return true; 610 611 default: 612 return false; 613 } 614 } 615 ValidES3Type(GLenum type)616bool ValidES3Type(GLenum type) 617 { 618 switch (type) 619 { 620 case GL_BYTE: 621 case GL_FLOAT: 622 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: 623 case GL_HALF_FLOAT: 624 case GL_HALF_FLOAT_OES: 625 case GL_INT: 626 case GL_SHORT: 627 case GL_UNSIGNED_BYTE: 628 case GL_UNSIGNED_INT: 629 case GL_UNSIGNED_INT_10F_11F_11F_REV: 630 case GL_UNSIGNED_INT_24_8: 631 case GL_UNSIGNED_INT_2_10_10_10_REV: 632 case GL_UNSIGNED_INT_5_9_9_9_REV: 633 case GL_UNSIGNED_SHORT: 634 case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: 635 case GL_UNSIGNED_SHORT_4_4_4_4: 636 case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: 637 case GL_UNSIGNED_SHORT_5_5_5_1: 638 case GL_UNSIGNED_SHORT_5_6_5: 639 return true; 640 641 default: 642 return false; 643 } 644 } 645 ValidES3FormatCombination(GLenum format,GLenum type,GLenum internalFormat)646bool ValidES3FormatCombination(GLenum format, GLenum type, GLenum internalFormat) 647 { 648 ASSERT(ValidES3Format(format) && ValidES3Type(type)); 649 650 switch (format) 651 { 652 case GL_RGB_INTEGER: 653 switch (type) 654 { 655 case GL_INT: 656 { 657 switch (internalFormat) 658 { 659 case GL_RGB32I: 660 return true; 661 default: 662 break; 663 } 664 break; 665 } 666 case GL_UNSIGNED_SHORT: 667 { 668 switch (internalFormat) 669 { 670 case GL_RGB16UI: 671 return true; 672 default: 673 break; 674 } 675 break; 676 } 677 case GL_SHORT: 678 { 679 switch (internalFormat) 680 { 681 case GL_RGB16I: 682 return true; 683 default: 684 break; 685 } 686 break; 687 } 688 case GL_UNSIGNED_BYTE: 689 { 690 switch (internalFormat) 691 { 692 case GL_RGB8UI: 693 return true; 694 default: 695 break; 696 } 697 break; 698 } 699 case GL_BYTE: 700 { 701 switch (internalFormat) 702 { 703 case GL_RGB8I: 704 return true; 705 default: 706 break; 707 } 708 break; 709 } 710 case GL_UNSIGNED_INT: 711 { 712 switch (internalFormat) 713 { 714 case GL_RGB32UI: 715 return true; 716 default: 717 break; 718 } 719 break; 720 } 721 default: 722 break; 723 } 724 break; 725 726 case GL_RGBA_INTEGER: 727 switch (type) 728 { 729 case GL_INT: 730 { 731 switch (internalFormat) 732 { 733 case GL_RGBA32I: 734 return true; 735 default: 736 break; 737 } 738 break; 739 } 740 case GL_UNSIGNED_SHORT: 741 { 742 switch (internalFormat) 743 { 744 case GL_RGBA16UI: 745 return true; 746 default: 747 break; 748 } 749 break; 750 } 751 case GL_UNSIGNED_INT_2_10_10_10_REV: 752 { 753 switch (internalFormat) 754 { 755 case GL_RGB10_A2UI: 756 return true; 757 default: 758 break; 759 } 760 break; 761 } 762 case GL_SHORT: 763 { 764 switch (internalFormat) 765 { 766 case GL_RGBA16I: 767 return true; 768 default: 769 break; 770 } 771 break; 772 } 773 case GL_UNSIGNED_BYTE: 774 { 775 switch (internalFormat) 776 { 777 case GL_RGBA8UI: 778 return true; 779 default: 780 break; 781 } 782 break; 783 } 784 case GL_BYTE: 785 { 786 switch (internalFormat) 787 { 788 case GL_RGBA8I: 789 return true; 790 default: 791 break; 792 } 793 break; 794 } 795 case GL_UNSIGNED_INT: 796 { 797 switch (internalFormat) 798 { 799 case GL_RGBA32UI: 800 return true; 801 default: 802 break; 803 } 804 break; 805 } 806 default: 807 break; 808 } 809 break; 810 811 case GL_RGB: 812 switch (type) 813 { 814 case GL_UNSIGNED_INT_10F_11F_11F_REV: 815 { 816 switch (internalFormat) 817 { 818 case GL_R11F_G11F_B10F: 819 return true; 820 default: 821 break; 822 } 823 break; 824 } 825 case GL_UNSIGNED_SHORT: 826 { 827 switch (internalFormat) 828 { 829 case GL_RGB16_EXT: 830 return true; 831 default: 832 break; 833 } 834 break; 835 } 836 case GL_UNSIGNED_INT_2_10_10_10_REV: 837 { 838 switch (internalFormat) 839 { 840 case GL_RGB: 841 return true; 842 default: 843 break; 844 } 845 break; 846 } 847 case GL_SHORT: 848 { 849 switch (internalFormat) 850 { 851 case GL_RGB16_SNORM_EXT: 852 return true; 853 default: 854 break; 855 } 856 break; 857 } 858 case GL_FLOAT: 859 { 860 switch (internalFormat) 861 { 862 case GL_RGB: 863 case GL_RGB32F: 864 case GL_RGB16F: 865 case GL_R11F_G11F_B10F: 866 case GL_RGB9_E5: 867 return true; 868 default: 869 break; 870 } 871 break; 872 } 873 case GL_UNSIGNED_SHORT_5_6_5: 874 { 875 switch (internalFormat) 876 { 877 case GL_RGB: 878 case GL_RGB565: 879 return true; 880 default: 881 break; 882 } 883 break; 884 } 885 case GL_HALF_FLOAT_OES: 886 { 887 switch (internalFormat) 888 { 889 case GL_RGB: 890 case GL_RGB16F: 891 case GL_R11F_G11F_B10F: 892 case GL_RGB9_E5: 893 return true; 894 default: 895 break; 896 } 897 break; 898 } 899 case GL_HALF_FLOAT: 900 { 901 switch (internalFormat) 902 { 903 case GL_RGB16F: 904 case GL_R11F_G11F_B10F: 905 case GL_RGB9_E5: 906 return true; 907 default: 908 break; 909 } 910 break; 911 } 912 case GL_UNSIGNED_BYTE: 913 { 914 switch (internalFormat) 915 { 916 case GL_RGB: 917 case GL_RGB8: 918 case GL_RGB565: 919 case GL_SRGB8: 920 return true; 921 default: 922 break; 923 } 924 break; 925 } 926 case GL_BYTE: 927 { 928 switch (internalFormat) 929 { 930 case GL_RGB8_SNORM: 931 return true; 932 default: 933 break; 934 } 935 break; 936 } 937 case GL_UNSIGNED_INT_5_9_9_9_REV: 938 { 939 switch (internalFormat) 940 { 941 case GL_RGB9_E5: 942 return true; 943 default: 944 break; 945 } 946 break; 947 } 948 default: 949 break; 950 } 951 break; 952 953 case GL_LUMINANCE_ALPHA: 954 switch (type) 955 { 956 case GL_HALF_FLOAT: 957 { 958 switch (internalFormat) 959 { 960 case GL_LUMINANCE_ALPHA16F_EXT: 961 case GL_LUMINANCE_ALPHA: 962 return true; 963 default: 964 break; 965 } 966 break; 967 } 968 case GL_UNSIGNED_BYTE: 969 { 970 switch (internalFormat) 971 { 972 case GL_LUMINANCE_ALPHA: 973 case GL_LUMINANCE8_ALPHA8_EXT: 974 return true; 975 default: 976 break; 977 } 978 break; 979 } 980 case GL_FLOAT: 981 { 982 switch (internalFormat) 983 { 984 case GL_LUMINANCE_ALPHA: 985 case GL_LUMINANCE_ALPHA32F_EXT: 986 return true; 987 default: 988 break; 989 } 990 break; 991 } 992 case GL_HALF_FLOAT_OES: 993 { 994 switch (internalFormat) 995 { 996 case GL_LUMINANCE_ALPHA16F_EXT: 997 case GL_LUMINANCE_ALPHA: 998 return true; 999 default: 1000 break; 1001 } 1002 break; 1003 } 1004 default: 1005 break; 1006 } 1007 break; 1008 1009 case GL_ALPHA: 1010 switch (type) 1011 { 1012 case GL_HALF_FLOAT: 1013 { 1014 switch (internalFormat) 1015 { 1016 case GL_ALPHA16F_EXT: 1017 case GL_ALPHA: 1018 return true; 1019 default: 1020 break; 1021 } 1022 break; 1023 } 1024 case GL_UNSIGNED_BYTE: 1025 { 1026 switch (internalFormat) 1027 { 1028 case GL_ALPHA: 1029 case GL_ALPHA8_EXT: 1030 return true; 1031 default: 1032 break; 1033 } 1034 break; 1035 } 1036 case GL_FLOAT: 1037 { 1038 switch (internalFormat) 1039 { 1040 case GL_ALPHA: 1041 case GL_ALPHA32F_EXT: 1042 return true; 1043 default: 1044 break; 1045 } 1046 break; 1047 } 1048 case GL_HALF_FLOAT_OES: 1049 { 1050 switch (internalFormat) 1051 { 1052 case GL_ALPHA16F_EXT: 1053 case GL_ALPHA: 1054 return true; 1055 default: 1056 break; 1057 } 1058 break; 1059 } 1060 default: 1061 break; 1062 } 1063 break; 1064 1065 case GL_RGBA: 1066 switch (type) 1067 { 1068 case GL_UNSIGNED_SHORT: 1069 { 1070 switch (internalFormat) 1071 { 1072 case GL_RGBA16_EXT: 1073 return true; 1074 default: 1075 break; 1076 } 1077 break; 1078 } 1079 case GL_UNSIGNED_INT_2_10_10_10_REV: 1080 { 1081 switch (internalFormat) 1082 { 1083 case GL_RGBA: 1084 case GL_RGB10_A2: 1085 case GL_RGB5_A1: 1086 return true; 1087 default: 1088 break; 1089 } 1090 break; 1091 } 1092 case GL_SHORT: 1093 { 1094 switch (internalFormat) 1095 { 1096 case GL_RGBA16_SNORM_EXT: 1097 return true; 1098 default: 1099 break; 1100 } 1101 break; 1102 } 1103 case GL_UNSIGNED_SHORT_4_4_4_4: 1104 { 1105 switch (internalFormat) 1106 { 1107 case GL_RGBA: 1108 case GL_RGBA4: 1109 return true; 1110 default: 1111 break; 1112 } 1113 break; 1114 } 1115 case GL_FLOAT: 1116 { 1117 switch (internalFormat) 1118 { 1119 case GL_RGBA: 1120 case GL_RGBA32F: 1121 case GL_RGBA16F: 1122 return true; 1123 default: 1124 break; 1125 } 1126 break; 1127 } 1128 case GL_HALF_FLOAT_OES: 1129 { 1130 switch (internalFormat) 1131 { 1132 case GL_RGBA: 1133 case GL_RGBA16F: 1134 return true; 1135 default: 1136 break; 1137 } 1138 break; 1139 } 1140 case GL_HALF_FLOAT: 1141 { 1142 switch (internalFormat) 1143 { 1144 case GL_RGBA16F: 1145 return true; 1146 default: 1147 break; 1148 } 1149 break; 1150 } 1151 case GL_UNSIGNED_BYTE: 1152 { 1153 switch (internalFormat) 1154 { 1155 case GL_RGBA: 1156 case GL_RGBA8: 1157 case GL_RGB5_A1: 1158 case GL_RGBA4: 1159 case GL_SRGB8_ALPHA8: 1160 return true; 1161 default: 1162 break; 1163 } 1164 break; 1165 } 1166 case GL_BYTE: 1167 { 1168 switch (internalFormat) 1169 { 1170 case GL_RGBA8_SNORM: 1171 return true; 1172 default: 1173 break; 1174 } 1175 break; 1176 } 1177 case GL_UNSIGNED_SHORT_5_5_5_1: 1178 { 1179 switch (internalFormat) 1180 { 1181 case GL_RGBA: 1182 case GL_RGB5_A1: 1183 return true; 1184 default: 1185 break; 1186 } 1187 break; 1188 } 1189 default: 1190 break; 1191 } 1192 break; 1193 1194 case GL_LUMINANCE: 1195 switch (type) 1196 { 1197 case GL_HALF_FLOAT: 1198 { 1199 switch (internalFormat) 1200 { 1201 case GL_LUMINANCE16F_EXT: 1202 case GL_LUMINANCE: 1203 return true; 1204 default: 1205 break; 1206 } 1207 break; 1208 } 1209 case GL_UNSIGNED_BYTE: 1210 { 1211 switch (internalFormat) 1212 { 1213 case GL_LUMINANCE: 1214 case GL_LUMINANCE8_EXT: 1215 return true; 1216 default: 1217 break; 1218 } 1219 break; 1220 } 1221 case GL_FLOAT: 1222 { 1223 switch (internalFormat) 1224 { 1225 case GL_LUMINANCE: 1226 case GL_LUMINANCE32F_EXT: 1227 return true; 1228 default: 1229 break; 1230 } 1231 break; 1232 } 1233 case GL_HALF_FLOAT_OES: 1234 { 1235 switch (internalFormat) 1236 { 1237 case GL_LUMINANCE16F_EXT: 1238 case GL_LUMINANCE: 1239 return true; 1240 default: 1241 break; 1242 } 1243 break; 1244 } 1245 default: 1246 break; 1247 } 1248 break; 1249 1250 case GL_RG_INTEGER: 1251 switch (type) 1252 { 1253 case GL_INT: 1254 { 1255 switch (internalFormat) 1256 { 1257 case GL_RG32I: 1258 return true; 1259 default: 1260 break; 1261 } 1262 break; 1263 } 1264 case GL_UNSIGNED_SHORT: 1265 { 1266 switch (internalFormat) 1267 { 1268 case GL_RG16UI: 1269 return true; 1270 default: 1271 break; 1272 } 1273 break; 1274 } 1275 case GL_SHORT: 1276 { 1277 switch (internalFormat) 1278 { 1279 case GL_RG16I: 1280 return true; 1281 default: 1282 break; 1283 } 1284 break; 1285 } 1286 case GL_UNSIGNED_BYTE: 1287 { 1288 switch (internalFormat) 1289 { 1290 case GL_RG8UI: 1291 return true; 1292 default: 1293 break; 1294 } 1295 break; 1296 } 1297 case GL_BYTE: 1298 { 1299 switch (internalFormat) 1300 { 1301 case GL_RG8I: 1302 return true; 1303 default: 1304 break; 1305 } 1306 break; 1307 } 1308 case GL_UNSIGNED_INT: 1309 { 1310 switch (internalFormat) 1311 { 1312 case GL_RG32UI: 1313 return true; 1314 default: 1315 break; 1316 } 1317 break; 1318 } 1319 default: 1320 break; 1321 } 1322 break; 1323 1324 case GL_RED_INTEGER: 1325 switch (type) 1326 { 1327 case GL_INT: 1328 { 1329 switch (internalFormat) 1330 { 1331 case GL_R32I: 1332 return true; 1333 default: 1334 break; 1335 } 1336 break; 1337 } 1338 case GL_UNSIGNED_SHORT: 1339 { 1340 switch (internalFormat) 1341 { 1342 case GL_R16UI: 1343 return true; 1344 default: 1345 break; 1346 } 1347 break; 1348 } 1349 case GL_SHORT: 1350 { 1351 switch (internalFormat) 1352 { 1353 case GL_R16I: 1354 return true; 1355 default: 1356 break; 1357 } 1358 break; 1359 } 1360 case GL_UNSIGNED_BYTE: 1361 { 1362 switch (internalFormat) 1363 { 1364 case GL_R8UI: 1365 return true; 1366 default: 1367 break; 1368 } 1369 break; 1370 } 1371 case GL_BYTE: 1372 { 1373 switch (internalFormat) 1374 { 1375 case GL_R8I: 1376 return true; 1377 default: 1378 break; 1379 } 1380 break; 1381 } 1382 case GL_UNSIGNED_INT: 1383 { 1384 switch (internalFormat) 1385 { 1386 case GL_R32UI: 1387 return true; 1388 default: 1389 break; 1390 } 1391 break; 1392 } 1393 default: 1394 break; 1395 } 1396 break; 1397 1398 case GL_RED: 1399 switch (type) 1400 { 1401 case GL_UNSIGNED_SHORT: 1402 { 1403 switch (internalFormat) 1404 { 1405 case GL_R16_EXT: 1406 return true; 1407 default: 1408 break; 1409 } 1410 break; 1411 } 1412 case GL_SHORT: 1413 { 1414 switch (internalFormat) 1415 { 1416 case GL_R16_SNORM_EXT: 1417 return true; 1418 default: 1419 break; 1420 } 1421 break; 1422 } 1423 case GL_FLOAT: 1424 { 1425 switch (internalFormat) 1426 { 1427 case GL_RED: 1428 case GL_R32F: 1429 case GL_R16F: 1430 return true; 1431 default: 1432 break; 1433 } 1434 break; 1435 } 1436 case GL_HALF_FLOAT_OES: 1437 { 1438 switch (internalFormat) 1439 { 1440 case GL_RED: 1441 case GL_R16F: 1442 return true; 1443 default: 1444 break; 1445 } 1446 break; 1447 } 1448 case GL_HALF_FLOAT: 1449 { 1450 switch (internalFormat) 1451 { 1452 case GL_RED: 1453 case GL_R16F: 1454 return true; 1455 default: 1456 break; 1457 } 1458 break; 1459 } 1460 case GL_UNSIGNED_BYTE: 1461 { 1462 switch (internalFormat) 1463 { 1464 case GL_RED: 1465 case GL_SR8_EXT: 1466 case GL_R8: 1467 return true; 1468 default: 1469 break; 1470 } 1471 break; 1472 } 1473 case GL_BYTE: 1474 { 1475 switch (internalFormat) 1476 { 1477 case GL_R8_SNORM: 1478 return true; 1479 default: 1480 break; 1481 } 1482 break; 1483 } 1484 default: 1485 break; 1486 } 1487 break; 1488 1489 case GL_DEPTH_COMPONENT: 1490 switch (type) 1491 { 1492 case GL_UNSIGNED_INT: 1493 { 1494 switch (internalFormat) 1495 { 1496 case GL_DEPTH_COMPONENT: 1497 case GL_DEPTH_COMPONENT24: 1498 case GL_DEPTH_COMPONENT16: 1499 return true; 1500 default: 1501 break; 1502 } 1503 break; 1504 } 1505 case GL_UNSIGNED_INT_24_8: 1506 { 1507 switch (internalFormat) 1508 { 1509 case GL_DEPTH_COMPONENT32_OES: 1510 return true; 1511 default: 1512 break; 1513 } 1514 break; 1515 } 1516 case GL_FLOAT: 1517 { 1518 switch (internalFormat) 1519 { 1520 case GL_DEPTH_COMPONENT32F: 1521 return true; 1522 default: 1523 break; 1524 } 1525 break; 1526 } 1527 case GL_UNSIGNED_SHORT: 1528 { 1529 switch (internalFormat) 1530 { 1531 case GL_DEPTH_COMPONENT: 1532 case GL_DEPTH_COMPONENT16: 1533 return true; 1534 default: 1535 break; 1536 } 1537 break; 1538 } 1539 default: 1540 break; 1541 } 1542 break; 1543 1544 case GL_DEPTH_STENCIL: 1545 switch (type) 1546 { 1547 case GL_UNSIGNED_INT_24_8: 1548 { 1549 switch (internalFormat) 1550 { 1551 case GL_DEPTH_STENCIL: 1552 case GL_DEPTH24_STENCIL8: 1553 return true; 1554 default: 1555 break; 1556 } 1557 break; 1558 } 1559 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: 1560 { 1561 switch (internalFormat) 1562 { 1563 case GL_DEPTH32F_STENCIL8: 1564 return true; 1565 default: 1566 break; 1567 } 1568 break; 1569 } 1570 default: 1571 break; 1572 } 1573 break; 1574 1575 case GL_SRGB_EXT: 1576 switch (type) 1577 { 1578 case GL_UNSIGNED_BYTE: 1579 { 1580 switch (internalFormat) 1581 { 1582 case GL_SRGB_EXT: 1583 case GL_SRGB8: 1584 return true; 1585 default: 1586 break; 1587 } 1588 break; 1589 } 1590 default: 1591 break; 1592 } 1593 break; 1594 1595 case GL_SRGB_ALPHA_EXT: 1596 switch (type) 1597 { 1598 case GL_UNSIGNED_BYTE: 1599 { 1600 switch (internalFormat) 1601 { 1602 case GL_SRGB_ALPHA_EXT: 1603 case GL_SRGB8_ALPHA8_EXT: 1604 return true; 1605 default: 1606 break; 1607 } 1608 break; 1609 } 1610 default: 1611 break; 1612 } 1613 break; 1614 1615 case GL_RG: 1616 switch (type) 1617 { 1618 case GL_UNSIGNED_SHORT: 1619 { 1620 switch (internalFormat) 1621 { 1622 case GL_RG16_EXT: 1623 return true; 1624 default: 1625 break; 1626 } 1627 break; 1628 } 1629 case GL_SHORT: 1630 { 1631 switch (internalFormat) 1632 { 1633 case GL_RG16_SNORM_EXT: 1634 return true; 1635 default: 1636 break; 1637 } 1638 break; 1639 } 1640 case GL_FLOAT: 1641 { 1642 switch (internalFormat) 1643 { 1644 case GL_RG: 1645 case GL_RG32F: 1646 case GL_RG16F: 1647 return true; 1648 default: 1649 break; 1650 } 1651 break; 1652 } 1653 case GL_HALF_FLOAT_OES: 1654 { 1655 switch (internalFormat) 1656 { 1657 case GL_RG: 1658 case GL_RG16F: 1659 return true; 1660 default: 1661 break; 1662 } 1663 break; 1664 } 1665 case GL_HALF_FLOAT: 1666 { 1667 switch (internalFormat) 1668 { 1669 case GL_RG: 1670 case GL_RG16F: 1671 return true; 1672 default: 1673 break; 1674 } 1675 break; 1676 } 1677 case GL_UNSIGNED_BYTE: 1678 { 1679 switch (internalFormat) 1680 { 1681 case GL_RG: 1682 case GL_RG8: 1683 return true; 1684 default: 1685 break; 1686 } 1687 break; 1688 } 1689 case GL_BYTE: 1690 { 1691 switch (internalFormat) 1692 { 1693 case GL_RG8_SNORM: 1694 return true; 1695 default: 1696 break; 1697 } 1698 break; 1699 } 1700 default: 1701 break; 1702 } 1703 break; 1704 1705 case GL_BGRA_EXT: 1706 switch (type) 1707 { 1708 case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: 1709 { 1710 switch (internalFormat) 1711 { 1712 case GL_BGRA4_ANGLEX: 1713 return true; 1714 default: 1715 break; 1716 } 1717 break; 1718 } 1719 case GL_UNSIGNED_BYTE: 1720 { 1721 switch (internalFormat) 1722 { 1723 case GL_BGRA8_EXT: 1724 case GL_BGRA4_ANGLEX: 1725 case GL_BGR5_A1_ANGLEX: 1726 case GL_BGRA_EXT: 1727 return true; 1728 default: 1729 break; 1730 } 1731 break; 1732 } 1733 case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: 1734 { 1735 switch (internalFormat) 1736 { 1737 case GL_BGR5_A1_ANGLEX: 1738 return true; 1739 default: 1740 break; 1741 } 1742 break; 1743 } 1744 default: 1745 break; 1746 } 1747 break; 1748 1749 default: 1750 UNREACHABLE(); 1751 break; 1752 } 1753 1754 return false; 1755 } 1756 1757 } // namespace gl 1758