diff options
Diffstat (limited to 'src/gallium/drivers/ilo')
-rw-r--r-- | src/gallium/drivers/ilo/ilo_cp.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/ilo/ilo_cp.h | 11 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/gallium/drivers/ilo/ilo_cp.c b/src/gallium/drivers/ilo/ilo_cp.c index e0e53d91cd7..41473c0f770 100644 --- a/src/gallium/drivers/ilo/ilo_cp.c +++ b/src/gallium/drivers/ilo/ilo_cp.c @@ -191,11 +191,15 @@ ilo_cp_exec_bo(struct ilo_cp *cp) break; } + flags |= cp->one_off_flags; + if (likely(do_exec)) err = cp->bo->exec(cp->bo, cp->used * 4, cp->hw_ctx, flags); else err = 0; + cp->one_off_flags = 0; + return err; } diff --git a/src/gallium/drivers/ilo/ilo_cp.h b/src/gallium/drivers/ilo/ilo_cp.h index 8f3bda48267..2ecd8320489 100644 --- a/src/gallium/drivers/ilo/ilo_cp.h +++ b/src/gallium/drivers/ilo/ilo_cp.h @@ -61,6 +61,7 @@ struct ilo_cp { enum ilo_cp_ring ring; bool no_implicit_flush; int reserve_for_pre_flush; + unsigned one_off_flags; struct { ilo_cp_hook_func func; @@ -179,6 +180,16 @@ ilo_cp_reserve_for_pre_flush(struct ilo_cp *cp, int reserve) } /** + * Set one-off flags. They will be cleared after flushing. + */ +static inline void +ilo_cp_set_one_off_flags(struct ilo_cp *cp, unsigned flags) +{ + cp->one_off_flags |= flags; +} + + +/** * Set a command parser hook. */ static inline void |