iris: Actually create/destroy HW contexts
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 7 Nov 2018 17:35:19 +0000 (09:35 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:09 +0000 (10:26 -0800)
The intention is that render and compute use their own contexts,
and each is PIPELINE_SELECT'd to the right pipeline.  But we hadn't
actually made them, so we got the fd-default context.

Thanks to Chris Wilson for catching this!

src/gallium/drivers/iris/iris_batch.c

index 7196691f73c5313c092f1da96cb3f682a874621c..45fda4cd0b59f159d1b47171b989824685da3bb3 100644 (file)
@@ -151,6 +151,9 @@ iris_init_batch(struct iris_batch *batch,
    assert(util_bitcount(engine) == 1);
    batch->engine = engine;
 
+   batch->hw_ctx_id = iris_create_hw_context(screen->bufmgr);
+   assert(batch->hw_ctx_id);
+
    batch->exec_count = 0;
    batch->exec_array_size = 100;
    batch->exec_bos =
@@ -279,6 +282,9 @@ iris_batch_reset(struct iris_batch *batch)
 void
 iris_batch_free(struct iris_batch *batch)
 {
+   struct iris_screen *screen = batch->screen;
+   struct iris_bufmgr *bufmgr = screen->bufmgr;
+
    for (int i = 0; i < batch->exec_count; i++) {
       iris_bo_unreference(batch->exec_bos[i]);
    }
@@ -291,6 +297,8 @@ iris_batch_free(struct iris_batch *batch)
 
    iris_bo_unreference(batch->last_bo);
 
+   iris_destroy_hw_context(bufmgr, batch->hw_ctx_id);
+
    _mesa_hash_table_destroy(batch->cache.render, NULL);
    _mesa_set_destroy(batch->cache.depth, NULL);