llvmpipe: rewrite llvmpipe_clear()

This commit is contained in:
Keith Whitwell 2009-10-08 16:32:03 +01:00
parent 931210424b
commit d2e2b75633
1 changed files with 7 additions and 29 deletions

View File

@ -33,12 +33,10 @@
#include "pipe/p_defines.h"
#include "util/u_pack_color.h"
#include "lp_clear.h"
#include "lp_context.h"
#include "lp_surface.h"
#include "lp_setup.h"
#include "lp_state.h"
#include "lp_tile_cache.h"
/**
@ -46,36 +44,16 @@
* No masking, no scissor (clear entire buffer).
*/
void
llvmpipe_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
double depth, unsigned stencil)
llvmpipe_clear(struct pipe_context *pipe,
unsigned buffers,
const float *rgba,
double depth,
unsigned stencil)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
unsigned cv;
uint i;
if (llvmpipe->no_rast)
return;
#if 0
llvmpipe_update_derived(llvmpipe); /* not needed?? */
#endif
if (buffers & PIPE_CLEAR_COLOR) {
for (i = 0; i < llvmpipe->framebuffer.nr_cbufs; i++) {
struct pipe_surface *ps = llvmpipe->framebuffer.cbufs[i];
util_pack_color(rgba, ps->format, &cv);
lp_tile_cache_clear(llvmpipe->cbuf_cache[i], rgba, cv);
}
llvmpipe->dirty_render_cache = TRUE;
}
if (buffers & PIPE_CLEAR_DEPTHSTENCIL) {
struct pipe_surface *ps = llvmpipe->framebuffer.zsbuf;
cv = util_pack_z_stencil(ps->format, depth, stencil);
/* non-cached surface */
pipe->surface_fill(pipe, ps, 0, 0, ps->width, ps->height, cv);
}
lp_setup_clear( llvmpipe->setup, buffers, rgba, depth, stencil );
}