Merge branch 'pipe-format-simplify'
[mesa.git] / src / gallium / auxiliary / draw / draw_pt_elts.c
index 585b83fa9031dd4bc18ab24c1586a344e5b3e281..88f4d9f495ac306aa0f0e1ae9138d1b9362c2dcb 100644 (file)
@@ -1,88 +1,89 @@
-/**************************************************************************\r
- * \r
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.\r
- * All Rights Reserved.\r
- * \r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the\r
- * "Software"), to deal in the Software without restriction, including\r
- * without limitation the rights to use, copy, modify, merge, publish,\r
- * distribute, sub license, and/or sell copies of the Software, and to\r
- * permit persons to whom the Software is furnished to do so, subject to\r
- * the following conditions:\r
- * \r
- * The above copyright notice and this permission notice (including the\r
- * next paragraph) shall be included in all copies or substantial portions\r
- * of the Software.\r
- * \r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\r
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR\r
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
- * \r
- **************************************************************************/\r
-\r
- /*\r
-  * Authors:\r
-  *   Keith Whitwell <keith@tungstengraphics.com>\r
-  */\r
-\r
-#include "draw/draw_pt.h"\r
-#include "draw/draw_private.h"\r
-\r
-/* Neat get_elt func that also works for varrays drawing by encoding\r
- * the start value into a pointer.  \r
- */\r
-\r
-static ushort elt_uint( const void *elts, ushort idx )\r
-{\r
-   return *(((const uint *)elts) + idx);\r
-}\r
-\r
-static ushort elt_ushort( const void *elts, ushort idx )\r
-{\r
-   return *(((const ushort *)elts) + idx);\r
-}\r
-\r
-static ushort elt_ubyte( const void *elts, ushort idx )\r
-{\r
-   return *(((const ubyte *)elts) + idx);\r
-}\r
-\r
-static ushort elt_vert( const void *elts, ushort idx )\r
-{\r
-   return (const ubyte *)elts - (const ubyte *)NULL + idx;\r
-}\r
-\r
-pt_elt_func draw_pt_elt_func( struct draw_context *draw )\r
-{\r
-   switch (draw->user.eltSize) {\r
-   case 0: return elt_vert;\r
-   case 1: return elt_ubyte;\r
-   case 2: return elt_ushort; \r
-   case 4: return elt_uint;\r
-   default: return NULL;\r
-   }\r
-}     \r
-\r
-const void *draw_pt_elt_ptr( struct draw_context *draw,\r
-                             unsigned start )\r
-{\r
-   const char *elts = draw->user.elts;\r
-\r
-   switch (draw->user.eltSize) {\r
-   case 0: \r
-      return (const void *)(((const ubyte *)NULL) + start);\r
-   case 1: \r
-      return (const void *)(((const ubyte *)elts) + start);\r
-   case 2: \r
-      return (const void *)(((const ushort *)elts) + start);\r
-   case 4: \r
-      return (const void *)(((const uint *)elts) + start);\r
-   default:\r
-      return NULL;\r
-   }\r
-}\r
+/**************************************************************************
+ * 
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * 
+ **************************************************************************/
+
+ /*
+  * Authors:
+  *   Keith Whitwell <keith@tungstengraphics.com>
+  */
+
+#include "draw/draw_pt.h"
+#include "draw/draw_private.h"
+
+/* Neat get_elt func that also works for varrays drawing by encoding
+ * the start value into a pointer.  
+ */
+
+static unsigned elt_uint( const void *elts, unsigned idx )
+{
+   return *(((const uint *)elts) + idx);
+}
+
+static unsigned elt_ushort( const void *elts, unsigned idx )
+{
+   return *(((const ushort *)elts) + idx);
+}
+
+static unsigned elt_ubyte( const void *elts, unsigned idx )
+{
+   return *(((const ubyte *)elts) + idx);
+}
+
+static unsigned elt_vert( const void *elts, unsigned idx )
+{
+   /* unsigned index is packed in the pointer */
+   return (unsigned)(uintptr_t)elts + idx;
+}
+
+pt_elt_func draw_pt_elt_func( struct draw_context *draw )
+{
+   switch (draw->pt.user.eltSize) {
+   case 0: return &elt_vert;
+   case 1: return &elt_ubyte;
+   case 2: return &elt_ushort; 
+   case 4: return &elt_uint;
+   default: return NULL;
+   }
+}     
+
+const void *draw_pt_elt_ptr( struct draw_context *draw,
+                             unsigned start )
+{
+   const char *elts = draw->pt.user.elts;
+
+   switch (draw->pt.user.eltSize) {
+   case 0: 
+      return (const void *)(((const ubyte *)NULL) + start);
+   case 1: 
+      return (const void *)(((const ubyte *)elts) + start);
+   case 2: 
+      return (const void *)(((const ushort *)elts) + start);
+   case 4: 
+      return (const void *)(((const uint *)elts) + start);
+   default:
+      return NULL;
+   }
+}