On 2019-03-25 03:58:59, Chris Wilson wrote: > iris currently uses two distinct GEM contexts to have distinct logical > HW contexts for the compute and render pipelines. However, using two > distinct GEM contexts implies that they are distinct timelines, yet as > they are a single GL context that implies they belong to a single > timeline from the client perspective. Currently, fences are occasionally > inserted to order the two timelines. Using 2 GEM contexts, also implies > that we keep 2 ppGTT for identical buffer state. If we can create a > single GEM context, with the right capabilities, we can have a single > VM, a single timeline, but 2 logical HW contexts for the 2 pipelines. > > This is allowed through the new context interface that allows VM to be > shared, timelines to be specified, and for the logical contexts to be > constructed as the user desires. > > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Cc: Kenneth Graunke <kenneth@xxxxxxxxxxxxx> > --- > src/gallium/drivers/iris/iris_batch.c | 16 ++----- > src/gallium/drivers/iris/iris_batch.h | 5 +-- > src/gallium/drivers/iris/iris_context.c | 56 ++++++++++++++++++++++++- > 3 files changed, 60 insertions(+), 17 deletions(-) > > diff --git a/src/gallium/drivers/iris/iris_batch.c b/src/gallium/drivers/iris/iris_batch.c > index 556422c38bc..40bcd939795 100644 > --- a/src/gallium/drivers/iris/iris_batch.c > +++ b/src/gallium/drivers/iris/iris_batch.c > @@ -164,24 +164,16 @@ iris_init_batch(struct iris_batch *batch, > struct iris_vtable *vtbl, > struct pipe_debug_callback *dbg, > struct iris_batch *all_batches, > - enum iris_batch_name name, > - uint8_t engine, > - int priority) > + uint32_t hw_id, > + enum iris_batch_name name) > { > batch->screen = screen; > batch->vtbl = vtbl; > batch->dbg = dbg; > batch->name = name; > > - /* engine should be one of I915_EXEC_RENDER, I915_EXEC_BLT, etc. */ > - assert((engine & ~I915_EXEC_RING_MASK) == 0); > - assert(util_bitcount(engine) == 1); > - batch->engine = engine; > - > - batch->hw_ctx_id = iris_create_hw_context(screen->bufmgr); > - assert(batch->hw_ctx_id); > - > - iris_hw_context_set_priority(screen->bufmgr, batch->hw_ctx_id, priority); > + batch->hw_ctx_id = hw_id; > + batch->engine = name; I think this should fall-back to I915_EXEC_RENDER if the old style contexts are created. -Jordan _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx