Cogs.Core
FormatsGL20.cpp
1#include "FormatsGL20.h"
2
3#include "../TextureData.h"
4#include "../SamplerState.h"
5
6const GLenum Cogs::OpenGL20::TextureFormats[] = {
7 GL_INVALID_ENUM,
8
9 // Unsigned normalized byte formats
10
11 GL_R8,
12 GL_RG8,
13 GL_RGB8,
14 GL_RGBA8,
15
16 // Unsigned 16 bit normalized integer formats
17
18 GL_R16,
19 GL_RG16,
20 GL_RGB16,
21 GL_RGBA16,
22
23 // Signed normalized byte formats
24
25 GL_R8_SNORM,
26 GL_RG8_SNORM,
27 GL_RGB8_SNORM,
28 GL_RGBA8_SNORM,
29
30 // Signed 16 bit normalized integer formats
31
32 GL_R16_SNORM,
33 GL_RG16_SNORM,
34 GL_RGB16_SNORM,
35 GL_RGBA16_SNORM,
36
37 // Unsigned byte formats
38
39 GL_R8UI,
40 GL_RG8UI,
41 GL_RGB8UI,
42 GL_RGBA8UI,
43
44 // Unsigned 16 bit integer formats
45
46 GL_R16UI,
47 GL_RG16UI,
48 GL_RGB16UI,
49 GL_RGBA16UI,
50
51 // Unsigned 32 bit integer formats
52
53 GL_R32UI,
54 GL_RG32UI,
55 GL_RGB32UI,
56 GL_RGBA32UI,
57
58 // Signed byte formats
59
60 GL_R8I,
61 GL_RG8I,
62 GL_RGB8I,
63 GL_RGBA8I,
64
65 // Signed 16 bit integer formats
66
67 GL_R16I,
68 GL_RG16I,
69 GL_RGB16I,
70 GL_RGBA16I,
71
72 // Signed 32 bit integer formats
73
74 GL_R32I,
75 GL_RG32I,
76 GL_RGB32I,
77 GL_RGBA32I,
78
79 // 16 bit floating point formats
80
81 GL_R16F,
82 GL_RG16F,
83 GL_RGB16F,
84 GL_RGBA16F,
85
86 // 32 bit floating point formats
87
88 GL_R32F,
89 GL_RG32F,
90 GL_RGB32F,
91 GL_RGBA32F,
92
93 // Depth buffer formats
94
95 GL_DEPTH_COMPONENT16,
96 GL_DEPTH_COMPONENT24,
97 GL_DEPTH24_STENCIL8,
98 GL_DEPTH_COMPONENT32F,
99 GL_DEPTH_COMPONENT32,
100 GL_DEPTH_COMPONENT16,
101
102 // 8 bit typeless formats
103
104 GL_INVALID_ENUM,
105 GL_INVALID_ENUM,
106 GL_INVALID_ENUM,
107 GL_INVALID_ENUM,
108
109 // Reverse component order formats.
110
111 GL_RGB8,
112 GL_RGBA8,
113
114 // Alpha formats
115
116 GL_ALPHA,
117
118 // Compressed formats
119
120 GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
121 GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
122 GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
123 GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,
124 GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,
125 GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
126 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
127 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
128 GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
129 GL_COMPRESSED_RED_RGTC1,
130 GL_COMPRESSED_RED_RGTC1,
131 GL_COMPRESSED_SIGNED_RED_RGTC1,
132 GL_COMPRESSED_RG_RGTC2,
133 GL_COMPRESSED_RG_RGTC2,
134 GL_COMPRESSED_SIGNED_RG_RGTC2,
135
136 // BC7
137 GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB,
138 GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB,
139 GL_COMPRESSED_RGBA_BPTC_UNORM_ARB,
140 GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB,
141
142 // PVRTC Not supported in OpenGL
143 GL_INVALID_ENUM,
144 GL_INVALID_ENUM,
145 GL_INVALID_ENUM,
146 GL_INVALID_ENUM,
147
148 // ETC
149 GL_COMPRESSED_R11_EAC,
150 GL_COMPRESSED_SIGNED_R11_EAC,
151 GL_COMPRESSED_RG11_EAC,
152 GL_COMPRESSED_SIGNED_RG11_EAC,
153
154 GL_COMPRESSED_RGB8_ETC2,
155 GL_COMPRESSED_SRGB8_ETC2,
156 GL_COMPRESSED_RGBA8_ETC2_EAC,
157 GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
158
159 // ASTC
160 GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
161 GL_COMPRESSED_RGBA_ASTC_5x4_KHR,
162 GL_COMPRESSED_RGBA_ASTC_5x5_KHR,
163 GL_COMPRESSED_RGBA_ASTC_6x5_KHR,
164 GL_COMPRESSED_RGBA_ASTC_6x6_KHR,
165 GL_COMPRESSED_RGBA_ASTC_8x5_KHR,
166 GL_COMPRESSED_RGBA_ASTC_8x6_KHR,
167 GL_COMPRESSED_RGBA_ASTC_8x8_KHR,
168 GL_COMPRESSED_RGBA_ASTC_10x5_KHR,
169 GL_COMPRESSED_RGBA_ASTC_10x6_KHR,
170 GL_COMPRESSED_RGBA_ASTC_10x8_KHR,
171 GL_COMPRESSED_RGBA_ASTC_10x10_KHR,
172 GL_COMPRESSED_RGBA_ASTC_12x10_KHR,
173 GL_COMPRESSED_RGBA_ASTC_12x12_KHR,
174 // ASTC SRGBA
175 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
176 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
177 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
178 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
179 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
180 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
181 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
182 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
183 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
184 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
185 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
186 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
187 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
188 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
189
190 // SRGB formats
191
192 GL_SRGB8,
193 GL_SRGB8_ALPHA8,
194
195 // 10 bit formats
196
197 GL_RGB10_A2,
198 GL_RGB10_A2,
199 GL_RGB10_A2UI,
200 GL_INVALID_ENUM,
201 GL_INVALID_ENUM,
202 GL_INVALID_ENUM,
203 GL_INVALID_ENUM,
204 GL_INVALID_ENUM,
205
206 // Matrix format for instancing
207
208 GL_INVALID_ENUM
209};
210
211STATIC_ASSERT_MAPPING(Cogs::OpenGL20::TextureFormats, (int)Cogs::TextureFormat::TextureFormat_Size);
212
213const GLenum Cogs::OpenGL20::PixelTypes[] = {
214 GL_INVALID_ENUM,
215
216 // Unsigned normalized byte formats
217
218 GL_UNSIGNED_BYTE,
219 GL_UNSIGNED_BYTE,
220 GL_UNSIGNED_BYTE,
221 GL_UNSIGNED_BYTE,
222
223 // Unsigned 16 bit normalized integer formats
224
225 GL_UNSIGNED_SHORT,
226 GL_UNSIGNED_SHORT,
227 GL_UNSIGNED_SHORT,
228 GL_UNSIGNED_SHORT,
229
230 // Signed normalized byte formats
231
232 GL_BYTE,
233 GL_BYTE,
234 GL_BYTE,
235 GL_BYTE,
236
237 // Signed 16 bit normalized integer formats
238
239 GL_SHORT,
240 GL_SHORT,
241 GL_SHORT,
242 GL_SHORT,
243
244 // Unsigned byte formats
245
246 GL_UNSIGNED_BYTE,
247 GL_UNSIGNED_BYTE,
248 GL_UNSIGNED_BYTE,
249 GL_UNSIGNED_BYTE,
250
251 // Unsigned 16 bit integer formats
252
253 GL_UNSIGNED_SHORT,
254 GL_UNSIGNED_SHORT,
255 GL_UNSIGNED_SHORT,
256 GL_UNSIGNED_SHORT,
257
258 // Unsigned 32 bit integer formats
259
260 GL_UNSIGNED_INT,
261 GL_UNSIGNED_INT,
262 GL_UNSIGNED_INT,
263 GL_UNSIGNED_INT,
264
265 // Signed byte formats
266
267 GL_BYTE,
268 GL_BYTE,
269 GL_BYTE,
270 GL_BYTE,
271
272 // Signed 16 bit integer formats
273
274 GL_SHORT,
275 GL_SHORT,
276 GL_SHORT,
277 GL_SHORT,
278
279 // Signed 32 bit integer formats
280
281 GL_INT,
282 GL_INT,
283 GL_INT,
284 GL_INT,
285
286 // 16 bit floating point formats
287
288 GL_HALF_FLOAT,
289 GL_HALF_FLOAT,
290 GL_HALF_FLOAT,
291 GL_HALF_FLOAT,
292
293 // 32 bit floating point formats
294
295 GL_FLOAT,
296 GL_FLOAT,
297 GL_FLOAT,
298 GL_FLOAT,
299
300 // Depth buffer formats
301
302 GL_UNSIGNED_INT,
303 GL_UNSIGNED_INT,
304 GL_UNSIGNED_INT,
305 GL_FLOAT,
306 GL_UNSIGNED_INT,
307 GL_UNSIGNED_INT,
308
309 // 8 bit typeless formats
310
311 GL_UNSIGNED_BYTE,
312 GL_UNSIGNED_BYTE,
313 GL_UNSIGNED_BYTE,
314 GL_UNSIGNED_BYTE,
315
316 // Reverse component order formats.
317
318 GL_UNSIGNED_BYTE,
319 GL_UNSIGNED_BYTE,
320
321 // Alpha formats
322
323 GL_UNSIGNED_BYTE,
324
325 // Compressed formats
326
327 GL_UNSIGNED_BYTE,
328 GL_UNSIGNED_BYTE,
329 GL_UNSIGNED_BYTE,
330 GL_UNSIGNED_BYTE,
331 GL_UNSIGNED_BYTE,
332 GL_UNSIGNED_BYTE,
333 GL_UNSIGNED_BYTE,
334 GL_UNSIGNED_BYTE,
335 GL_UNSIGNED_BYTE,
336 GL_UNSIGNED_BYTE,
337 GL_UNSIGNED_BYTE,
338 GL_UNSIGNED_BYTE,
339 GL_UNSIGNED_BYTE,
340 GL_UNSIGNED_BYTE,
341 GL_UNSIGNED_BYTE,
342 // BC7
343 GL_UNSIGNED_BYTE,
344 GL_UNSIGNED_BYTE,
345 GL_UNSIGNED_BYTE,
346 GL_UNSIGNED_BYTE,
347
348 // PVRTC
349 GL_UNSIGNED_BYTE,
350 GL_UNSIGNED_BYTE,
351 GL_UNSIGNED_BYTE,
352 GL_UNSIGNED_BYTE,
353
354 // ETC
355 GL_UNSIGNED_BYTE,
356 GL_UNSIGNED_BYTE,
357 GL_UNSIGNED_BYTE,
358 GL_UNSIGNED_BYTE,
359
360 GL_UNSIGNED_BYTE,
361 GL_UNSIGNED_BYTE,
362 GL_UNSIGNED_BYTE,
363 GL_UNSIGNED_BYTE,
364
365 // ASTC
366 GL_UNSIGNED_BYTE,
367 GL_UNSIGNED_BYTE,
368 GL_UNSIGNED_BYTE,
369 GL_UNSIGNED_BYTE,
370 GL_UNSIGNED_BYTE,
371 GL_UNSIGNED_BYTE,
372 GL_UNSIGNED_BYTE,
373 GL_UNSIGNED_BYTE,
374 GL_UNSIGNED_BYTE,
375 GL_UNSIGNED_BYTE,
376 GL_UNSIGNED_BYTE,
377 GL_UNSIGNED_BYTE,
378 GL_UNSIGNED_BYTE,
379 GL_UNSIGNED_BYTE,
380 // ASTC SRGBA
381 GL_UNSIGNED_BYTE,
382 GL_UNSIGNED_BYTE,
383 GL_UNSIGNED_BYTE,
384 GL_UNSIGNED_BYTE,
385 GL_UNSIGNED_BYTE,
386 GL_UNSIGNED_BYTE,
387 GL_UNSIGNED_BYTE,
388 GL_UNSIGNED_BYTE,
389 GL_UNSIGNED_BYTE,
390 GL_UNSIGNED_BYTE,
391 GL_UNSIGNED_BYTE,
392 GL_UNSIGNED_BYTE,
393 GL_UNSIGNED_BYTE,
394 GL_UNSIGNED_BYTE,
395
396 // SRGB formats
397
398 GL_UNSIGNED_BYTE,
399 GL_UNSIGNED_BYTE,
400
401 // 10 bit formats
402
403 GL_UNSIGNED_INT,
404 GL_UNSIGNED_INT,
405 GL_UNSIGNED_INT,
406 GL_INVALID_ENUM,
407 GL_INVALID_ENUM,
408 GL_INVALID_ENUM,
409 GL_INVALID_ENUM,
410 GL_INVALID_ENUM,
411
412 // Matrix format for instancing
413
414 GL_INVALID_ENUM,
415};
416
417STATIC_ASSERT_MAPPING(Cogs::OpenGL20::PixelTypes, (int)Cogs::TextureFormat::TextureFormat_Size);
418
419const GLenum Cogs::OpenGL20::PixelFormats[] = {
420 GL_INVALID_ENUM,
421
422 // Unsigned normalized byte formats
423
424 GL_RED,
425 GL_RG,
426 GL_RGB,
427 GL_RGBA,
428
429 // Unsigned 16 bit normalized integer formats
430
431 GL_RED,
432 GL_RG,
433 GL_RGB,
434 GL_RGBA,
435
436 // Signed normalized byte formats
437
438 GL_RED,
439 GL_RG,
440 GL_RGB,
441 GL_RGBA,
442
443 // Signed 16 bit normalized integer formats
444
445 GL_RED,
446 GL_RG,
447 GL_RGB,
448 GL_RGBA,
449
450 // Unsigned byte formats
451
452 GL_RED,
453 GL_RG,
454 GL_RGB,
455 GL_RGBA,
456
457 // Unsigned 16 bit integer formats
458
459 GL_RED,
460 GL_RG,
461 GL_RGB,
462 GL_RGBA,
463
464 // Unsigned 32 bit integer formats
465
466 GL_RED,
467 GL_RG,
468 GL_RGB,
469 GL_RGBA,
470
471 // Signed byte formats
472
473 GL_RED,
474 GL_RG,
475 GL_RGB,
476 GL_RGBA,
477
478 // Signed 16 bit integer formats
479
480 GL_RED,
481 GL_RG,
482 GL_RGB,
483 GL_RGBA,
484
485 // Signed 32 bit integer formats
486
487 GL_RED,
488 GL_RG,
489 GL_RGB,
490 GL_RGBA,
491
492 // 16 bit floating point formats
493
494 GL_RED,
495 GL_RG,
496 GL_RGB,
497 GL_RGBA,
498
499 // 32 bit floating point formats
500
501 GL_RED,
502 GL_RG,
503 GL_RGB,
504 GL_RGBA,
505
506 // Depth buffer formats
507
508 GL_DEPTH_COMPONENT,
509 GL_DEPTH_COMPONENT,
510 GL_DEPTH_COMPONENT,
511 GL_DEPTH_COMPONENT,
512 GL_DEPTH_COMPONENT,
513 GL_DEPTH_COMPONENT,
514
515 // 8 bit typeless formats
516
517 GL_RED,
518 GL_RG,
519 GL_RGB,
520 GL_RGBA,
521
522 // Reverse component order formats.
523
524 GL_BGR,
525 GL_BGRA,
526
527 // Alpha formats
528
529 GL_ALPHA,
530
531 // Compressed formats
532
533 GL_INVALID_ENUM,
534 GL_INVALID_ENUM,
535 GL_INVALID_ENUM,
536 GL_INVALID_ENUM,
537 GL_INVALID_ENUM,
538 GL_INVALID_ENUM,
539 GL_INVALID_ENUM,
540 GL_INVALID_ENUM,
541 GL_INVALID_ENUM,
542 GL_INVALID_ENUM,
543 GL_INVALID_ENUM,
544 GL_INVALID_ENUM,
545 GL_INVALID_ENUM,
546 GL_INVALID_ENUM,
547 GL_INVALID_ENUM,
548 // BC7
549 GL_INVALID_ENUM,
550 GL_INVALID_ENUM,
551 GL_INVALID_ENUM,
552 GL_INVALID_ENUM,
553
554 // PVTRC
555 GL_INVALID_ENUM,
556 GL_INVALID_ENUM,
557 GL_INVALID_ENUM,
558 GL_INVALID_ENUM,
559
560 // ETC
561 GL_INVALID_ENUM,
562 GL_INVALID_ENUM,
563 GL_INVALID_ENUM,
564 GL_INVALID_ENUM,
565
566 GL_INVALID_ENUM,
567 GL_INVALID_ENUM,
568 GL_INVALID_ENUM,
569 GL_INVALID_ENUM,
570
571 // ASTC
572 GL_UNSIGNED_BYTE,
573 GL_UNSIGNED_BYTE,
574 GL_UNSIGNED_BYTE,
575 GL_UNSIGNED_BYTE,
576 GL_UNSIGNED_BYTE,
577 GL_UNSIGNED_BYTE,
578 GL_UNSIGNED_BYTE,
579 GL_UNSIGNED_BYTE,
580 GL_UNSIGNED_BYTE,
581 GL_UNSIGNED_BYTE,
582 GL_UNSIGNED_BYTE,
583 GL_UNSIGNED_BYTE,
584 GL_UNSIGNED_BYTE,
585 GL_UNSIGNED_BYTE,
586 // ASTC RGBA
587 GL_UNSIGNED_BYTE,
588 GL_UNSIGNED_BYTE,
589 GL_UNSIGNED_BYTE,
590 GL_UNSIGNED_BYTE,
591 GL_UNSIGNED_BYTE,
592 GL_UNSIGNED_BYTE,
593 GL_UNSIGNED_BYTE,
594 GL_UNSIGNED_BYTE,
595 GL_UNSIGNED_BYTE,
596 GL_UNSIGNED_BYTE,
597 GL_UNSIGNED_BYTE,
598 GL_UNSIGNED_BYTE,
599 GL_UNSIGNED_BYTE,
600 GL_UNSIGNED_BYTE,
601
602 // SRGB formats
603
604 GL_RGB,
605 GL_RGBA,
606
607 // 10 bit formats
608
609 GL_INVALID_ENUM,
610 GL_INVALID_ENUM,
611 GL_INVALID_ENUM,
612 GL_INVALID_ENUM,
613 GL_INVALID_ENUM,
614 GL_INVALID_ENUM,
615 GL_INVALID_ENUM,
616 GL_INVALID_ENUM,
617
618 // Matrix format for instancing
619
620 GL_INVALID_ENUM,
621};
622
623STATIC_ASSERT_MAPPING(Cogs::OpenGL20::PixelFormats, (int)Cogs::TextureFormat::TextureFormat_Size);
624
625const GLenum Cogs::OpenGL20::ElementFormats[] = {
626 GL_INVALID_ENUM,
627
628 // Unsigned normalized byte formats
629
630 GL_UNSIGNED_BYTE,
631 GL_UNSIGNED_BYTE,
632 GL_UNSIGNED_BYTE,
633 GL_UNSIGNED_BYTE,
634
635 // Unsigned 16 bit normalized integer formats
636
637 GL_UNSIGNED_SHORT,
638 GL_UNSIGNED_SHORT,
639 GL_UNSIGNED_SHORT,
640 GL_UNSIGNED_SHORT,
641
642 // Signed normalized byte formats
643
644 GL_BYTE,
645 GL_BYTE,
646 GL_BYTE,
647 GL_BYTE,
648
649 // Signed 16 bit normalized integer formats
650
651 GL_SHORT,
652 GL_SHORT,
653 GL_SHORT,
654 GL_SHORT,
655
656 // Unsigned byte formats
657
658 GL_UNSIGNED_INT,
659 GL_UNSIGNED_INT,
660 GL_UNSIGNED_INT,
661 GL_UNSIGNED_INT,
662
663 // Unsigned 16 bit integer formats
664
665 GL_UNSIGNED_SHORT,
666 GL_UNSIGNED_SHORT,
667 GL_UNSIGNED_SHORT,
668 GL_UNSIGNED_SHORT,
669
670 // Unsigned 32 bit integer formats
671
672 GL_UNSIGNED_INT,
673 GL_UNSIGNED_INT,
674 GL_UNSIGNED_INT,
675 GL_UNSIGNED_INT,
676
677 // Signed byte formats
678
679 GL_BYTE,
680 GL_BYTE,
681 GL_BYTE,
682 GL_BYTE,
683
684 // Signed 16 bit integer formats
685
686 GL_SHORT,
687 GL_SHORT,
688 GL_SHORT,
689 GL_SHORT,
690
691 // Signed 32 bit integer formats
692
693 GL_INT,
694 GL_INT,
695 GL_INT,
696 GL_INT,
697
698 // 16 bit floating point formats
699
700 GL_HALF_FLOAT,
701 GL_HALF_FLOAT,
702 GL_HALF_FLOAT,
703 GL_HALF_FLOAT,
704
705 // 32 bit floating point formats
706
707 GL_FLOAT,
708 GL_FLOAT,
709 GL_FLOAT,
710 GL_FLOAT,
711
712 // Depth buffer formats
713
714 GL_HALF_FLOAT,
715 GL_UNSIGNED_INT_24_8,
716 GL_UNSIGNED_INT_24_8,
717 GL_FLOAT,
718 GL_FLOAT,
719 GL_HALF_FLOAT,
720
721 // 8 bit typeless formats
722
723 GL_INVALID_ENUM,
724 GL_INVALID_ENUM,
725 GL_INVALID_ENUM,
726 GL_INVALID_ENUM,
727
728 // Reverse component order formats.
729
730 GL_BYTE,
731 GL_BYTE,
732
733 // Alpha formats
734
735 GL_BYTE,
736
737 // Compressed formats
738
739 GL_INVALID_ENUM,
740 GL_INVALID_ENUM,
741 GL_INVALID_ENUM,
742 GL_INVALID_ENUM,
743 GL_INVALID_ENUM,
744 GL_INVALID_ENUM,
745 GL_INVALID_ENUM,
746 GL_INVALID_ENUM,
747 GL_INVALID_ENUM,
748 GL_INVALID_ENUM,
749 GL_INVALID_ENUM,
750 GL_INVALID_ENUM,
751 GL_INVALID_ENUM,
752 GL_INVALID_ENUM,
753 GL_INVALID_ENUM,
754
755 // BC7
756 GL_INVALID_ENUM,
757 GL_INVALID_ENUM,
758 GL_INVALID_ENUM,
759 GL_INVALID_ENUM,
760
761 // PVRTC
762 GL_INVALID_ENUM,
763 GL_INVALID_ENUM,
764 GL_INVALID_ENUM,
765 GL_INVALID_ENUM,
766
767 // ETC
768 GL_INVALID_ENUM,
769 GL_INVALID_ENUM,
770 GL_INVALID_ENUM,
771 GL_INVALID_ENUM,
772
773 GL_INVALID_ENUM,
774 GL_INVALID_ENUM,
775 GL_INVALID_ENUM,
776 GL_INVALID_ENUM,
777
778 // ASTC
779 GL_INVALID_ENUM,
780 GL_INVALID_ENUM,
781 GL_INVALID_ENUM,
782 GL_INVALID_ENUM,
783 GL_INVALID_ENUM,
784 GL_INVALID_ENUM,
785 GL_INVALID_ENUM,
786 GL_INVALID_ENUM,
787 GL_INVALID_ENUM,
788 GL_INVALID_ENUM,
789 GL_INVALID_ENUM,
790 GL_INVALID_ENUM,
791 GL_INVALID_ENUM,
792 GL_INVALID_ENUM,
793
794 // ASTC SRGBA
795 GL_INVALID_ENUM,
796 GL_INVALID_ENUM,
797 GL_INVALID_ENUM,
798 GL_INVALID_ENUM,
799 GL_INVALID_ENUM,
800 GL_INVALID_ENUM,
801 GL_INVALID_ENUM,
802 GL_INVALID_ENUM,
803 GL_INVALID_ENUM,
804 GL_INVALID_ENUM,
805 GL_INVALID_ENUM,
806 GL_INVALID_ENUM,
807 GL_INVALID_ENUM,
808 GL_INVALID_ENUM,
809
810 // SRGB formats
811
812 GL_BYTE,
813 GL_BYTE,
814
815 // 10 bit formats
816
817 GL_UNSIGNED_INT_2_10_10_10_REV,
818 GL_UNSIGNED_INT_2_10_10_10_REV,
819 GL_UNSIGNED_INT_2_10_10_10_REV,
820 GL_INVALID_ENUM,
821 GL_INVALID_ENUM,
822 GL_INVALID_ENUM,
823 GL_INVALID_ENUM,
824 GL_INVALID_ENUM,
825
826 // Matrix format for instancing
827
828 GL_FLOAT
829};
830
831STATIC_ASSERT_MAPPING(Cogs::OpenGL20::ElementFormats, Cogs::Format::Format_Size);
832
833const GLboolean Cogs::OpenGL20::CompressedFormats[] = {
834 GL_FALSE,
835
836 // Unsigned normalized byte formats
837
838 GL_FALSE,
839 GL_FALSE,
840 GL_FALSE,
841 GL_FALSE,
842
843 // Unsigned 16 bit normalized integer formats
844
845 GL_FALSE,
846 GL_FALSE,
847 GL_FALSE,
848 GL_FALSE,
849
850 // Signed normalized byte formats
851
852 GL_FALSE,
853 GL_FALSE,
854 GL_FALSE,
855 GL_FALSE,
856
857 // Signed 16 bit normalized integer formats
858
859 GL_FALSE,
860 GL_FALSE,
861 GL_FALSE,
862 GL_FALSE,
863
864 // Unsigned
865
866 GL_FALSE,
867 GL_FALSE,
868 GL_FALSE,
869 GL_FALSE,
870
871 GL_FALSE,
872 GL_FALSE,
873 GL_FALSE,
874 GL_FALSE,
875
876 GL_FALSE,
877 GL_FALSE,
878 GL_FALSE,
879 GL_FALSE,
880
881 // Signed
882
883 GL_FALSE,
884 GL_FALSE,
885 GL_FALSE,
886 GL_FALSE,
887
888 GL_FALSE,
889 GL_FALSE,
890 GL_FALSE,
891 GL_FALSE,
892
893 GL_FALSE,
894 GL_FALSE,
895 GL_FALSE,
896 GL_FALSE,
897
898 // 16 bi|t floating point formats
899 GL_FALSE,
900 GL_FALSE,
901 GL_FALSE,
902 GL_FALSE,
903
904 // 32 bit floating point formats
905
906 GL_FALSE,
907 GL_FALSE,
908 GL_FALSE,
909 GL_FALSE,
910
911 // Depth buffer formats
912
913 GL_FALSE,
914 GL_FALSE,
915 GL_FALSE,
916 GL_FALSE,
917 GL_FALSE,
918 GL_FALSE,
919
920 // 8 bit typeless formats
921
922 GL_FALSE,
923 GL_FALSE,
924 GL_FALSE,
925 GL_FALSE,
926
927 // Reverse component order formats.
928
929 GL_FALSE,
930 GL_FALSE,
931
932 // Alpha formats
933
934 GL_FALSE,
935
936 // Compressed formats
937
938 GL_TRUE,
939 GL_TRUE,
940 GL_TRUE,
941 GL_TRUE,
942 GL_TRUE,
943 GL_TRUE,
944 GL_TRUE,
945 GL_TRUE,
946 GL_TRUE,
947 GL_TRUE,
948 GL_TRUE,
949 GL_TRUE,
950 GL_TRUE,
951 GL_TRUE,
952 GL_TRUE,
953
954 // BC7
955 GL_TRUE,
956 GL_TRUE,
957 GL_TRUE,
958 GL_TRUE,
959
960 // PVRTC
961 GL_TRUE,
962 GL_TRUE,
963 GL_TRUE,
964 GL_TRUE,
965
966 //ETC
967
968 GL_TRUE,
969 GL_TRUE,
970 GL_TRUE,
971 GL_TRUE,
972
973 GL_TRUE,
974 GL_TRUE,
975 GL_TRUE,
976 GL_TRUE,
977
978 // ASTC
979
980 GL_TRUE,
981 GL_TRUE,
982 GL_TRUE,
983 GL_TRUE,
984 GL_TRUE,
985 GL_TRUE,
986 GL_TRUE,
987 GL_TRUE,
988 GL_TRUE,
989 GL_TRUE,
990 GL_TRUE,
991 GL_TRUE,
992 GL_TRUE,
993 GL_TRUE,
994
995 // ASTC SRGBA
996
997 GL_TRUE,
998 GL_TRUE,
999 GL_TRUE,
1000 GL_TRUE,
1001 GL_TRUE,
1002 GL_TRUE,
1003 GL_TRUE,
1004 GL_TRUE,
1005 GL_TRUE,
1006 GL_TRUE,
1007 GL_TRUE,
1008 GL_TRUE,
1009 GL_TRUE,
1010 GL_TRUE,
1011
1012 // SRGB formats
1013
1014 GL_FALSE,
1015 GL_FALSE,
1016
1017 // Packed formats
1018 GL_FALSE, // R10G10B10A2_TYPELESS
1019 GL_FALSE, // R10G10B10A2_UNORM
1020 GL_FALSE, // R10G10B10A2_UINT
1021 GL_FALSE, // R11G11B10_FLOAT
1022 GL_FALSE, // R5G6B5_UNORM
1023 GL_FALSE, // R5G5B5A1_UNORM
1024 GL_FALSE, // R4G4B4A4_UNORM
1025 GL_FALSE, // R9G9B9E5_FLOAT
1026
1027 GL_FALSE,
1028};
1029static_assert(sizeof(Cogs::OpenGL20::CompressedFormats) == sizeof(Cogs::OpenGL20::CompressedFormats[0]) * size_t(Cogs::DataFormat::Format_Size));
1030
1031
1032const GLenum Cogs::OpenGL20::PrimitiveFormats[] = {
1033 GL_TRIANGLES,
1034 GL_TRIANGLE_STRIP,
1035 GL_LINES,
1036 GL_LINE_STRIP,
1037 GL_POINTS,
1038 GL_TRIANGLES_ADJACENCY,
1039 GL_TRIANGLE_STRIP_ADJACENCY,
1040 GL_LINES_ADJACENCY,
1041 GL_LINE_STRIP_ADJACENCY,
1042
1043 GL_PATCHES,
1044 GL_PATCHES,
1045 GL_PATCHES,
1046 GL_PATCHES,
1047};
1048
1049STATIC_ASSERT_MAPPING(Cogs::OpenGL20::PrimitiveFormats, (int)Cogs::PrimitiveType::PrimitiveType_Size);
1050
1051extern const GLenum Cogs::OpenGL20::MipMinFilterModes[] = {
1052 GL_NEAREST_MIPMAP_LINEAR,
1053 GL_LINEAR_MIPMAP_LINEAR,
1054 GL_NEAREST_MIPMAP_LINEAR,
1055 GL_LINEAR_MIPMAP_LINEAR,
1056};
1057
1058STATIC_ASSERT_MAPPING(Cogs::OpenGL20::MipMinFilterModes, Cogs::SamplerState::FilterMode_Size);
1059
1060extern const GLenum Cogs::OpenGL20::MagFilterModes[] = {
1061 GL_NEAREST,
1062 GL_LINEAR,
1063 GL_NEAREST,
1064 GL_LINEAR,
1065};
1066
1067STATIC_ASSERT_MAPPING(Cogs::OpenGL20::MagFilterModes, Cogs::SamplerState::FilterMode_Size);
1068
1069extern const GLenum Cogs::OpenGL20::AddressModes[] = {
1070 GL_CLAMP_TO_EDGE,
1071 GL_REPEAT,
1072 GL_MIRRORED_REPEAT,
1073 GL_CLAMP_TO_BORDER
1074};
1075
1076STATIC_ASSERT_MAPPING(Cogs::OpenGL20::AddressModes, Cogs::SamplerState::AddressMode_Size);
1077
1078extern const GLenum Cogs::OpenGL20::ComparisonFunctions[] = {
1079 GL_NEVER,
1080 GL_LESS,
1081 GL_EQUAL,
1082 GL_LEQUAL,
1083 GL_GREATER,
1084 GL_NOTEQUAL,
1085 GL_GEQUAL,
1086 GL_ALWAYS,
1087};
1088
1089STATIC_ASSERT_MAPPING(Cogs::OpenGL20::ComparisonFunctions, Cogs::SamplerState::ComparisonFunction_Size);
1090
1091extern const GLenum Cogs::OpenGL20::TextureTarget[] = {
1092 GL_INVALID_ENUM,
1093 GL_INVALID_ENUM,
1094 GL_TEXTURE_1D,
1095 GL_TEXTURE_1D_ARRAY,
1096 GL_TEXTURE_2D,
1097 GL_TEXTURE_2D_ARRAY,
1098 GL_TEXTURE_2D_MULTISAMPLE,
1099 GL_TEXTURE_2D_MULTISAMPLE_ARRAY,
1100 GL_TEXTURE_3D,
1101 GL_INVALID_ENUM, // GL_TEXTURE_3D_ARRAY,
1102 GL_TEXTURE_CUBE_MAP,
1103 GL_TEXTURE_CUBE_MAP_ARRAY,
1104 GL_INVALID_ENUM,
1105};
1106
1107STATIC_ASSERT_MAPPING(Cogs::OpenGL20::TextureTarget, (int)Cogs::ResourceDimensions::ResourceDimensions_Size);