1 #ifndef MSP_GL_DATATYPE_H_
2 #define MSP_GL_DATATYPE_H_
10 Identifies a data type. The values are bitfields laid as follows:
12 __ds addd ccrr _bfg ssss ssss
13 ││ │ │ │ │ │││ └╴Size (bytes)
14 ││ │ │ │ │ ││└──────────╴Signed flag
15 ││ │ │ │ │ │└───────────╴Floating-point flag
16 ││ │ │ │ │ └────────────╴Boolean flag
17 ││ │ │ │ └───────────────╴Vector or matrix rows minus one
18 ││ │ │ └─────────────────╴Matrix columns minus one
19 ││ │ └────────────────────╴Image dimensions (4 = cube)
20 ││ └───────────────────────╴Image array flag
21 │└─────────────────────────╴Sampled image flag
22 └──────────────────────────╴Shadow sampler flag
24 This information is presented for internal documentation purposes only; it is
25 inadvisable for programs to rely on it.
32 UNSIGNED_BYTE = 0x001,
34 UNSIGNED_SHORT = 0x002,
54 FLOAT_MAT2x3 = 0x6318,
55 FLOAT_MAT3x2 = 0x9318,
56 FLOAT_MAT2x4 = 0x7320,
57 FLOAT_MAT4x2 = 0xD320,
58 FLOAT_MAT3x4 = 0xB330,
59 FLOAT_MAT4x3 = 0xE330,
64 DOUBLE_MAT2x3 = 0x6330,
65 DOUBLE_MAT3x2 = 0x7330,
66 DOUBLE_MAT2x4 = 0x7340,
67 DOUBLE_MAT4x2 = 0xD340,
68 DOUBLE_MAT3x4 = 0xB360,
69 DOUBLE_MAT4x3 = 0xE360,
75 IMAGE_1D_ARRAY = 0x90304,
76 IMAGE_2D_ARRAY = 0xA0304,
77 IMAGE_CUBE_ARRAY = 0xC0304,
78 SAMPLER_1D = 0x110304,
79 SAMPLER_2D = 0x120304,
80 SAMPLER_3D = 0x130304,
81 SAMPLER_CUBE = 0x140304,
82 SAMPLER_1D_ARRAY = 0x190304,
83 SAMPLER_2D_ARRAY = 0x1A0304,
84 SAMPLER_CUBE_ARRAY = 0x1C0304,
85 SAMPLER_1D_SHADOW = 0x310304,
86 SAMPLER_2D_SHADOW = 0x320304,
87 SAMPLER_CUBE_SHADOW = 0x340304,
88 SAMPLER_1D_ARRAY_SHADOW = 0x390304,
89 SAMPLER_2D_ARRAY_SHADOW = 0x3A0304,
90 SAMPLER_CUBE_ARRAY_SHADOW = 0x3C0304
93 inline unsigned get_type_size(DataType t) { return t&0xFF; }
94 inline bool is_matrix(DataType t) { return t&0xC000; }
95 inline bool is_vector(DataType t) { return !is_matrix(t) && (t&0x3000); }
97 GLenum get_gl_type(DataType);
98 DataType from_gl_type(GLenum);
100 void require_type(DataType);