summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/llvmpipe/lp_clear.c
diff options
context:
space:
mode:
authorKeith Whitwell <[email protected]>2009-10-08 16:32:03 +0100
committerKeith Whitwell <[email protected]>2009-10-08 16:32:03 +0100
commitd2e2b75633b5ac8eef20fd3c6846d871a6d7eb1a (patch)
tree51a001c4207587cbb2ef0e8e72a421677693bc85 /src/gallium/drivers/llvmpipe/lp_clear.c
parent931210424bc46b2c13919f0ac3e0ef781eff207e (diff)
llvmpipe: rewrite llvmpipe_clear()
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_clear.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_clear.c36
1 files changed, 7 insertions, 29 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_clear.c b/src/gallium/drivers/llvmpipe/lp_clear.c
index bdcff94b9bf..9efb3d40839 100644
--- a/src/gallium/drivers/llvmpipe/lp_clear.c
+++ b/src/gallium/drivers/llvmpipe/lp_clear.c
@@ -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 );
}