glformats: add _mesa_es3_error_check_format_and_type
[mesa.git] / src / mesa / math / m_xform.h
index badc29eaf5faf3a8d8782ca40dede572ab715e95..280248883929bc079c3022ac23f223a0de15b5eb 100644 (file)
@@ -1,9 +1,8 @@
-
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  7.3
  *
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2008  Brian Paul   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"),
  */
 
 
-
-
-
 #ifndef _M_XFORM_H
 #define _M_XFORM_H
 
 
-#include "glheader.h"
-#include "config.h"
-#include "math/m_vector.h"
+#include "main/compiler.h"
+#include "main/glheader.h"
 #include "math/m_matrix.h"
+#include "math/m_vector.h"
 
 #ifdef USE_X86_ASM
 #define _XFORMAPI _ASMAPI
 #define _XFORMAPIP *
 #endif
 
-/*
- * Transform a point (column vector) by a matrix:   Q = M * P
- */
-#define TRANSFORM_POINT( Q, M, P )                                     \
-   Q[0] = M[0] * P[0] + M[4] * P[1] + M[8] *  P[2] + M[12] * P[3];     \
-   Q[1] = M[1] * P[0] + M[5] * P[1] + M[9] *  P[2] + M[13] * P[3];     \
-   Q[2] = M[2] * P[0] + M[6] * P[1] + M[10] * P[2] + M[14] * P[3];     \
-   Q[3] = M[3] * P[0] + M[7] * P[1] + M[11] * P[2] + M[15] * P[3];
-
-
-#define TRANSFORM_POINT3( Q, M, P )                            \
-   Q[0] = M[0] * P[0] + M[4] * P[1] + M[8] *  P[2] + M[12];    \
-   Q[1] = M[1] * P[0] + M[5] * P[1] + M[9] *  P[2] + M[13];    \
-   Q[2] = M[2] * P[0] + M[6] * P[1] + M[10] * P[2] + M[14];    \
-   Q[3] = M[3] * P[0] + M[7] * P[1] + M[11] * P[2] + M[15];
-
-
-/*
- * Transform a normal (row vector) by a matrix:  [NX NY NZ] = N * MAT
- */
-#define TRANSFORM_NORMAL( TO, N, MAT )                         \
-do {                                                           \
-   TO[0] = N[0] * MAT[0] + N[1] * MAT[1] + N[2] * MAT[2];      \
-   TO[1] = N[0] * MAT[4] + N[1] * MAT[5] + N[2] * MAT[6];      \
-   TO[2] = N[0] * MAT[8] + N[1] * MAT[9] + N[2] * MAT[10];     \
-} while (0)
-
-
-extern void _mesa_transform_vector( GLfloat u[4],
-                                CONST GLfloat v[4],
-                                 CONST GLfloat m[16] );
-
 
 extern void
-_math_init_transformation( void );
-
+_math_init_transformation(void);
+extern void
+init_c_cliptest(void);
 
 /* KW: Clip functions now do projective divide as well.  The projected
  * coordinates are very useful to us because they let us cull
@@ -130,32 +95,34 @@ _math_init_transformation( void );
 #define CLIP_NEAR_BIT    0x10
 #define CLIP_FAR_BIT     0x20
 #define CLIP_USER_BIT    0x40
-#define CLIP_ALL_BITS    0x3f
+#define CLIP_CULL_BIT    0x80
+#define CLIP_FRUSTUM_BITS    0x3f
 
 
 typedef GLvector4f * (_XFORMAPIP clip_func)( GLvector4f *vClip,
                                             GLvector4f *vProj,
                                             GLubyte clipMask[],
                                             GLubyte *orMask,
-                                            GLubyte *andMask );
+                                            GLubyte *andMask,
+                                            GLboolean viewport_z_clip );
 
 typedef void (*dotprod_func)( GLfloat *out,
                              GLuint out_stride,
-                             CONST GLvector4f *coord_vec,
-                             CONST GLfloat plane[4] );
+                             const GLvector4f *coord_vec,
+                             const GLfloat plane[4] );
 
 typedef void (*vec_copy_func)( GLvector4f *to,
-                              CONST GLvector4f *from );
+                              const GLvector4f *from );
 
 
 
 /*
  * Functions for transformation of normals in the VB.
  */
-typedef void (_NORMAPIP normal_func)( CONST GLmatrix *mat,
+typedef void (_NORMAPIP normal_func)( const GLmatrix *mat,
                                      GLfloat scale,
-                                     CONST GLvector4f *in,
-                                     CONST GLfloat lengths[],
+                                     const GLvector4f *in,
+                                     const GLfloat lengths[],
                                      GLvector4f *dest );
 
 
@@ -175,20 +142,8 @@ typedef void (_NORMAPIP normal_func)( CONST GLmatrix *mat,
  *     parameter, to allow a unified interface.
  */
 typedef void (_XFORMAPIP transform_func)( GLvector4f *to_vec,
-                                         CONST GLfloat m[16],
-                                         CONST GLvector4f *from_vec );
-
-
-extern GLvector4f *_mesa_project_points( GLvector4f *to,
-                                        CONST GLvector4f *from );
-
-extern void _mesa_transform_bounds3( GLubyte *orMask, GLubyte *andMask,
-                                    CONST GLfloat m[16],
-                                    CONST GLfloat src[][3] );
-
-extern void _mesa_transform_bounds2( GLubyte *orMask, GLubyte *andMask,
-                                    CONST GLfloat m[16],
-                                    CONST GLfloat src[][3] );
+                                         const GLfloat m[16],
+                                         const GLvector4f *from_vec );
 
 
 extern dotprod_func  _mesa_dotprod_tab[5];
@@ -204,9 +159,6 @@ extern normal_func   _mesa_normal_tab[0xf];
 extern transform_func *_mesa_transform_tab[5];
 
 
-extern void _mesa_transform_point_sz( GLfloat Q[4], CONST GLfloat M[16],
-                                     CONST GLfloat P[4], GLuint sz );
-
 
 #define TransformRaw( to, mat, from ) \
    ( _mesa_transform_tab[(from)->size][(mat)->type]( to, (mat)->m, from ), \