#define _T_CONTEXT_H
#include "main/glheader.h"
-#include "main/bitset.h"
+#include "main/imports.h"
#include "main/mtypes.h"
#include "math/m_vector.h"
_TNL_ATTRIB_TEX6 = 14,
_TNL_ATTRIB_TEX7 = 15,
- _TNL_ATTRIB_GENERIC0 = 16, /* doesn't really exist! */
- _TNL_ATTRIB_GENERIC1 = 17,
- _TNL_ATTRIB_GENERIC2 = 18,
- _TNL_ATTRIB_GENERIC3 = 19,
- _TNL_ATTRIB_GENERIC4 = 20,
- _TNL_ATTRIB_GENERIC5 = 21,
- _TNL_ATTRIB_GENERIC6 = 22,
- _TNL_ATTRIB_GENERIC7 = 23,
- _TNL_ATTRIB_GENERIC8 = 24,
- _TNL_ATTRIB_GENERIC9 = 25,
- _TNL_ATTRIB_GENERIC10 = 26,
- _TNL_ATTRIB_GENERIC11 = 27,
- _TNL_ATTRIB_GENERIC12 = 28,
- _TNL_ATTRIB_GENERIC13 = 29,
- _TNL_ATTRIB_GENERIC14 = 30,
- _TNL_ATTRIB_GENERIC15 = 31,
+ _TNL_ATTRIB_GENERIC0 = 17, /* doesn't really exist! */
+ _TNL_ATTRIB_GENERIC1 = 18,
+ _TNL_ATTRIB_GENERIC2 = 19,
+ _TNL_ATTRIB_GENERIC3 = 20,
+ _TNL_ATTRIB_GENERIC4 = 21,
+ _TNL_ATTRIB_GENERIC5 = 22,
+ _TNL_ATTRIB_GENERIC6 = 23,
+ _TNL_ATTRIB_GENERIC7 = 24,
+ _TNL_ATTRIB_GENERIC8 = 25,
+ _TNL_ATTRIB_GENERIC9 = 26,
+ _TNL_ATTRIB_GENERIC10 = 27,
+ _TNL_ATTRIB_GENERIC11 = 28,
+ _TNL_ATTRIB_GENERIC12 = 29,
+ _TNL_ATTRIB_GENERIC13 = 30,
+ _TNL_ATTRIB_GENERIC14 = 31,
+ _TNL_ATTRIB_GENERIC15 = 32,
/* These alias with the generics, but they are not active
* concurrently, so it's not a problem. The TNL module
* generic attribute in order to pick up per-vertex material
* data.
*/
- _TNL_ATTRIB_MAT_FRONT_AMBIENT = 16,
- _TNL_ATTRIB_MAT_BACK_AMBIENT = 17,
- _TNL_ATTRIB_MAT_FRONT_DIFFUSE = 18,
- _TNL_ATTRIB_MAT_BACK_DIFFUSE = 19,
- _TNL_ATTRIB_MAT_FRONT_SPECULAR = 20,
- _TNL_ATTRIB_MAT_BACK_SPECULAR = 21,
- _TNL_ATTRIB_MAT_FRONT_EMISSION = 22,
- _TNL_ATTRIB_MAT_BACK_EMISSION = 23,
- _TNL_ATTRIB_MAT_FRONT_SHININESS = 24,
- _TNL_ATTRIB_MAT_BACK_SHININESS = 25,
- _TNL_ATTRIB_MAT_FRONT_INDEXES = 26,
- _TNL_ATTRIB_MAT_BACK_INDEXES = 27,
+ _TNL_ATTRIB_MAT_FRONT_AMBIENT = 17,
+ _TNL_ATTRIB_MAT_BACK_AMBIENT = 18,
+ _TNL_ATTRIB_MAT_FRONT_DIFFUSE = 19,
+ _TNL_ATTRIB_MAT_BACK_DIFFUSE = 20,
+ _TNL_ATTRIB_MAT_FRONT_SPECULAR = 21,
+ _TNL_ATTRIB_MAT_BACK_SPECULAR = 22,
+ _TNL_ATTRIB_MAT_FRONT_EMISSION = 23,
+ _TNL_ATTRIB_MAT_BACK_EMISSION = 24,
+ _TNL_ATTRIB_MAT_FRONT_SHININESS = 25,
+ _TNL_ATTRIB_MAT_BACK_SHININESS = 26,
+ _TNL_ATTRIB_MAT_FRONT_INDEXES = 27,
+ _TNL_ATTRIB_MAT_BACK_INDEXES = 28,
/* This is really a VERT_RESULT, not an attrib. Need to fix
* tnl to understand the difference.
*/
_TNL_ATTRIB_POINTSIZE = 16,
- _TNL_ATTRIB_MAX = 32
+ _TNL_ATTRIB_MAX = 33
} ;
#define _TNL_ATTRIB_TEX(u) (_TNL_ATTRIB_TEX0 + (u))
#define _TNL_FIRST_MAT _TNL_ATTRIB_MAT_FRONT_AMBIENT /* GENERIC0 */
#define _TNL_LAST_MAT _TNL_ATTRIB_MAT_BACK_INDEXES /* GENERIC11 */
+/* Number of available texture attributes */
+#define _TNL_NUM_TEX 8
+
/* Number of available generic attributes */
#define _TNL_NUM_GENERIC 16
};
-#define DECLARE_RENDERINPUTS(name) BITSET64_DECLARE(name, _TNL_ATTRIB_MAX)
-#define RENDERINPUTS_COPY BITSET64_COPY
-#define RENDERINPUTS_EQUAL BITSET64_EQUAL
-#define RENDERINPUTS_ZERO BITSET64_ZERO
-#define RENDERINPUTS_ONES BITSET64_ONES
-#define RENDERINPUTS_TEST BITSET64_TEST
-#define RENDERINPUTS_SET BITSET64_SET
-#define RENDERINPUTS_CLEAR BITSET64_CLEAR
-#define RENDERINPUTS_TEST_RANGE BITSET64_TEST_RANGE
-#define RENDERINPUTS_SET_RANGE BITSET64_SET_RANGE
-#define RENDERINPUTS_CLEAR_RANGE BITSET64_CLEAR_RANGE
+#define DECLARE_RENDERINPUTS(name) GLbitfield64 name
+#define RENDERINPUTS_COPY(x, y) do { (x) = (y); } while (0)
+#define RENDERINPUTS_EQUAL(x, y) ((x) == (y))
+#define RENDERINPUTS_ZERO(x) do { (x) = 0; } while (0)
+#define RENDERINPUTS_ONES(x) do { (x) = ~(GLbitfield64)0; } while (0)
+#define RENDERINPUTS_TEST(x, b) (((x) & BITFIELD64_BIT(b)) != 0)
+#define RENDERINPUTS_SET(x, b) ((x) |= BITFIELD64_BIT(b))
+#define RENDERINPUTS_CLEAR(x, b) ((x) &= ~BITFIELD64_BIT(b))
+#define RENDERINPUTS_TEST_RANGE(x, b, e) \
+ (((x) & BITFIELD64_RANGE((b), (e) - (b) + 1)) != 0)
/**