R300_SAVE_TEXTURES | R300_IGNORE_RENDER_COND,
R300_BLIT = R300_STOP_QUERY | R300_SAVE_FRAMEBUFFER |
- R300_SAVE_TEXTURES | R300_IGNORE_RENDER_COND,
+ R300_SAVE_TEXTURES,
R300_DECOMPRESS = R300_STOP_QUERY | R300_IGNORE_RENDER_COND,
};
util_pack_color(rgba, format, &uc);
if (util_format_get_blocksizebits(format) == 32)
- return uc.ui;
+ return uc.ui[0];
else
return uc.us | (uc.us << 16);
}
(struct pipe_framebuffer_state*)r300->fb_state.state;
/* Only color clear allowed, and only one colorbuffer. */
- if ((clear_buffers & ~PIPE_CLEAR_COLOR) != 0 || fb->nr_cbufs != 1)
+ if ((clear_buffers & ~PIPE_CLEAR_COLOR) != 0 || fb->nr_cbufs != 1 || !fb->cbufs[0])
return FALSE;
return r300_surface(fb->cbufs[0])->cbzb_allowed;
r300->color_clear_value_gb = uc.h[0] | ((uint32_t)uc.h[1] << 16);
r300->color_clear_value_ar = uc.h[2] | ((uint32_t)uc.h[3] << 16);
} else {
- r300->color_clear_value = uc.ui;
+ r300->color_clear_value = uc.ui[0];
}
}
/* Use fast color clear for an AA colorbuffer.
* The CMASK is shared between all colorbuffers, so we use it
* if there is only one colorbuffer bound. */
- if ((buffers & PIPE_CLEAR_COLOR) && fb->nr_cbufs == 1 &&
+ if ((buffers & PIPE_CLEAR_COLOR) && fb->nr_cbufs == 1 && fb->cbufs[0] &&
r300_resource(fb->cbufs[0]->texture)->tex.cmask_dwords) {
/* Try to obtain the access to the CMASK if we don't have one. */
if (!r300->cmask_access) {
blit.src.resource = tmp;
blit.src.box.z = 0;
- r300_blitter_begin(r300, R300_BLIT);
+ r300_blitter_begin(r300, R300_BLIT | R300_IGNORE_RENDER_COND);
util_blitter_blit(r300->blitter, &blit);
r300_blitter_end(r300);
}
}
- r300_blitter_begin(r300, R300_BLIT);
+ r300_blitter_begin(r300, R300_BLIT |
+ (info.render_condition_enable ? 0 : R300_IGNORE_RENDER_COND));
util_blitter_blit(r300->blitter, &info);
r300_blitter_end(r300);
}