vbo: remove dead code in vbo_can_merge_prims
[mesa.git] / src / mesa / vbo / vbo_attrib.h
index 0ae928f2af4891f3e18ae95cffc1c05b3d496b22..165734b30a66bd28fe0fc606cae0d6bf6bde0883 100644 (file)
@@ -1,6 +1,6 @@
 /*
  Copyright (C) Intel Corp.  2006.  All Rights Reserved.
- Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to
+ Intel funded Tungsten Graphics to
  develop this 3D driver.
  
  Permission is hereby granted, free of charge, to any person obtaining
  **********************************************************************/
  /*
   * Authors:
-  *   Keith Whitwell <keith@tungstengraphics.com>
+  *   Keith Whitwell <keithw@vmware.com>
   */
 
 #ifndef VBO_ATTRIB_H
 #define VBO_ATTRIB_H
 
-
 /*
- * Note: The first attributes match the VERT_ATTRIB_* definitions
- * in mtypes.h.  However, the tnl module has additional attributes
- * for materials, color indexes, edge flags, etc.
- */
-/* Although it's nice to use these as bit indexes in a DWORD flag, we
- * could manage without if necessary.  Another limit currently is the
- * number of bits allocated for these numbers in places like vertex
- * program instruction formats and register layouts.
+ * Note: The first 32 attributes match the VERT_ATTRIB_* definitions.
+ * However, we have extra attributes for storing per-vertex glMaterial
+ * values.  The material attributes get shifted into the generic positions
+ * at draw time.
+ *
+ * One reason we can't alias materials and generics here is display lists.
+ * A display list might contain both generic attributes and material
+ * attributes which are selected at draw time depending on whether we're
+ * using fixed function or a shader.  <sigh>
  */
