diff options
author | Brian Paul <[email protected]> | 2004-09-24 14:30:13 +0000 |
---|---|---|
committer | Brian Paul <[email protected]> | 2004-09-24 14:30:13 +0000 |
commit | 328a039413fd2b8649511f1ca130df2a59f2c71c (patch) | |
tree | f0739e2a41ee9ced641f6b2c3a9137d708e0899e /src/mesa/drivers/dri/common/depthtmp.h | |
parent | d9873c59ef4d14b5e3137cb2d7c765797f82ac56 (diff) |
patches for clearing hw depth buffers from software fallback (Nicolai Haehnle)
Diffstat (limited to 'src/mesa/drivers/dri/common/depthtmp.h')
-rw-r--r-- | src/mesa/drivers/dri/common/depthtmp.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/common/depthtmp.h b/src/mesa/drivers/dri/common/depthtmp.h index f3da61e5199..74ebd6d5e52 100644 --- a/src/mesa/drivers/dri/common/depthtmp.h +++ b/src/mesa/drivers/dri/common/depthtmp.h @@ -64,6 +64,42 @@ static void TAG(WriteDepthSpan)( GLcontext *ctx, HW_WRITE_UNLOCK(); } +static void TAG(WriteMonoDepthSpan)( GLcontext *ctx, + GLuint n, GLint x, GLint y, + const GLdepth depth, + const GLubyte mask[] ) +{ + HW_WRITE_LOCK() + { + GLint x1; + GLint n1; + LOCAL_DEPTH_VARS; + + y = Y_FLIP( y ); + + HW_CLIPLOOP() + { + GLint i = 0; + CLIPSPAN( x, y, n, x1, n1, i ); + + if ( DBG ) fprintf( stderr, "%s %d..%d (x1 %d) = %u\n", + __FUNCTION__, (int)i, (int)n1, (int)x1, (uint)depth ); + + if ( mask ) { + for ( ; i < n1 ; i++, x1++ ) { + if ( mask[i] ) WRITE_DEPTH( x1, y, depth ); + } + } else { + for ( ; i < n1 ; i++, x1++ ) { + WRITE_DEPTH( x1, y, depth ); + } + } + } + HW_ENDCLIPLOOP(); + } + HW_WRITE_UNLOCK(); +} + static void TAG(WriteDepthPixels)( GLcontext *ctx, GLuint n, const GLint x[], |