summaryrefslogtreecommitdiff
path: root/lib/mesa/src/gallium/drivers/r300/r300_blit.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mesa/src/gallium/drivers/r300/r300_blit.c')
-rw-r--r--lib/mesa/src/gallium/drivers/r300/r300_blit.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/mesa/src/gallium/drivers/r300/r300_blit.c b/lib/mesa/src/gallium/drivers/r300/r300_blit.c
index b8cc316c2..b5c3ae5ac 100644
--- a/lib/mesa/src/gallium/drivers/r300/r300_blit.c
+++ b/lib/mesa/src/gallium/drivers/r300/r300_blit.c
@@ -382,7 +382,7 @@ static void r300_clear(struct pipe_context* pipe,
r300_get_num_cs_end_dwords(r300);
/* Reserve CS space. */
- if (dwords > (r300->cs->max_dw - r300->cs->cdw)) {
+ if (!r300->rws->cs_check_space(r300->cs, dwords)) {
r300_flush(&r300->context, RADEON_FLUSH_ASYNC, NULL);
}
@@ -430,11 +430,13 @@ static void r300_clear_render_target(struct pipe_context *pipe,
struct pipe_surface *dst,
const union pipe_color_union *color,
unsigned dstx, unsigned dsty,
- unsigned width, unsigned height)
+ unsigned width, unsigned height,
+ bool render_condition_enabled)
{
struct r300_context *r300 = r300_context(pipe);
- r300_blitter_begin(r300, R300_CLEAR_SURFACE);
+ r300_blitter_begin(r300, R300_CLEAR_SURFACE |
+ (render_condition_enabled ? 0 : R300_IGNORE_RENDER_COND));
util_blitter_clear_render_target(r300->blitter, dst, color,
dstx, dsty, width, height);
r300_blitter_end(r300);
@@ -447,7 +449,8 @@ static void r300_clear_depth_stencil(struct pipe_context *pipe,
double depth,
unsigned stencil,
unsigned dstx, unsigned dsty,
- unsigned width, unsigned height)
+ unsigned width, unsigned height,
+ bool render_condition_enabled)
{
struct r300_context *r300 = r300_context(pipe);
struct pipe_framebuffer_state *fb =
@@ -460,7 +463,8 @@ static void r300_clear_depth_stencil(struct pipe_context *pipe,
}
/* XXX Do not decompress ZMask of the currently-set zbuffer. */
- r300_blitter_begin(r300, R300_CLEAR_SURFACE);
+ r300_blitter_begin(r300, R300_CLEAR_SURFACE |
+ (render_condition_enabled ? 0 : R300_IGNORE_RENDER_COND));
util_blitter_clear_depth_stencil(r300->blitter, dst, clear_flags, depth, stencil,
dstx, dsty, width, height);
r300_blitter_end(r300);