Mesa (master): ilo: move size estimation check out of pipeline
Chia-I Wu
olv at kemper.freedesktop.org
Mon Sep 22 04:19:32 UTC 2014
Module: Mesa
Branch: master
Commit: 17e7582465e2210f479350449b9598864728b4d0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=17e7582465e2210f479350449b9598864728b4d0
Author: Chia-I Wu <olvaffe at gmail.com>
Date: Mon Sep 22 10:12:06 2014 +0800
ilo: move size estimation check out of pipeline
It can be done outside of the pipeline. Let's move it.
---
src/gallium/drivers/ilo/ilo_3d.c | 12 ++++++++++--
src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c | 7 -------
src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.h | 1 -
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/gallium/drivers/ilo/ilo_3d.c b/src/gallium/drivers/ilo/ilo_3d.c
index 4be4ce4..066a4df 100644
--- a/src/gallium/drivers/ilo/ilo_3d.c
+++ b/src/gallium/drivers/ilo/ilo_3d.c
@@ -357,7 +357,8 @@ static bool
draw_vbo(struct ilo_3d *hw3d, const struct ilo_state_vector *vec)
{
bool need_flush = false;
- int max_len;
+ bool success;
+ int max_len, before_space;
ilo_3d_own_render_ring(hw3d);
@@ -388,10 +389,17 @@ draw_vbo(struct ilo_3d *hw3d, const struct ilo_state_vector *vec)
assert(max_len <= ilo_cp_space(hw3d->cp));
}
+ /* space available before emission */
+ before_space = ilo_cp_space(hw3d->cp);
+
if (need_flush)
ilo_3d_pipeline_emit_flush(hw3d->pipeline);
+ success = ilo_3d_pipeline_emit_draw(hw3d->pipeline, vec);
+
+ /* sanity check size estimation */
+ assert(before_space - ilo_cp_space(hw3d->cp) <= max_len);
- return ilo_3d_pipeline_emit_draw(hw3d->pipeline, vec);
+ return success;
}
bool
diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
index 49bd7e7..856e9ec 100644
--- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
+++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
@@ -1361,9 +1361,6 @@ gen6_pipeline_prepare(const struct ilo_3d_pipeline *p,
session->pipe_dirty = vec->dirty;
session->reduced_prim = u_reduced_prim(vec->draw->mode);
- /* available space before the session */
- session->init_cp_space = ilo_cp_space(p->cp);
-
session->hw_ctx_changed =
(p->invalidate_flags & ILO_3D_PIPELINE_INVALIDATE_HW);
@@ -1425,10 +1422,6 @@ gen6_pipeline_end(struct ilo_3d_pipeline *p,
const struct ilo_state_vector *vec,
struct gen6_pipeline_session *session)
{
- /* sanity check size estimation */
- assert(session->init_cp_space - ilo_cp_space(p->cp) <=
- ilo_3d_pipeline_estimate_size(p, ILO_3D_PIPELINE_DRAW, vec));
-
p->state.reduced_prim = session->reduced_prim;
p->state.primitive_restart = vec->draw->primitive_restart;
}
diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.h b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.h
index 968e3ef..247e10e 100644
--- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.h
+++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.h
@@ -38,7 +38,6 @@ struct gen6_pipeline_session {
uint32_t pipe_dirty;
int reduced_prim;
- int init_cp_space;
bool hw_ctx_changed;
bool batch_bo_changed;
More information about the mesa-commit
mailing list