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