mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
accomodate new frambuffer changes
This commit is contained in:
parent
c8542705f7
commit
0e26580c90
2 changed files with 32 additions and 28 deletions
|
|
@ -159,9 +159,9 @@ static void fxDDClear( GLcontext *ctx,
|
|||
GLint x, GLint y, GLint width, GLint height )
|
||||
{
|
||||
fxMesaContext fxMesa = FX_CONTEXT(ctx);
|
||||
GLbitfield softwareMask = mask & (DD_ACCUM_BIT);
|
||||
GLbitfield softwareMask = mask & (BUFFER_BIT_ACCUM);
|
||||
const GLuint stencil_size = fxMesa->haveHwStencil ? ctx->Visual.stencilBits : 0;
|
||||
const FxU32 clearD = (FxU32) (ctx->DepthMaxF * ctx->Depth.Clear);
|
||||
const FxU32 clearD = (FxU32) (ctx->DrawBuffer->_DepthMaxF * ctx->Depth.Clear);
|
||||
const FxU8 clearS = (FxU8) (ctx->Stencil.Clear & 0xff);
|
||||
|
||||
if ( TDFX_DEBUG & MESA_VERBOSE ) {
|
||||
|
|
@ -170,7 +170,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
}
|
||||
|
||||
/* we can't clear accum buffers nor stereo */
|
||||
mask &= ~(DD_ACCUM_BIT | DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT);
|
||||
mask &= ~(BUFFER_BIT_ACCUM | BUFFER_BIT_FRONT_RIGHT | BUFFER_BIT_BACK_RIGHT);
|
||||
|
||||
/* Need this check to respond to certain HW updates */
|
||||
if (fxMesa->new_state & (FX_NEW_SCISSOR | FX_NEW_COLOR_MASK)) {
|
||||
|
|
@ -186,8 +186,8 @@ static void fxDDClear( GLcontext *ctx,
|
|||
/* can only do color masking if running in 24/32bpp on Napalm */
|
||||
if (ctx->Color.ColorMask[RCOMP] != ctx->Color.ColorMask[GCOMP] ||
|
||||
ctx->Color.ColorMask[GCOMP] != ctx->Color.ColorMask[BCOMP]) {
|
||||
softwareMask |= (mask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT));
|
||||
mask &= ~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT);
|
||||
softwareMask |= (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT));
|
||||
mask &= ~(BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -198,7 +198,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
* in the OGL state.
|
||||
*/
|
||||
BEGIN_BOARD_LOCK();
|
||||
if (mask & DD_STENCIL_BIT) {
|
||||
if (mask & BUFFER_BIT_STENCIL) {
|
||||
fxMesa->Glide.grStencilMaskExt(fxMesa->unitsState.stencilWriteMask);
|
||||
/* set stencil ref value = desired clear value */
|
||||
fxMesa->Glide.grStencilFuncExt(GR_CMP_ALWAYS, clearS, 0xff);
|
||||
|
|
@ -210,9 +210,9 @@ static void fxDDClear( GLcontext *ctx,
|
|||
grDisable(GR_STENCIL_MODE_EXT);
|
||||
}
|
||||
END_BOARD_LOCK();
|
||||
} else if (mask & DD_STENCIL_BIT) {
|
||||
softwareMask |= (mask & (DD_STENCIL_BIT));
|
||||
mask &= ~(DD_STENCIL_BIT);
|
||||
} else if (mask & BUFFER_BIT_STENCIL) {
|
||||
softwareMask |= (mask & (BUFFER_BIT_STENCIL));
|
||||
mask &= ~(BUFFER_BIT_STENCIL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -225,8 +225,8 @@ static void fxDDClear( GLcontext *ctx,
|
|||
* This could probably be done fancier but doing each possible case
|
||||
* explicitly is less error prone.
|
||||
*/
|
||||
switch (mask & ~DD_STENCIL_BIT) {
|
||||
case DD_BACK_LEFT_BIT | DD_DEPTH_BIT:
|
||||
switch (mask & ~BUFFER_BIT_STENCIL) {
|
||||
case BUFFER_BIT_BACK_LEFT | BUFFER_BIT_DEPTH:
|
||||
/* back buffer & depth */
|
||||
grDepthMask(FXTRUE);
|
||||
grRenderBuffer(GR_BUFFER_BACKBUFFER);
|
||||
|
|
@ -240,7 +240,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
fxMesa->clearA,
|
||||
clearD);
|
||||
break;
|
||||
case DD_FRONT_LEFT_BIT | DD_DEPTH_BIT:
|
||||
case BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_DEPTH:
|
||||
/* XXX it appears that the depth buffer isn't cleared when
|
||||
* glRenderBuffer(GR_BUFFER_FRONTBUFFER) is set.
|
||||
* This is a work-around/
|
||||
|
|
@ -270,7 +270,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
fxMesa->clearA,
|
||||
clearD);
|
||||
break;
|
||||
case DD_BACK_LEFT_BIT:
|
||||
case BUFFER_BIT_BACK_LEFT:
|
||||
/* back buffer only */
|
||||
grDepthMask(FXFALSE);
|
||||
grRenderBuffer(GR_BUFFER_BACKBUFFER);
|
||||
|
|
@ -283,7 +283,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
fxMesa->clearA,
|
||||
clearD);
|
||||
break;
|
||||
case DD_FRONT_LEFT_BIT:
|
||||
case BUFFER_BIT_FRONT_LEFT:
|
||||
/* front buffer only */
|
||||
grDepthMask(FXFALSE);
|
||||
grRenderBuffer(GR_BUFFER_FRONTBUFFER);
|
||||
|
|
@ -296,7 +296,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
fxMesa->clearA,
|
||||
clearD);
|
||||
break;
|
||||
case DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT:
|
||||
case BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT:
|
||||
/* front and back */
|
||||
grDepthMask(FXFALSE);
|
||||
grRenderBuffer(GR_BUFFER_BACKBUFFER);
|
||||
|
|
@ -318,7 +318,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
fxMesa->clearA,
|
||||
clearD);
|
||||
break;
|
||||
case DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT | DD_DEPTH_BIT:
|
||||
case BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT | BUFFER_BIT_DEPTH:
|
||||
/* clear back and depth */
|
||||
grDepthMask(FXTRUE);
|
||||
grRenderBuffer(GR_BUFFER_BACKBUFFER);
|
||||
|
|
@ -342,7 +342,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
fxMesa->clearA,
|
||||
clearD);
|
||||
break;
|
||||
case DD_DEPTH_BIT:
|
||||
case BUFFER_BIT_DEPTH:
|
||||
/* just the depth buffer */
|
||||
grDepthMask(FXTRUE);
|
||||
fxDisableColor(fxMesa);
|
||||
|
|
@ -359,7 +359,7 @@ static void fxDDClear( GLcontext *ctx,
|
|||
break;
|
||||
default:
|
||||
/* clear no color buffers or depth buffer but might clear stencil */
|
||||
if ((stencil_size > 0) && (mask & DD_STENCIL_BIT)) {
|
||||
if ((stencil_size > 0) && (mask & BUFFER_BIT_STENCIL)) {
|
||||
/* XXX need this RenderBuffer call to work around Glide bug */
|
||||
grDepthMask(FXFALSE);
|
||||
grRenderBuffer(GR_BUFFER_BACKBUFFER);
|
||||
|
|
@ -1950,8 +1950,8 @@ fx_check_IsInHardware(GLcontext * ctx)
|
|||
return FX_FALLBACK_STENCIL;
|
||||
}
|
||||
|
||||
if (ctx->Color._DrawDestMask[0] != DD_FRONT_LEFT_BIT &&
|
||||
ctx->Color._DrawDestMask[0] != DD_BACK_LEFT_BIT) {
|
||||
if (ctx->DrawBuffer->_ColorDrawBufferMask[0] != BUFFER_BIT_FRONT_LEFT &&
|
||||
ctx->DrawBuffer->_ColorDrawBufferMask[0] != BUFFER_BIT_BACK_LEFT) {
|
||||
return FX_FALLBACK_DRAW_BUFFER;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -331,6 +331,7 @@
|
|||
* since OpenGL says obscured pixels have undefined values.
|
||||
*/
|
||||
static void fxReadRGBASpan_ARGB1555 (const GLcontext * ctx,
|
||||
struct gl_renderbuffer *rb,
|
||||
GLuint n,
|
||||
GLint x, GLint y,
|
||||
GLubyte rgba[][4])
|
||||
|
|
@ -378,6 +379,7 @@ static void fxReadRGBASpan_ARGB1555 (const GLcontext * ctx,
|
|||
* since OpenGL says obscured pixels have undefined values.
|
||||
*/
|
||||
static void fxReadRGBASpan_RGB565 (const GLcontext * ctx,
|
||||
struct gl_renderbuffer *rb,
|
||||
GLuint n,
|
||||
GLint x, GLint y,
|
||||
GLubyte rgba[][4])
|
||||
|
|
@ -425,6 +427,7 @@ static void fxReadRGBASpan_RGB565 (const GLcontext * ctx,
|
|||
* since OpenGL says obscured pixels have undefined values.
|
||||
*/
|
||||
static void fxReadRGBASpan_ARGB8888 (const GLcontext * ctx,
|
||||
struct gl_renderbuffer *rb,
|
||||
GLuint n,
|
||||
GLint x, GLint y,
|
||||
GLubyte rgba[][4])
|
||||
|
|
@ -445,7 +448,7 @@ static void fxReadRGBASpan_ARGB8888 (const GLcontext * ctx,
|
|||
/************************************************************************/
|
||||
|
||||
static void
|
||||
fxReadDepthSpan_Z16(GLcontext * ctx,
|
||||
fxReadDepthSpan_Z16(GLcontext * ctx, struct gl_renderbuffer *rb,
|
||||
GLuint n, GLint x, GLint y, GLdepth depth[])
|
||||
{
|
||||
fxMesaContext fxMesa = FX_CONTEXT(ctx);
|
||||
|
|
@ -465,7 +468,7 @@ fxReadDepthSpan_Z16(GLcontext * ctx,
|
|||
|
||||
|
||||
static void
|
||||
fxReadDepthSpan_Z24(GLcontext * ctx,
|
||||
fxReadDepthSpan_Z24(GLcontext * ctx, struct gl_renderbuffer *rb,
|
||||
GLuint n, GLint x, GLint y, GLdepth depth[])
|
||||
{
|
||||
fxMesaContext fxMesa = FX_CONTEXT(ctx);
|
||||
|
|
@ -488,7 +491,8 @@ fxReadDepthSpan_Z24(GLcontext * ctx,
|
|||
/************************************************************************/
|
||||
|
||||
static void
|
||||
fxWriteStencilSpan (GLcontext *ctx, GLuint n, GLint x, GLint y,
|
||||
fxWriteStencilSpan (GLcontext *ctx, struct gl_renderbuffer *rb,
|
||||
GLuint n, GLint x, GLint y,
|
||||
const GLstencil stencil[], const GLubyte mask[])
|
||||
{
|
||||
/*
|
||||
|
|
@ -497,7 +501,7 @@ fxWriteStencilSpan (GLcontext *ctx, GLuint n, GLint x, GLint y,
|
|||
}
|
||||
|
||||
static void
|
||||
fxReadStencilSpan(GLcontext * ctx,
|
||||
fxReadStencilSpan(GLcontext * ctx, struct gl_renderbuffer *rb,
|
||||
GLuint n, GLint x, GLint y, GLstencil stencil[])
|
||||
{
|
||||
fxMesaContext fxMesa = FX_CONTEXT(ctx);
|
||||
|
|
@ -516,7 +520,7 @@ fxReadStencilSpan(GLcontext * ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
fxWriteStencilPixels (GLcontext *ctx, GLuint n,
|
||||
fxWriteStencilPixels (GLcontext *ctx, struct gl_renderbuffer *rb, GLuint n,
|
||||
const GLint x[], const GLint y[],
|
||||
const GLstencil stencil[],
|
||||
const GLubyte mask[])
|
||||
|
|
@ -527,7 +531,7 @@ fxWriteStencilPixels (GLcontext *ctx, GLuint n,
|
|||
}
|
||||
|
||||
static void
|
||||
fxReadStencilPixels (GLcontext *ctx, GLuint n,
|
||||
fxReadStencilPixels (GLcontext *ctx, struct gl_renderbuffer *rb, GLuint n,
|
||||
const GLint x[], const GLint y[],
|
||||
GLstencil stencil[])
|
||||
{
|
||||
|
|
@ -553,11 +557,11 @@ fxDDSetBuffer(GLcontext * ctx, GLframebuffer * buffer, GLuint bufferBit)
|
|||
fprintf(stderr, "fxDDSetBuffer(%x)\n", (int)bufferBit);
|
||||
}
|
||||
|
||||
if (bufferBit == DD_FRONT_LEFT_BIT) {
|
||||
if (bufferBit == BUFFER_BIT_FRONT_LEFT) {
|
||||
fxMesa->currentFB = GR_BUFFER_FRONTBUFFER;
|
||||
grRenderBuffer(fxMesa->currentFB);
|
||||
}
|
||||
else if (bufferBit == DD_BACK_LEFT_BIT) {
|
||||
else if (bufferBit == BUFFER_BIT_BACK_LEFT) {
|
||||
fxMesa->currentFB = GR_BUFFER_BACKBUFFER;
|
||||
grRenderBuffer(fxMesa->currentFB);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue