X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fswrast%2Fs_alphabuf.c;h=e0468a4c91f872907bc718672cbabf9ee198a44c;hb=a60c89e8c8348a348dcdd770a033f4976ea93206;hp=2eab878a23af128c570d7f9d6bcfb0a7394e5a58;hpb=fc80ad6e62fb2b53d53756593099330477a44c52;p=mesa.git diff --git a/src/mesa/swrast/s_alphabuf.c b/src/mesa/swrast/s_alphabuf.c index 2eab878a23a..e0468a4c91f 100644 --- a/src/mesa/swrast/s_alphabuf.c +++ b/src/mesa/swrast/s_alphabuf.c @@ -1,10 +1,8 @@ -/* $Id: s_alphabuf.c,v 1.12 2002/10/04 19:10:12 brianp Exp $ */ - /* * Mesa 3-D graphics library - * Version: 4.1 + * Version: 6.1 * - * 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"), @@ -32,9 +30,11 @@ #include "glheader.h" +#include "colormac.h" #include "context.h" -#include "mem.h" +#include "imports.h" +#include "s_context.h" #include "s_alphabuf.h" @@ -42,7 +42,7 @@ * Allocate a new front and back alpha buffer. */ void -_mesa_alloc_alpha_buffers( GLframebuffer *buffer ) +_swrast_alloc_alpha_buffers( GLframebuffer *buffer ) { const GLint bytes = buffer->Width * buffer->Height * sizeof(GLchan); @@ -51,7 +51,7 @@ _mesa_alloc_alpha_buffers( GLframebuffer *buffer ) if (buffer->FrontLeftAlpha) { MESA_PBUFFER_FREE( buffer->FrontLeftAlpha ); } - buffer->FrontLeftAlpha = MESA_PBUFFER_ALLOC( bytes ); + buffer->FrontLeftAlpha = (GLchan *) MESA_PBUFFER_ALLOC( bytes ); if (!buffer->FrontLeftAlpha) { /* out of memory */ _mesa_error( NULL, GL_OUT_OF_MEMORY, @@ -62,7 +62,7 @@ _mesa_alloc_alpha_buffers( GLframebuffer *buffer ) if (buffer->BackLeftAlpha) { MESA_PBUFFER_FREE( buffer->BackLeftAlpha ); } - buffer->BackLeftAlpha = MESA_PBUFFER_ALLOC( bytes ); + buffer->BackLeftAlpha = (GLchan *) MESA_PBUFFER_ALLOC( bytes ); if (!buffer->BackLeftAlpha) { /* out of memory */ _mesa_error( NULL, GL_OUT_OF_MEMORY, @@ -74,7 +74,7 @@ _mesa_alloc_alpha_buffers( GLframebuffer *buffer ) if (buffer->FrontRightAlpha) { MESA_PBUFFER_FREE( buffer->FrontRightAlpha ); } - buffer->FrontRightAlpha = MESA_PBUFFER_ALLOC( bytes ); + buffer->FrontRightAlpha = (GLchan *) MESA_PBUFFER_ALLOC( bytes ); if (!buffer->FrontRightAlpha) { /* out of memory */ _mesa_error( NULL, GL_OUT_OF_MEMORY, @@ -85,7 +85,7 @@ _mesa_alloc_alpha_buffers( GLframebuffer *buffer ) if (buffer->BackRightAlpha) { MESA_PBUFFER_FREE( buffer->BackRightAlpha ); } - buffer->BackRightAlpha = MESA_PBUFFER_ALLOC( bytes ); + buffer->BackRightAlpha = (GLchan *) MESA_PBUFFER_ALLOC( bytes ); if (!buffer->BackRightAlpha) { /* out of memory */ _mesa_error( NULL, GL_OUT_OF_MEMORY, @@ -100,11 +100,13 @@ _mesa_alloc_alpha_buffers( GLframebuffer *buffer ) * Clear all the alpha buffers */ void -_mesa_clear_alpha_buffers( GLcontext *ctx ) +_swrast_clear_alpha_buffers( GLcontext *ctx ) { - const GLchan aclear = ctx->Color.ClearColor[3]; + GLchan aclear; GLuint bufferBit; + CLAMPED_FLOAT_TO_CHAN(aclear, ctx->Color.ClearColor[3]); + ASSERT(ctx->DrawBuffer->UseSoftwareAlphaBuffers); ASSERT(ctx->Color.ColorMask[ACOMP]); @@ -113,16 +115,16 @@ _mesa_clear_alpha_buffers( GLcontext *ctx ) if (bufferBit & ctx->Color._DrawDestMask) { GLchan *buffer; if (bufferBit == FRONT_LEFT_BIT) { - buffer = (GLchan *) ctx->DrawBuffer->FrontLeftAlpha; + buffer = ctx->DrawBuffer->FrontLeftAlpha; } else if (bufferBit == FRONT_RIGHT_BIT) { - buffer = (GLchan *) ctx->DrawBuffer->FrontRightAlpha; + buffer = ctx->DrawBuffer->FrontRightAlpha; } else if (bufferBit == BACK_LEFT_BIT) { - buffer = (GLchan *) ctx->DrawBuffer->BackLeftAlpha; + buffer = ctx->DrawBuffer->BackLeftAlpha; } else { - buffer = (GLchan *) ctx->DrawBuffer->BackRightAlpha; + buffer = ctx->DrawBuffer->BackRightAlpha; } if (ctx->Scissor.Enabled) { @@ -171,28 +173,30 @@ _mesa_clear_alpha_buffers( GLcontext *ctx ) static INLINE GLchan *get_alpha_buffer( GLcontext *ctx ) { - switch (ctx->Color._DriverDrawBuffer) { - case GL_FRONT_LEFT: - return (GLchan *) ctx->DrawBuffer->FrontLeftAlpha; + SWcontext *swrast = SWRAST_CONTEXT(ctx); + + switch (swrast->CurrentBuffer) { + case FRONT_LEFT_BIT: + return ctx->DrawBuffer->FrontLeftAlpha; break; - case GL_BACK_LEFT: - return (GLchan *) ctx->DrawBuffer->BackLeftAlpha; + case BACK_LEFT_BIT: + return ctx->DrawBuffer->BackLeftAlpha; break; - case GL_FRONT_RIGHT: - return (GLchan *) ctx->DrawBuffer->FrontRightAlpha; + case FRONT_RIGHT_BIT: + return ctx->DrawBuffer->FrontRightAlpha; break; - case GL_BACK_RIGHT: - return (GLchan *) ctx->DrawBuffer->BackRightAlpha; + case BACK_RIGHT_BIT: + return ctx->DrawBuffer->BackRightAlpha; break; default: - _mesa_problem(ctx, "Bad DriverDrawBuffer in _mesa_write_alpha_span()"); - return (GLchan *) ctx->DrawBuffer->FrontLeftAlpha; /* aribitrary */ + _mesa_problem(ctx, "Bad CurrentBuffer in get_alpha_buffer()"); + return (GLchan *) ctx->DrawBuffer->FrontLeftAlpha; } } void -_mesa_write_alpha_span( GLcontext *ctx, GLuint n, GLint x, GLint y, +_swrast_write_alpha_span( GLcontext *ctx, GLuint n, GLint x, GLint y, CONST GLchan rgba[][4], const GLubyte mask[] ) { GLchan *buffer, *aptr; @@ -218,7 +222,7 @@ _mesa_write_alpha_span( GLcontext *ctx, GLuint n, GLint x, GLint y, void -_mesa_write_mono_alpha_span( GLcontext *ctx, GLuint n, GLint x, GLint y, +_swrast_write_mono_alpha_span( GLcontext *ctx, GLuint n, GLint x, GLint y, GLchan alpha, const GLubyte mask[] ) { GLchan *buffer, *aptr; @@ -244,7 +248,7 @@ _mesa_write_mono_alpha_span( GLcontext *ctx, GLuint n, GLint x, GLint y, void -_mesa_write_alpha_pixels( GLcontext *ctx, +_swrast_write_alpha_pixels( GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], CONST GLchan rgba[][4], const GLubyte mask[] ) { @@ -271,7 +275,7 @@ _mesa_write_alpha_pixels( GLcontext *ctx, void -_mesa_write_mono_alpha_pixels( GLcontext *ctx, +_swrast_write_mono_alpha_pixels( GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLchan alpha, const GLubyte mask[] ) { @@ -299,7 +303,7 @@ _mesa_write_mono_alpha_pixels( GLcontext *ctx, void -_mesa_read_alpha_span( GLcontext *ctx, +_swrast_read_alpha_span( GLcontext *ctx, GLuint n, GLint x, GLint y, GLchan rgba[][4] ) { const GLchan *buffer, *aptr; @@ -314,7 +318,7 @@ _mesa_read_alpha_span( GLcontext *ctx, void -_mesa_read_alpha_pixels( GLcontext *ctx, +_swrast_read_alpha_pixels( GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLchan rgba[][4], const GLubyte mask[] ) {