reverse some debug that slipped through
[mesa.git] / src / mesa / drivers / x11 / xm_tri.c
index 602eba41e6467000b9815380c08a002e0877faf8..01585b05b4d5bb82ee7e4ccf95ed4bb0693fe530 100644 (file)
@@ -1,10 +1,8 @@
-/* $Id: xm_tri.c,v 1.32 2003/03/01 01:50:24 brianp Exp $ */
-
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.3
  *
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  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"),
@@ -60,7 +58,7 @@
 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
 #define INTERP_RGB 1
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;
 
 #define RENDER_SPAN( span )                                    \
@@ -97,7 +95,7 @@
 #define PIXEL_TYPE GLuint
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
 
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLuint
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
 
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE bgr_t
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    for (i = 0; i < span.end; i++) {                            \
 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
 #define INTERP_RGB 1
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLushort
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    for (i = 0; i < span.end; i++) {                            \
 #define PIXEL_TYPE GLushort
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    GLint x = span.x, y = FLIP(xmesa->xm_buffer, span.y);       \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    GLint x = span.x, y = FLIP(xmesa->xm_buffer, span.y);       \
 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
 #define INTERP_RGB 1
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    LOOKUP_SETUP;                                               \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    GLint x = span.x, y = FLIP(xmesa->xm_buffer, span.y);       \
 #define INTERP_Z 1
 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;              \
    unsigned long pixel;                                                \
    PACK_TRUECOLOR(pixel, v2->color[0], v2->color[1], v2->color[2]);
 #define PIXEL_TYPE GLuint
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    unsigned long p = PACK_8B8G8R( v2->color[0],                \
                 v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                            \
 #define PIXEL_TYPE GLuint
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    unsigned long p = PACK_8R8G8B( v2->color[0],                \
                 v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                    \
 #define PIXEL_TYPE bgr_t
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    const GLubyte *color = v2->color;
 #define RENDER_SPAN( span )                            \
    GLuint i;                                           \
 #define INTERP_Z 1
 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLushort
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    unsigned long p = PACK_5R6G5B( v2->color[0],                \
             v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                            \
 #define PIXEL_TYPE GLushort
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    const GLubyte *color = v2->color;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    FLAT_DITHER_SETUP( v2->color[0], v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define INTERP_Z 1
 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;              \
    FLAT_DITHER_SETUP( v2->color[0], v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                                    \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    GLubyte r = v2->color[0];                                   \
    GLubyte g = v2->color[1];                                   \
    GLubyte b = v2->color[2];
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    LOOKUP_SETUP;                                       \
    GLubyte r = v2->color[0];                           \
    GLubyte g = v2->color[1];                           \
 #define NAME smooth_TRUECOLOR_triangle
 #define INTERP_RGB 1
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLuint
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    for (i = 0; i < span.end; i++) {                            \
 #define PIXEL_TYPE GLuint
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    for (i = 0; i < span.end; i++) {                            \
 #define PIXEL_TYPE bgr_t
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                            \
    GLuint i;                                           \
    PIXEL_TYPE *pixel = pRow;                           \
 #define NAME smooth_TRUEDITHER_triangle
 #define INTERP_RGB 1
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLushort
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    for (i = 0; i < span.end; i++) {                            \
 #define PIXEL_TYPE GLushort
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    GLint x = span.x, y = FLIP(xmesa->xm_buffer, span.y);       \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    GLint x = span.x, y = FLIP(xmesa->xm_buffer, span.y);       \
 #define NAME smooth_DITHER_triangle
 #define INTERP_RGB 1
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    LOOKUP_SETUP;                                               \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
    GLint x = span.x, y = FLIP(xmesa->xm_buffer, span.y);       \
  */
 #define NAME flat_TRUECOLOR_triangle
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;              \
    unsigned long pixel;                                                \
    PACK_TRUECOLOR(pixel, v2->color[0], v2->color[1], v2->color[2]);
 #define PIXEL_TYPE GLuint
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    unsigned long p = PACK_8B8G8R( v2->color[0],                \
                 v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                            \
 #define PIXEL_TYPE GLuint
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    unsigned long p = PACK_8R8G8B( v2->color[0],                \
                 v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                            \
 #define PIXEL_TYPE bgr_t
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    const GLubyte *color = v2->color;
 #define RENDER_SPAN( span )                            \
    GLuint i;                                           \
  */
 #define NAME flat_TRUEDITHER_triangle
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLushort
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    unsigned long p = PACK_5R6G5B( v2->color[0],                \
                 v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                            \
 #define PIXEL_TYPE GLushort
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    const GLubyte *color = v2->color;
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    FLAT_DITHER_SETUP( v2->color[0], v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                                    \
    GLuint i;                                                   \
  */
 #define NAME flat_DITHER_triangle
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    XMesaImage *img = xmesa->xm_buffer->backimage;              \
    FLAT_DITHER_SETUP( v2->color[0], v2->color[1], v2->color[2] );
 #define RENDER_SPAN( span )                                    \
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                             \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;         \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);                    \
    GLubyte r = v2->color[0];                                   \
    GLubyte g = v2->color[1];                                   \
    GLubyte b = v2->color[2];
 #define PIXEL_TYPE GLubyte
 #define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
 #define SETUP_CODE                                     \
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; \
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);            \
    LOOKUP_SETUP;                                       \
    GLubyte r = v2->color[0];                           \
    GLubyte g = v2->color[1];                           \
@@ -1307,15 +1305,15 @@ do {                                   \
 static swrast_tri_func get_triangle_func( GLcontext *ctx )
 {
    SWcontext *swrast = SWRAST_CONTEXT(ctx);
-   XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
+   XMesaContext xmesa = XMESA_CONTEXT(ctx);
    int depth = GET_VISUAL_DEPTH(xmesa->xm_visual);
 
-   (void) kernel1;
-
 #ifdef DEBUG
    triFuncName = NULL;
 #endif
 
+   if ((ctx->Color._DrawDestMask[0] & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0)
+      return (swrast_tri_func) NULL;
    if (ctx->RenderMode != GL_RENDER)  return (swrast_tri_func) NULL;
    if (ctx->Polygon.SmoothFlag)       return (swrast_tri_func) NULL;
    if (ctx->Texture._EnabledUnits)    return (swrast_tri_func) NULL;