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