If the buffer is being shared with an external client, our own state tracking may be stale and in some cases we may wish to double check with the kernel/hw state. At the moment, this is synonymous with not being reusable, but the semantics between reusable and external are quite different and we will have more examples of non-reusable buffers in the near future.
Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> Cc: Kenneth Graunke <kenn...@whitecape.org> --- src/mesa/drivers/dri/i965/brw_bufmgr.c | 4 ++++ src/mesa/drivers/dri/i965/brw_bufmgr.h | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.c b/src/mesa/drivers/dri/i965/brw_bufmgr.c index 6cb91f9a23..d8a8f92dd7 100644 --- a/src/mesa/drivers/dri/i965/brw_bufmgr.c +++ b/src/mesa/drivers/dri/i965/brw_bufmgr.c @@ -483,6 +483,7 @@ brw_bo_gem_create_from_name(struct brw_bufmgr *bufmgr, bo->name = name; bo->global_name = handle; bo->reusable = false; + bo->external = true; _mesa_hash_table_insert(bufmgr->handle_table, &bo->gem_handle, bo); _mesa_hash_table_insert(bufmgr->name_table, &bo->global_name, bo); @@ -1029,6 +1030,7 @@ brw_bo_gem_create_from_prime(struct brw_bufmgr *bufmgr, int prime_fd) bo->name = "prime"; bo->reusable = false; + bo->external = true; memclear(get_tiling); get_tiling.handle = bo->gem_handle; @@ -1059,6 +1061,7 @@ brw_bo_gem_export_to_prime(struct brw_bo *bo, int *prime_fd) return -errno; bo->reusable = false; + bo->external = true; return 0; } @@ -1080,6 +1083,7 @@ brw_bo_flink(struct brw_bo *bo, uint32_t *name) if (!bo->global_name) { bo->global_name = flink.name; bo->reusable = false; + bo->external = true; _mesa_hash_table_insert(bufmgr->name_table, &bo->global_name, bo); } diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.h b/src/mesa/drivers/dri/i965/brw_bufmgr.h index dd3a37040a..fedfd999a2 100644 --- a/src/mesa/drivers/dri/i965/brw_bufmgr.h +++ b/src/mesa/drivers/dri/i965/brw_bufmgr.h @@ -130,6 +130,11 @@ struct brw_bo { bool reusable; /** + * Boolean of whether this buffer has been shared with an external client. + */ + bool external; + + /** * Boolean of whether this buffer is cache coherent */ bool cache_coherent; -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev