From 242fd9df3b2266402b3f6b20447798fb3bf57d53 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 24 Dec 2011 08:54:26 -0700 Subject: [PATCH] swrast: use _swrast_pixel_address() helper function Reviewed-by: Eric Anholt --- src/mesa/swrast/s_context.h | 12 ++++++++++++ src/mesa/swrast/s_depth.c | 18 ++++-------------- src/mesa/swrast/s_stencil.c | 22 ++++------------------ 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/src/mesa/swrast/s_context.h b/src/mesa/swrast/s_context.h index 446b990d990..af9e49ecbb6 100644 --- a/src/mesa/swrast/s_context.h +++ b/src/mesa/swrast/s_context.h @@ -422,5 +422,17 @@ _swrast_unmap_renderbuffers(struct gl_context *ctx); #define ATTRIB_LOOP_END } } +/** + * Return the address of a pixel value in a mapped renderbuffer. + */ +static inline GLubyte * +_swrast_pixel_address(struct gl_renderbuffer *rb, GLint x, GLint y) +{ + const GLint bpp = _mesa_get_format_bytes(rb->Format); + const GLint rowStride = rb->RowStride * bpp; + return (GLubyte *) rb->Data + y * rowStride + x * bpp; +} + + #endif diff --git a/src/mesa/swrast/s_depth.c b/src/mesa/swrast/s_depth.c index 806e62b5ea0..f87adaa8489 100644 --- a/src/mesa/swrast/s_depth.c +++ b/src/mesa/swrast/s_depth.c @@ -31,6 +31,7 @@ #include "main/macros.h" #include "main/imports.h" +#include "s_context.h" #include "s_depth.h" #include "s_span.h" @@ -266,18 +267,6 @@ put_z32_values(struct gl_context *ctx, struct gl_renderbuffer *rb, } -/** - * Return the address of a Z value in a renderbuffer. - */ -static INLINE void * -get_z_address(struct gl_renderbuffer *rb, GLint x, GLint y) -{ - const GLint bpp = _mesa_get_format_bytes(rb->Format); - const GLint rowStride = rb->RowStride * bpp; - return (GLubyte *) rb->Data + y * rowStride + x * bpp; -} - - /** * Apply depth (Z) buffer testing to the span. * \return approx number of pixels that passed (only zero is reliable) @@ -288,7 +277,7 @@ _swrast_depth_test_span(struct gl_context *ctx, SWspan *span) struct gl_framebuffer *fb = ctx->DrawBuffer; struct gl_renderbuffer *rb = fb->Attachment[BUFFER_DEPTH].Renderbuffer; const GLint bpp = _mesa_get_format_bytes(rb->Format); - void *zStart = get_z_address(rb, span->x, span->y); + void *zStart = _swrast_pixel_address(rb, span->x, span->y); const GLuint count = span->end; const GLuint *fragZ = span->array->z; GLubyte *mask = span->array->mask; @@ -486,7 +475,8 @@ _swrast_read_depth_span_float(struct gl_context *ctx, return; } - _mesa_unpack_float_z_row(rb->Format, n, get_z_address(rb, x, y), depth); + _mesa_unpack_float_z_row(rb->Format, n, _swrast_pixel_address(rb, x, y), + depth); } diff --git a/src/mesa/swrast/s_stencil.c b/src/mesa/swrast/s_stencil.c index 18f44966ca2..dbcbd2be069 100644 --- a/src/mesa/swrast/s_stencil.c +++ b/src/mesa/swrast/s_stencil.c @@ -52,18 +52,6 @@ ENDIF */ -/** - * Return the address of a stencil value in a renderbuffer. - */ -static inline GLubyte * -get_stencil_address(struct gl_renderbuffer *rb, GLint x, GLint y) -{ - const GLint bpp = _mesa_get_format_bytes(rb->Format); - const GLint rowStride = rb->RowStride * bpp; - assert(rb->Data); - return (GLubyte *) rb->Data + y * rowStride + x * bpp; -} - /** * Compute/return the offset of the stencil value in a pixel. @@ -342,7 +330,7 @@ put_s8_values(struct gl_context *ctx, struct gl_renderbuffer *rb, for (i = 0; i < count; i++) { if (x[i] >= 0 && y[i] >= 0 && x[i] < w && y[i] < h) { - GLubyte *dst = get_stencil_address(rb, x[i], y[i]); + GLubyte *dst = _swrast_pixel_address(rb, x[i], y[i]); _mesa_pack_ubyte_stencil_row(rb->Format, 1, &stencil[i], dst); } } @@ -377,7 +365,7 @@ _swrast_stencil_and_ztest_span(struct gl_context *ctx, SWspan *span) * 8 bits for all MESA_FORMATs, we just need to use the right offset * and stride to access them. */ - stencilBuf = get_stencil_address(rb, span->x, span->y) + stencilOffset; + stencilBuf = _swrast_pixel_address(rb, span->x, span->y) + stencilOffset; } /* @@ -458,8 +446,6 @@ _swrast_read_stencil_span(struct gl_context *ctx, struct gl_renderbuffer *rb, GLint n, GLint x, GLint y, GLubyte stencil[]) { GLubyte *src; - const GLuint bpp = _mesa_get_format_bytes(rb->Format); - const GLuint rowStride = rb->RowStride * bpp; if (y < 0 || y >= (GLint) rb->Height || x + n <= 0 || x >= (GLint) rb->Width) { @@ -481,7 +467,7 @@ _swrast_read_stencil_span(struct gl_context *ctx, struct gl_renderbuffer *rb, return; } - src = get_stencil_address(rb, x, y); + src = _swrast_pixel_address(rb, x, y); _mesa_unpack_ubyte_stencil_row(rb->Format, n, src, stencil); } @@ -524,7 +510,7 @@ _swrast_write_stencil_span(struct gl_context *ctx, GLint n, GLint x, GLint y, return; } - stencilBuf = get_stencil_address(rb, x, y); + stencilBuf = _swrast_pixel_address(rb, x, y); if ((stencilMask & stencilMax) != stencilMax) { /* need to apply writemask */ -- 2.30.2