ilo: allow one-off flags to be specified for CP
authorChia-I Wu <olvaffe@gmail.com>
Sun, 28 Apr 2013 23:22:00 +0000 (07:22 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Wed, 1 May 2013 08:03:44 +0000 (16:03 +0800)
It will be used for SOL_RESET on GEN7.

src/gallium/drivers/ilo/ilo_cp.c
src/gallium/drivers/ilo/ilo_cp.h

index e0e53d91cd7e4f9b0e2a8a13bedf0703db36cb0b..41473c0f770a9cbe8980005d7b360fcb0f9d69a4 100644 (file)
@@ -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;
 }
 
index 8f3bda4826765a5b8e32fd8cd6f1a3b08ff2340a..2ecd832048980a0995b9199a9a4c084aec56b8d1 100644 (file)
@@ -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;
@@ -178,6 +179,16 @@ ilo_cp_reserve_for_pre_flush(struct ilo_cp *cp, int reserve)
    cp->reserve_for_pre_flush += 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.
  */