diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2005-09-03 16:43:02 +0000 |
---|---|---|
committer | Brian Paul <brian.paul@tungstengraphics.com> | 2005-09-03 16:43:02 +0000 |
commit | 687918b794d12a0ff5d395b8cf87880dbe8012bf (patch) | |
tree | 280d1b882dc3bfd0e105d14a1f9d90c7cef935dd /src/mesa/drivers/dri/unichrome/via_span.c | |
parent | e6925b51e1e71dc45079636ce336a09806356999 (diff) |
SetBuffer, renderbuffer changes
Diffstat (limited to 'src/mesa/drivers/dri/unichrome/via_span.c')
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_span.c | 152 |
1 files changed, 31 insertions, 121 deletions
diff --git a/src/mesa/drivers/dri/unichrome/via_span.c b/src/mesa/drivers/dri/unichrome/via_span.c index 16a1aa8b36..5bffade940 100644 --- a/src/mesa/drivers/dri/unichrome/via_span.c +++ b/src/mesa/drivers/dri/unichrome/via_span.c @@ -43,13 +43,12 @@ #define LOCAL_VARS \ struct via_context *vmesa = VIA_CONTEXT(ctx); \ __DRIdrawablePrivate *dPriv = vmesa->driDrawable; \ - GLuint draw_pitch = vmesa->drawBuffer->pitch; \ - GLuint read_pitch = vmesa->readBuffer->pitch; \ + struct via_renderbuffer *vrb = (struct via_renderbuffer *) rb; \ + GLuint pitch = vrb->pitch; \ GLuint height = dPriv->h; \ GLint p = 0; \ - char *buf = (char *)(vmesa->drawBuffer->origMap + vmesa->drawXoff * vmesa->viaScreen->bytesPerPixel); \ - char *read_buf = (char *)(vmesa->readBuffer->origMap + vmesa->drawXoff * vmesa->viaScreen->bytesPerPixel); \ - (void) (read_pitch && draw_pitch && buf && read_buf && p); + char *buf = (char *)(vrb->origMap + vmesa->drawXoff * vrb->bpp); \ + (void) p; /* ================================================================ * Color buffer @@ -57,8 +56,8 @@ /* 16 bit, RGB565 color spanline and pixel functions */ -#define GET_SRC_PTR(_x, _y) (read_buf + (_x) * 2 + (_y) * read_pitch) -#define GET_DST_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * draw_pitch) +#define GET_SRC_PTR(_x, _y) (buf + (_x) * 2 + (_y) * pitch) +#define GET_DST_PTR(_x, _y) GET_SRC_PTR(_x, _y); #define SPANTMP_PIXEL_FMT GL_RGB #define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_5_6_5 @@ -69,8 +68,8 @@ /* 32 bit, ARGB8888 color spanline and pixel functions */ -#define GET_SRC_PTR(_x, _y) (read_buf + (_x) * 4 + (_y) * read_pitch) -#define GET_DST_PTR(_x, _y) ( buf + (_x) * 4 + (_y) * draw_pitch) +#define GET_SRC_PTR(_x, _y) (buf + (_x) * 4 + (_y) * pitch) +#define GET_DST_PTR(_x, _y) GET_SRC_PTR(_x, _y); #define SPANTMP_PIXEL_FMT GL_BGRA #define SPANTMP_PIXEL_TYPE GL_UNSIGNED_INT_8_8_8_8_REV @@ -81,12 +80,13 @@ /* 16 bit depthbuffer functions. */ -#define LOCAL_DEPTH_VARS \ - struct via_context *vmesa = VIA_CONTEXT(ctx); \ - __DRIdrawablePrivate *dPriv = vmesa->driDrawable; \ - GLuint depth_pitch = vmesa->depth.pitch; \ - GLuint height = dPriv->h; \ - char *buf = (char *)(vmesa->depth.map + (vmesa->drawXoff * vmesa->depth.bpp/8)) +#define LOCAL_DEPTH_VARS \ + struct via_context *vmesa = VIA_CONTEXT(ctx); \ + __DRIdrawablePrivate *dPriv = vmesa->driDrawable; \ + struct via_renderbuffer *vrb = (struct via_renderbuffer *) rb; \ + GLuint depth_pitch = vrb->pitch; \ + GLuint height = dPriv->h; \ + char *buf = (char *)(vrb->map + (vmesa->drawXoff * vrb->bpp/8)) #define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS @@ -97,7 +97,7 @@ #define READ_DEPTH(d, _x, _y) \ d = *(volatile GLushort *)(buf + (_x) * 2 + (_y) * depth_pitch); -#define TAG(x) via##x##_16 +#define TAG(x) via##x##_z16 #include "depthtmp.h" /* 32 bit depthbuffer functions. @@ -108,7 +108,7 @@ #define READ_DEPTH(d, _x, _y) \ d = *(volatile GLuint *)(buf + (_x) * 4 + (_y) * depth_pitch); -#define TAG(x) via##x##_32 +#define TAG(x) via##x##_z32 #include "depthtmp.h" @@ -126,7 +126,7 @@ d = (*(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch)) >> 8; -#define TAG(x) via##x##_24_8 +#define TAG(x) via##x##_z24_s8 #include "depthtmp.h" #define WRITE_STENCIL( _x, _y, d ) { \ @@ -139,26 +139,11 @@ #define READ_STENCIL( d, _x, _y ) \ d = *(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch) & 0xff; -#define TAG(x) via##x##_24_8 +#define TAG(x) via##x##_z24_s8 #include "stenciltmp.h" -static void viaSetBuffer(GLcontext *ctx, GLframebuffer *colorBuffer, - GLuint bufferBit) -{ - struct via_context *vmesa = VIA_CONTEXT(ctx); - - if (bufferBit == BUFFER_BIT_FRONT_LEFT) { - vmesa->drawBuffer = vmesa->readBuffer = &vmesa->front; - } - else if (bufferBit == BUFFER_BIT_BACK_LEFT) { - vmesa->drawBuffer = vmesa->readBuffer = &vmesa->back; - } - else { - ASSERT(0); - } -} /* Move locking out to get reasonable span performance. */ @@ -178,64 +163,9 @@ void viaSpanRenderFinish( GLcontext *ctx ) void viaInitSpanFuncs(GLcontext *ctx) { -#if 0 - struct via_context *vmesa = VIA_CONTEXT(ctx); -#endif struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); - - swdd->SetBuffer = viaSetBuffer; -#if 0 - if (vmesa->viaScreen->bitsPerPixel == 16) { - viaInitPointers_565( swdd ); - } - else if (vmesa->viaScreen->bitsPerPixel == 32) { - viaInitPointers_8888( swdd ); - } - else { - assert(0); - } -#endif -#if 0 - if (vmesa->glCtx->Visual.depthBits == 16) { - swdd->ReadDepthSpan = viaReadDepthSpan_16; - swdd->WriteDepthSpan = viaWriteDepthSpan_16; - swdd->WriteMonoDepthSpan = viaWriteMonoDepthSpan_16; - swdd->ReadDepthPixels = viaReadDepthPixels_16; - swdd->WriteDepthPixels = viaWriteDepthPixels_16; - } - else if (vmesa->glCtx->Visual.depthBits == 24) { - swdd->ReadDepthSpan = viaReadDepthSpan_24_8; - swdd->WriteDepthSpan = viaWriteDepthSpan_24_8; - swdd->WriteMonoDepthSpan = viaWriteMonoDepthSpan_24_8; - swdd->ReadDepthPixels = viaReadDepthPixels_24_8; - swdd->WriteDepthPixels = viaWriteDepthPixels_24_8; - - swdd->WriteStencilSpan = viaWriteStencilSpan_24_8; - swdd->ReadStencilSpan = viaReadStencilSpan_24_8; - swdd->WriteStencilPixels = viaWriteStencilPixels_24_8; - swdd->ReadStencilPixels = viaReadStencilPixels_24_8; - } - else if (vmesa->glCtx->Visual.depthBits == 32) { - swdd->ReadDepthSpan = viaReadDepthSpan_32; - swdd->WriteDepthSpan = viaWriteDepthSpan_32; - swdd->WriteMonoDepthSpan = viaWriteMonoDepthSpan_32; - swdd->ReadDepthPixels = viaReadDepthPixels_32; - swdd->WriteDepthPixels = viaWriteDepthPixels_32; - } -#endif - swdd->SpanRenderStart = viaSpanRenderStart; swdd->SpanRenderFinish = viaSpanRenderFinish; - -#if 0 - swdd->WriteCI8Span = NULL; - swdd->WriteCI32Span = NULL; - swdd->WriteMonoCISpan = NULL; - swdd->WriteCI32Pixels = NULL; - swdd->WriteMonoCIPixels = NULL; - swdd->ReadCI32Span = NULL; - swdd->ReadCI32Pixels = NULL; -#endif } @@ -244,46 +174,26 @@ void viaInitSpanFuncs(GLcontext *ctx) * Plug in the Get/Put routines for the given driRenderbuffer. */ void -viaSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis) +viaSetSpanFunctions(struct via_renderbuffer *vrb, const GLvisual *vis) { - if (drb->Base.InternalFormat == GL_RGBA) { + if (vrb->Base.InternalFormat == GL_RGBA) { if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) { - viaInitPointers_565(&drb->Base); + viaInitPointers_565(&vrb->Base); } else { - viaInitPointers_8888(&drb->Base); + viaInitPointers_8888(&vrb->Base); } } - else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) { - drb->Base.GetRow = viaReadDepthSpan_16; - drb->Base.GetValues = viaReadDepthPixels_16; - drb->Base.PutRow = viaWriteDepthSpan_16; - drb->Base.PutMonoRow = viaWriteMonoDepthSpan_16; - drb->Base.PutValues = viaWriteDepthPixels_16; - drb->Base.PutMonoValues = NULL; + else if (vrb->Base.InternalFormat == GL_DEPTH_COMPONENT16) { + viaInitDepthPointers_z16(&vrb->Base); } - else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) { - drb->Base.GetRow = viaReadDepthSpan_24_8; - drb->Base.GetValues = viaReadDepthPixels_24_8; - drb->Base.PutRow = viaWriteDepthSpan_24_8; - drb->Base.PutMonoRow = viaWriteMonoDepthSpan_24_8; - drb->Base.PutValues = viaWriteDepthPixels_24_8; - drb->Base.PutMonoValues = NULL; + else if (vrb->Base.InternalFormat == GL_DEPTH_COMPONENT24) { + viaInitDepthPointers_z24_s8(&vrb->Base); } - else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT32) { - drb->Base.GetRow = viaReadDepthSpan_32; - drb->Base.GetValues = viaReadDepthPixels_32; - drb->Base.PutRow = viaWriteDepthSpan_32; - drb->Base.PutMonoRow = viaWriteMonoDepthSpan_32; - drb->Base.PutValues = viaWriteDepthPixels_32; - drb->Base.PutMonoValues = NULL; + else if (vrb->Base.InternalFormat == GL_DEPTH_COMPONENT32) { + viaInitDepthPointers_z32(&vrb->Base); } - else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) { - drb->Base.GetRow = viaReadStencilSpan_24_8; - drb->Base.GetValues = viaReadStencilPixels_24_8; - drb->Base.PutRow = viaWriteStencilSpan_24_8; - drb->Base.PutMonoRow = viaWriteMonoStencilSpan_24_8; - drb->Base.PutValues = viaWriteStencilPixels_24_8; - drb->Base.PutMonoValues = NULL; + else if (vrb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) { + viaInitStencilPointers_z24_s8(&vrb->Base); } } |