]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/datatype.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / core / datatype.h
index 7188cb5a9c847b37a8f455d682ad660189e131f5..29789907cdb78ca9863c328251aa826419b72442 100644 (file)
@@ -3,15 +3,16 @@
 
 #include <msp/linal/matrix.h>
 #include <msp/linal/vector.h>
-#include "gl.h"
 
 namespace Msp {
 namespace GL {
 
 /**
-Identifies a data type.  The values are bitfields laid as follows:
+Identifies a data type.
 
-__ds addd ccrr _bfg ssss ssss
+The values are bitfields laid as follows:
+
+__hm addd ccrr _bfg ssss ssss
   ││ │  │  │ │  │││         └╴Size (bytes)
   ││ │  │  │ │  ││└──────────╴Signed flag
   ││ │  │  │ │  │└───────────╴Floating-point flag
@@ -24,7 +25,7 @@ __ds addd ccrr _bfg ssss ssss
   └──────────────────────────╴Shadow sampler flag
 
 This information is presented for internal documentation purposes only; it is
-inadvisable for programs to rely on it.
+inadvisable for applications to rely on it.
 */
 enum DataType
 {
@@ -46,6 +47,9 @@ enum DataType
        INT_VEC2 = 0x1108,
        INT_VEC3 = 0x210C,
        INT_VEC4 = 0x3110,
+       UINT_VEC2 = 0x1008,
+       UINT_VEC3 = 0x200C,
+       UINT_VEC4 = 0x3010,
        BOOL_VEC2 = 0x1402,
        BOOL_VEC3 = 0x2403,
        BOOL_VEC4 = 0x3404,
@@ -92,11 +96,12 @@ enum DataType
        SAMPLER_CUBE_ARRAY_SHADOW = 0x3C0304
 };
 
-inline unsigned get_type_size(DataType t) { return t&0xFF; }
+inline std::size_t get_type_size(DataType t) { return t&0xFF; }
 inline bool is_float(DataType t) { return t&0x200; }
 inline bool is_matrix(DataType t) { return t&0xC000; }
 inline bool is_vector(DataType t) { return !is_matrix(t) && (t&0x3000); }
 inline bool is_image(DataType t) { return t&0x70000; }
+inline bool is_sampled_image(DataType t) { return t&0x100000; }
 
 inline DataType get_matrix_column_type(DataType t)
 {
@@ -133,12 +138,11 @@ struct TypeTraits<LinAl::Matrix<T, N, M>>
        static const DataType type = static_cast<DataType>((TypeTraits<T>::type&0xF00) | ((TypeTraits<T>::type&0xFF)*N*M) | ((N-1)<<12) | ((M-1)<<14));
 };
 
-GLenum get_gl_type(DataType);
-DataType from_gl_type(GLenum);
-
 void require_type(DataType);
 
 } // namespace GL
 } // namespace Msp
 
+#include "datatype_backend.h"
+
 #endif