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