struct sw_span is again allocated on the stack, but the arrays of span
data are broken out into a new struct span_arrays which is allocated per-context (to avoid huge stack allocations - a problem on Windows). This lets us use span.redStep instead of span->redStep (for example) to hopefully get slightly better performance in the triangle functions.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* $Id: osmesa.c,v 1.86 2002/07/09 01:22:51 brianp Exp $ */
|
||||
/* $Id: osmesa.c,v 1.87 2002/08/07 00:45:07 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -1886,20 +1886,20 @@ static void smooth_rgba_z_triangle( GLcontext *ctx,
|
||||
#define INTERP_ALPHA 1
|
||||
#define RENDER_SPAN( span ) \
|
||||
GLuint i; \
|
||||
GLchan *img = PIXELADDR4(span->x, span->y); \
|
||||
for (i = 0; i < span->end; i++, img += 4) { \
|
||||
const GLdepth z = FixedToDepth(span->z); \
|
||||
GLchan *img = PIXELADDR4(span.x, span.y); \
|
||||
for (i = 0; i < span.end; i++, img += 4) { \
|
||||
const GLdepth z = FixedToDepth(span.z); \
|
||||
if (z < zRow[i]) { \
|
||||
PACK_RGBA(img, FixedToChan(span->red), \
|
||||
FixedToChan(span->green), FixedToChan(span->blue), \
|
||||
FixedToChan(span->alpha)); \
|
||||
PACK_RGBA(img, FixedToChan(span.red), \
|
||||
FixedToChan(span.green), FixedToChan(span.blue), \
|
||||
FixedToChan(span.alpha)); \
|
||||
zRow[i] = z; \
|
||||
} \
|
||||
span->red += span->redStep; \
|
||||
span->green += span->greenStep; \
|
||||
span->blue += span->blueStep; \
|
||||
span->alpha += span->alphaStep; \
|
||||
span->z += span->zStep; \
|
||||
span.red += span.redStep; \
|
||||
span.green += span.greenStep; \
|
||||
span.blue += span.blueStep; \
|
||||
span.alpha += span.alphaStep; \
|
||||
span.z += span.zStep; \
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -1930,14 +1930,14 @@ static void flat_rgba_z_triangle( GLcontext *ctx,
|
||||
|
||||
#define RENDER_SPAN( span ) \
|
||||
GLuint i; \
|
||||
GLuint *img = (GLuint *) PIXELADDR4(span->x, span->y); \
|
||||
for (i = 0; i < span->end; i++) { \
|
||||
const GLdepth z = FixedToDepth(span->z); \
|
||||
GLuint *img = (GLuint *) PIXELADDR4(span.x, span.y); \
|
||||
for (i = 0; i < span.end; i++) { \
|
||||
const GLdepth z = FixedToDepth(span.z); \
|
||||
if (z < zRow[i]) { \
|
||||
img[i] = pixel; \
|
||||
zRow[i] = z; \
|
||||
} \
|
||||
span->z += span->zStep; \
|
||||
span.z += span.zStep; \
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
|
Reference in New Issue
Block a user