st/mesa: fix st_CopyPixels without support for stencil exports
[mesa.git] / src / mesa / math / m_vector.h
index 647388ac7d0ebf127479e6458f4a0d5b034690ba..2065324556bfd49aff34155c6cdd5a4f34c42ffc 100644 (file)
@@ -1,6 +1,5 @@
 /*
  * Mesa 3-D graphics library
- * Version:  7.3
  *
  * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
  *
  * 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 NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL 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.
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
  */
 
 /*
 #define _M_VECTOR_H_
 
 #include "main/glheader.h"
-#include "main/mtypes.h"               /* hack for GLchan */
+#define MATH_ASM_PTR_SIZE sizeof(void *)
+#include "math/m_vector_asm.h"
 
-
-#define VEC_DIRTY_0        0x1
-#define VEC_DIRTY_1        0x2
-#define VEC_DIRTY_2        0x4
-#define VEC_DIRTY_3        0x8
 #define VEC_MALLOC         0x10 /* storage field points to self-allocated mem*/
 #define VEC_NOT_WRITEABLE  0x40        /* writable elements to hold clipped data */
 #define VEC_BAD_STRIDE     0x100 /* matches tnl's prefered stride */
 
 
-#define VEC_SIZE_1   VEC_DIRTY_0
-#define VEC_SIZE_2   (VEC_DIRTY_0|VEC_DIRTY_1)
-#define VEC_SIZE_3   (VEC_DIRTY_0|VEC_DIRTY_1|VEC_DIRTY_2)
-#define VEC_SIZE_4   (VEC_DIRTY_0|VEC_DIRTY_1|VEC_DIRTY_2|VEC_DIRTY_3)
 
 
 
-/* Wrap all the information about vectors up in a struct.  Has
- * additional fields compared to the other vectors to help us track of
+/**
+ * Wrap all the information about vectors up in a struct.  Has
+ * additional fields compared to the other vectors to help us track
  * different vertex sizes, and whether we need to clean columns out
  * because they contain non-(0,0,0,1) values.
  *
  * the transformation routines.
  */
 typedef struct {
-   GLfloat (*data)[4]; /* may be malloc'd or point to client data */
-   GLfloat *start;     /* points somewhere inside of <data> */
-   GLuint count;       /* size of the vector (in elements) */
-   GLuint stride;      /* stride from one element to the next (in bytes) */
-   GLuint size;                /* 2-4 for vertices and 1-4 for texcoords */
-   GLuint flags;       /* which columns are dirty */
-   void *storage;      /* self-allocated storage */
+   GLfloat (*data)[4]; /**< may be malloc'd or point to client data */
+   GLfloat *start;     /**< points somewhere inside of GLvector4f::data */
+   GLuint count;       /**< size of the vector (in elements) */
+   GLuint stride;      /**< stride from one element to the next (in bytes) */
+   GLuint size;                /**< 2-4 for vertices and 1-4 for texcoords */
+   GLbitfield flags;   /**< bitmask of VEC_x flags */
+   void *storage;      /**< self-allocated storage */
+   GLuint storage_count; /**< storage size in elements */
 } GLvector4f;
 
 
-extern void _mesa_vector4f_init( GLvector4f *v, GLuint flags,
+extern void _mesa_vector4f_init( GLvector4f *v, GLbitfield flags,
                              GLfloat (*storage)[4] );
-extern void _mesa_vector4f_alloc( GLvector4f *v, GLuint flags,
+extern void _mesa_vector4f_alloc( GLvector4f *v, GLbitfield flags,
                               GLuint count, GLuint alignment );
 extern void _mesa_vector4f_free( GLvector4f *v );
-extern void _mesa_vector4f_print( GLvector4f *v, GLubyte *, GLboolean );
+extern void _mesa_vector4f_print( const GLvector4f *v, const GLubyte *, GLboolean );
 extern void _mesa_vector4f_clean_elem( GLvector4f *vec, GLuint nr, GLuint elt );
 
 
-
-
-
-/*
+/**
  * Given vector <v>, return a pointer (cast to <type *> to the <i>-th element.
  *
  * End up doing a lot of slow imuls if not careful.