summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/ilo
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2014-09-22 10:35:59 +0800
committerChia-I Wu <[email protected]>2014-09-22 10:41:13 +0800
commit672592de7e4b05b13765f5eac777e5427f84c0f0 (patch)
treea473291201f6d0cc47d7806ef2a64a4a2c9377e9 /src/gallium/drivers/ilo
parent17e7582465e2210f479350449b9598864728b4d0 (diff)
ilo: flush before setting SOL_RESET
SOL_RESET happens before bo execution. It should not be observed by the commands that are already in the bo. Move the code out of the pipeline now that it submits.
Diffstat (limited to 'src/gallium/drivers/ilo')
-rw-r--r--src/gallium/drivers/ilo/ilo_3d.c8
-rw-r--r--src/gallium/drivers/ilo/ilo_3d_pipeline.c5
2 files changed, 8 insertions, 5 deletions
diff --git a/src/gallium/drivers/ilo/ilo_3d.c b/src/gallium/drivers/ilo/ilo_3d.c
index 066a4df6282..4bc70c67d87 100644
--- a/src/gallium/drivers/ilo/ilo_3d.c
+++ b/src/gallium/drivers/ilo/ilo_3d.c
@@ -360,6 +360,14 @@ draw_vbo(struct ilo_3d *hw3d, const struct ilo_state_vector *vec)
bool success;
int max_len, before_space;
+ /* on GEN7+, we need SOL_RESET to reset the SO write offsets */
+ if (ilo_dev_gen(hw3d->pipeline->dev) >= ILO_GEN(7) &&
+ (vec->dirty & ILO_DIRTY_SO) && vec->so.enabled &&
+ !vec->so.append_bitmask) {
+ ilo_cp_submit(hw3d->cp, "SOL_RESET");
+ ilo_cp_set_one_off_flags(hw3d->cp, INTEL_EXEC_GEN7_SOL_RESET);
+ }
+
ilo_3d_own_render_ring(hw3d);
if (!hw3d->new_batch) {
diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline.c b/src/gallium/drivers/ilo/ilo_3d_pipeline.c
index cfe3c5d7977..298c2ec65b6 100644
--- a/src/gallium/drivers/ilo/ilo_3d_pipeline.c
+++ b/src/gallium/drivers/ilo/ilo_3d_pipeline.c
@@ -154,11 +154,6 @@ ilo_3d_pipeline_emit_draw(struct ilo_3d_pipeline *p,
{
bool success;
- /* on GEN7+, we need SOL_RESET to reset the SO write offsets */
- if (ilo_dev_gen(p->dev) >= ILO_GEN(7) && (vec->dirty & ILO_DIRTY_SO) &&
- vec->so.enabled && !vec->so.append_bitmask)
- ilo_cp_set_one_off_flags(p->cp, INTEL_EXEC_GEN7_SOL_RESET);
-
while (true) {
struct ilo_builder_snapshot snapshot;