Remove references to accum buffers in softpipe.

Also some minor clear fixes.
This commit is contained in:
Keith Whitwell 2007-08-02 18:25:10 +01:00
parent 3dfe125861
commit 0e067f1fb2
6 changed files with 17 additions and 23 deletions

View file

@ -57,7 +57,7 @@ struct pipe_context {
/** Clear framebuffer */
void (*clear)(struct pipe_context *pipe, GLboolean color, GLboolean depth,
GLboolean stencil, GLboolean accum);
GLboolean stencil);
/** occlusion counting (XXX this may be temporary - we should probably
* have generic query objects with begin/end methods)

View file

@ -202,7 +202,6 @@ struct pipe_framebuffer_state
struct pipe_surface *zbuf; /**< Z buffer */
struct pipe_surface *sbuf; /**< Stencil buffer */
struct pipe_surface *abuf; /**< Accum buffer */
};

View file

@ -63,7 +63,7 @@ color_value(GLuint format, const GLfloat color[4])
void
softpipe_clear(struct pipe_context *pipe, GLboolean color, GLboolean depth,
GLboolean stencil, GLboolean accum)
GLboolean stencil)
{
struct softpipe_context *softpipe = softpipe_context(pipe);
GLint x, y, w, h;
@ -152,15 +152,4 @@ softpipe_clear(struct pipe_context *pipe, GLboolean color, GLboolean depth,
pipe->region_fill(pipe, ps->region, 0, x, y, w, h, clearVal, mask);
}
}
if (accum) {
/* XXX there might be no notion of accum buffers in 'pipe'.
* Just implement them with a deep RGBA surface format...
*/
struct pipe_surface *ps = softpipe->framebuffer.abuf;
GLuint clearVal = 0x0; /* XXX FIX */
GLuint mask = ~0;
assert(ps);
pipe->region_fill(pipe, ps->region, 0, x, y, w, h, clearVal, mask);
}
}

View file

@ -37,7 +37,7 @@ struct pipe_context;
extern void
softpipe_clear(struct pipe_context *pipe, GLboolean color, GLboolean depth,
GLboolean stencil, GLboolean accum);
GLboolean stencil);
#endif /* SP_CLEAR_H */

View file

@ -49,7 +49,7 @@
static void
clear_with_quad(GLcontext *ctx,
GLboolean color, GLboolean depth,
GLboolean stencil, GLboolean accum)
GLboolean stencil)
{
struct st_context *st = ctx->st;
struct pipe_blend_state blend;
@ -119,17 +119,18 @@ static void st_clear(GLcontext *ctx, GLbitfield mask)
GLboolean depth = (mask & BUFFER_BIT_DEPTH) ? GL_TRUE : GL_FALSE;
GLboolean stencil = (mask & BUFFER_BIT_STENCIL) ? GL_TRUE : GL_FALSE;
GLboolean accum = (mask & BUFFER_BIT_ACCUM) ? GL_TRUE : GL_FALSE;
GLboolean maskColor, maskStencil;
GLboolean fullscreen = 1; /* :-) */
GLuint stencilMax = 1 << ctx->DrawBuffer->_StencilBuffer->StencilBits;
GLuint stencilMax = stencil ? (1 << ctx->DrawBuffer->_StencilBuffer->StencilBits) : 0;
/* This makes sure the softpipe has the latest scissor, etc values */
st_validate_state( st );
maskColor = st->state.blend.colormask != PIPE_MASK_RGBA;
maskStencil = ctx->Stencil.WriteMask[0] != stencilMax;
maskColor = color && st->state.blend.colormask != PIPE_MASK_RGBA;
maskStencil = stencil && ctx->Stencil.WriteMask[0] != stencilMax;
if (fullscreen && !maskColor) {
if (fullscreen && !maskColor && !maskStencil) {
/* pipe->clear() should clear a particular surface, so that we
* can iterate over render buffers at this level and clear the
* ones GL is asking for.
@ -139,12 +140,17 @@ static void st_clear(GLcontext *ctx, GLbitfield mask)
* buffers, though could perhaps deal with them explicitly at
* this level.
*/
st->pipe->clear(st->pipe, color, depth, stencil, accum);
st->pipe->clear(st->pipe, color, depth, stencil);
/* And here we would do a clear on whatever surface we are using
* to implement accum buffers:
*/
assert(!accum);
}
else {
/* Convert to geometry, etc:
*/
clear_with_quad(ctx, color, depth, stencil, accum);
clear_with_quad(ctx, color, depth, stencil);
}
}

View file

@ -39,6 +39,6 @@ void st_destroy_draw( struct st_context *st );
/** XXX temporary here */
void st_clear(struct st_context *st, GLboolean color, GLboolean depth,
GLboolean stencil, GLboolean accum);
GLboolean stencil);
#endif