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