-enum {
-       VBO_ATTRIB_POS = 0,
-       VBO_ATTRIB_WEIGHT = 1,
-       VBO_ATTRIB_NORMAL = 2,
-       VBO_ATTRIB_COLOR0 = 3,
-       VBO_ATTRIB_COLOR1 = 4,
-       VBO_ATTRIB_FOG = 5,
-       VBO_ATTRIB_INDEX = 6,        
-       VBO_ATTRIB_EDGEFLAG = 7,     
-       VBO_ATTRIB_TEX0 = 8,
-       VBO_ATTRIB_TEX1 = 9,
-       VBO_ATTRIB_TEX2 = 10,
-       VBO_ATTRIB_TEX3 = 11,
-       VBO_ATTRIB_TEX4 = 12,
-       VBO_ATTRIB_TEX5 = 13,
-       VBO_ATTRIB_TEX6 = 14,
-       VBO_ATTRIB_TEX7 = 15,
+enum vbo_attrib {
+   VBO_ATTRIB_POS,
+   VBO_ATTRIB_NORMAL,
+   VBO_ATTRIB_COLOR0,
+   VBO_ATTRIB_COLOR1,
+   VBO_ATTRIB_FOG,
+   VBO_ATTRIB_COLOR_INDEX,
+   VBO_ATTRIB_EDGEFLAG,
+   VBO_ATTRIB_TEX0,
+   VBO_ATTRIB_TEX1,
+   VBO_ATTRIB_TEX2,
+   VBO_ATTRIB_TEX3,
+   VBO_ATTRIB_TEX4,
+   VBO_ATTRIB_TEX5,
+   VBO_ATTRIB_TEX6,
+   VBO_ATTRIB_TEX7,
+   VBO_ATTRIB_POINT_SIZE,
 
-       VBO_ATTRIB_GENERIC0 = 16, /* Not used? */
-       VBO_ATTRIB_GENERIC1 = 17,
-       VBO_ATTRIB_GENERIC2 = 18,
-       VBO_ATTRIB_GENERIC3 = 19,
-       VBO_ATTRIB_GENERIC4 = 20,
-       VBO_ATTRIB_GENERIC5 = 21,
-       VBO_ATTRIB_GENERIC6 = 22,
-       VBO_ATTRIB_GENERIC7 = 23,
-       VBO_ATTRIB_GENERIC8 = 24,
-       VBO_ATTRIB_GENERIC9 = 25,
-       VBO_ATTRIB_GENERIC10 = 26,
-       VBO_ATTRIB_GENERIC11 = 27,
-       VBO_ATTRIB_GENERIC12 = 28,
-       VBO_ATTRIB_GENERIC13 = 29,
-       VBO_ATTRIB_GENERIC14 = 30,
-       VBO_ATTRIB_GENERIC15 = 31,
+   VBO_ATTRIB_GENERIC0, /* Not used? */
+   VBO_ATTRIB_GENERIC1,
+   VBO_ATTRIB_GENERIC2,
+   VBO_ATTRIB_GENERIC3,
+   VBO_ATTRIB_GENERIC4,
+   VBO_ATTRIB_GENERIC5,
+   VBO_ATTRIB_GENERIC6,
+   VBO_ATTRIB_GENERIC7,
+   VBO_ATTRIB_GENERIC8,
+   VBO_ATTRIB_GENERIC9,
+   VBO_ATTRIB_GENERIC10,
+   VBO_ATTRIB_GENERIC11,
+   VBO_ATTRIB_GENERIC12,
+   VBO_ATTRIB_GENERIC13,
+   VBO_ATTRIB_GENERIC14,
+   VBO_ATTRIB_GENERIC15,
 
-       /* XXX: in the vertex program InputsRead flag, we alias
-        * materials and generics and use knowledge about the program
-        * (whether it is a fixed-function emulation) to
-        * differentiate.  Here we must keep them apart instead.
-        */
-       VBO_ATTRIB_MAT_FRONT_AMBIENT = 32, 
-       VBO_ATTRIB_MAT_BACK_AMBIENT = 33,
-       VBO_ATTRIB_MAT_FRONT_DIFFUSE = 34,
-       VBO_ATTRIB_MAT_BACK_DIFFUSE = 35,
-       VBO_ATTRIB_MAT_FRONT_SPECULAR = 36,
-       VBO_ATTRIB_MAT_BACK_SPECULAR = 37,
-       VBO_ATTRIB_MAT_FRONT_EMISSION = 38,
-       VBO_ATTRIB_MAT_BACK_EMISSION = 39,
-       VBO_ATTRIB_MAT_FRONT_SHININESS = 40,
-       VBO_ATTRIB_MAT_BACK_SHININESS = 41,
-       VBO_ATTRIB_MAT_FRONT_INDEXES = 42,
-       VBO_ATTRIB_MAT_BACK_INDEXES = 43, 
+   /* XXX: in the vertex program inputs_read flag, we alias
+    * materials and generics and use knowledge about the program
+    * (whether it is a fixed-function emulation) to
+    * differentiate.  Here we must keep them apart instead.
+    */
+   VBO_ATTRIB_MAT_FRONT_AMBIENT,
+   VBO_ATTRIB_MAT_BACK_AMBIENT,
+   VBO_ATTRIB_MAT_FRONT_DIFFUSE,
+   VBO_ATTRIB_MAT_BACK_DIFFUSE,
+   VBO_ATTRIB_MAT_FRONT_SPECULAR,
+   VBO_ATTRIB_MAT_BACK_SPECULAR,
+   VBO_ATTRIB_MAT_FRONT_EMISSION,
+   VBO_ATTRIB_MAT_BACK_EMISSION,
+   VBO_ATTRIB_MAT_FRONT_SHININESS,
+   VBO_ATTRIB_MAT_BACK_SHININESS,
+   VBO_ATTRIB_MAT_FRONT_INDEXES,
+   VBO_ATTRIB_MAT_BACK_INDEXES,
 
-       VBO_ATTRIB_MAX = 44
+   VBO_ATTRIB_MAX
 };
 
 #define VBO_ATTRIB_FIRST_MATERIAL VBO_ATTRIB_MAT_FRONT_AMBIENT
 #define VBO_ATTRIB_LAST_MATERIAL VBO_ATTRIB_MAT_BACK_INDEXES
 
+
+/** VBO_ATTRIB_POS .. VBO_ATTRIB_POINT_SIZE */
+#define VBO_ATTRIBS_LEGACY  BITFIELD64_MASK(VBO_ATTRIB_GENERIC0)
+
+/** VBO_ATTRIB_MAT_FRONT_AMBIENT .. VBO_ATTRIB_MAT_BACK_INDEXES */
+#define VBO_ATTRIBS_MATERIALS BITFIELD64_RANGE(VBO_ATTRIB_MAT_FRONT_AMBIENT, \
+                     VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_FIRST_MATERIAL + 1)
+
+/** Shift to move legacy material attribs into generic slots */
+#define VBO_MATERIAL_SHIFT \
+   (VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_FIRST_MATERIAL + 1)
+
+
+
 #define VBO_MAX_COPIED_VERTS 3
 
 #endif