ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

t_dd_triemit.h
Go to the documentation of this file.
00001 #ifndef DO_DEBUG_VERTS
00002 #define DO_DEBUG_VERTS 0
00003 #endif 
00004 
00005 #ifndef PRINT_VERTEX
00006 #define PRINT_VERTEX(x) 
00007 #endif
00008 
00009 #if defined(USE_X86_ASM)
00010 #define COPY_DWORDS( j, vb, vertsize, v )               \
00011 do {                                    \
00012     int __tmp;                          \
00013     __asm__ __volatile__( "rep ; movsl"             \
00014                   : "=%c" (j), "=D" (vb), "=S" (__tmp)  \
00015                   : "0" (vertsize),             \
00016                     "D" ((long)vb),             \
00017                     "S" ((long)v) );            \
00018 } while (0)
00019 #elif defined(HAVE_LE32_VERTS)
00020 #define COPY_DWORDS( j, vb, vertsize, v )               \
00021 do {                                    \
00022    for ( j = 0 ; j < vertsize ; j++ )                   \
00023       vb[j] = CPU_TO_LE32(((GLuint *)v)[j]);                \
00024    vb += vertsize;                          \
00025 } while (0)
00026 #else
00027 #define COPY_DWORDS( j, vb, vertsize, v )               \
00028 do {                                    \
00029    for ( j = 0 ; j < vertsize ; j++ )                   \
00030       vb[j] = ((GLuint *)v)[j];                     \
00031    vb += vertsize;                          \
00032 } while (0)
00033 #endif
00034 
00035 
00036 
00037 #if HAVE_QUADS
00038 static __inline void TAG(quad)( CTX_ARG,
00039                 VERTEX *v0,
00040                 VERTEX *v1,
00041                 VERTEX *v2,
00042                 VERTEX *v3 )
00043 {
00044    GLuint vertsize = GET_VERTEX_DWORDS();
00045    GLuint *vb = (GLuint *)ALLOC_VERTS( 4, vertsize);
00046    GLuint j;
00047 
00048    if (DO_DEBUG_VERTS) {
00049       fprintf(stderr, "%s\n", __FUNCTION__);
00050       PRINT_VERTEX(v0);
00051       PRINT_VERTEX(v1);
00052       PRINT_VERTEX(v2);
00053       PRINT_VERTEX(v3);
00054    }
00055       
00056    COPY_DWORDS( j, vb, vertsize, v0 );
00057    COPY_DWORDS( j, vb, vertsize, v1 );
00058    COPY_DWORDS( j, vb, vertsize, v2 );
00059    COPY_DWORDS( j, vb, vertsize, v3 );
00060 }
00061 #else
00062 static __inline void TAG(quad)( CTX_ARG,
00063                 VERTEX *v0,
00064                 VERTEX *v1,
00065                 VERTEX *v2,
00066                 VERTEX *v3 )
00067 {
00068    GLuint vertsize = GET_VERTEX_DWORDS();
00069    GLuint *vb = (GLuint *)ALLOC_VERTS(  6, vertsize);
00070    GLuint j;
00071 
00072    if (DO_DEBUG_VERTS) {
00073       fprintf(stderr, "%s\n", __FUNCTION__);
00074       PRINT_VERTEX(v0);
00075       PRINT_VERTEX(v1);
00076       PRINT_VERTEX(v2);
00077       PRINT_VERTEX(v3);
00078    }
00079  
00080    COPY_DWORDS( j, vb, vertsize, v0 );
00081    COPY_DWORDS( j, vb, vertsize, v1 );
00082    COPY_DWORDS( j, vb, vertsize, v3 );
00083    COPY_DWORDS( j, vb, vertsize, v1 );
00084    COPY_DWORDS( j, vb, vertsize, v2 );
00085    COPY_DWORDS( j, vb, vertsize, v3 );
00086 }
00087 #endif
00088 
00089 
00090 static __inline void TAG(triangle)( CTX_ARG,
00091                     VERTEX *v0,
00092                     VERTEX *v1,
00093                     VERTEX *v2 )
00094 {
00095    GLuint vertsize = GET_VERTEX_DWORDS();
00096    GLuint *vb = (GLuint *)ALLOC_VERTS( 3, vertsize);
00097    GLuint j;
00098 
00099    if (DO_DEBUG_VERTS) {
00100       fprintf(stderr, "%s\n", __FUNCTION__);
00101       PRINT_VERTEX(v0);
00102       PRINT_VERTEX(v1);
00103       PRINT_VERTEX(v2);
00104    }
00105 
00106    COPY_DWORDS( j, vb, vertsize, v0 );
00107    COPY_DWORDS( j, vb, vertsize, v1 );
00108    COPY_DWORDS( j, vb, vertsize, v2 );
00109 }
00110 
00111 
00112 #if HAVE_LINES
00113 static __inline void TAG(line)( CTX_ARG,
00114                 VERTEX *v0,
00115                 VERTEX *v1 )
00116 {
00117    GLuint vertsize = GET_VERTEX_DWORDS();
00118    GLuint *vb = (GLuint *)ALLOC_VERTS( 2, vertsize);
00119    GLuint j;
00120 
00121    COPY_DWORDS( j, vb, vertsize, v0 );
00122    COPY_DWORDS( j, vb, vertsize, v1 );
00123 }
00124 #endif
00125 
00126 #if HAVE_POINTS
00127 static __inline void TAG(point)( CTX_ARG,
00128                  VERTEX *v0 )
00129 {
00130    GLuint vertsize = GET_VERTEX_DWORDS();
00131    GLuint *vb = (GLuint *)ALLOC_VERTS( 1, vertsize);
00132    int j;
00133 
00134    COPY_DWORDS( j, vb, vertsize, v0 );
00135 }
00136 #endif
00137 
00138 
00139 static void TAG(fast_clipped_poly)( GLcontext *ctx, const GLuint *elts,
00140                     GLuint n )
00141 {
00142    LOCAL_VARS
00143    GLuint vertsize = GET_VERTEX_DWORDS();
00144    GLuint *vb = (GLuint *)ALLOC_VERTS( (n-2) * 3, vertsize );
00145    const GLuint *start = (const GLuint *)VERT(elts[0]);
00146    GLuint i,j;
00147 
00148    if (DO_DEBUG_VERTS) {
00149       fprintf(stderr, "%s\n", __FUNCTION__);
00150       PRINT_VERTEX(VERT(elts[0]));
00151       PRINT_VERTEX(VERT(elts[1]));
00152    }
00153 
00154    for (i = 2 ; i < n ; i++) {
00155       if (DO_DEBUG_VERTS) {
00156      PRINT_VERTEX(VERT(elts[i]));
00157       }
00158 
00159       COPY_DWORDS( j, vb, vertsize, VERT(elts[i-1]) );
00160       COPY_DWORDS( j, vb, vertsize, VERT(elts[i]) );
00161       COPY_DWORDS( j, vb, vertsize, start );
00162    }
00163 }
00164 

Generated on Sun May 27 2012 04:20:47 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.