diff options
author | Chia-I Wu <[email protected]> | 2013-06-25 15:36:15 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2013-06-25 15:38:07 +0800 |
commit | c8240c9dea7f0061a6a24cb5d234f0a639170515 (patch) | |
tree | 27a9905447998d1302820d8ba3c392de55da6764 /src/gallium/drivers/ilo/ilo_3d.c | |
parent | 5f4b769127217c72a016becd31396b1c1d1f5e56 (diff) |
ilo: honor render condition in blitter
Make pass_render_condition() available for blitter, and check for render
condition in (and only in) clear(), clear_render_target(), and
clear_depth_stencil().
Diffstat (limited to 'src/gallium/drivers/ilo/ilo_3d.c')
-rw-r--r-- | src/gallium/drivers/ilo/ilo_3d.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/gallium/drivers/ilo/ilo_3d.c b/src/gallium/drivers/ilo/ilo_3d.c index 6223de98c0f..9ce6b75f978 100644 --- a/src/gallium/drivers/ilo/ilo_3d.c +++ b/src/gallium/drivers/ilo/ilo_3d.c @@ -426,9 +426,10 @@ update_prim_count(struct ilo_3d *hw3d, int generated, int emitted) q->data.u64 += emitted; } -static bool -pass_render_condition(struct ilo_3d *hw3d, struct pipe_context *pipe) +bool +ilo_3d_pass_render_condition(struct ilo_context *ilo) { + struct ilo_3d *hw3d = ilo->hw3d; uint64_t result; bool wait; @@ -447,13 +448,11 @@ pass_render_condition(struct ilo_3d *hw3d, struct pipe_context *pipe) break; } - if (pipe->get_query_result(pipe, hw3d->render_condition.query, - wait, (union pipe_query_result *) &result)) { + if (ilo->base.get_query_result(&ilo->base, hw3d->render_condition.query, + wait, (union pipe_query_result *) &result)) return (!result == hw3d->render_condition.cond); - } - else { + else return true; - } } #define UPDATE_MIN2(a, b) (a) = MIN2((a), (b)) @@ -698,7 +697,7 @@ ilo_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) struct ilo_3d *hw3d = ilo->hw3d; int prim_generated, prim_emitted; - if (!pass_render_condition(hw3d, pipe)) + if (!ilo_3d_pass_render_condition(ilo)) return; if (info->primitive_restart && info->indexed) { |