diff options
author | Marek Olšák <[email protected]> | 2016-02-24 20:04:31 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2016-03-09 15:02:26 +0100 |
commit | c034d3dde06b1ff882938bfea2b7cad10468b0db (patch) | |
tree | b841828be5658035cdb1ea14d446043719d249af | |
parent | 6b187bbd9f9bb86556037b13afac0b1ff43e8293 (diff) |
gallium/radeon: check that handle usage doesn't change for a resource
Reviewed-by: Michel Dänzer <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/r600_texture.c | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h index 4cef5ef1adc..3bbbfbbd528 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.h +++ b/src/gallium/drivers/radeon/r600_pipe_common.h @@ -169,6 +169,7 @@ struct r600_resource { /* Whether the resource has been exported via resource_get_handle. */ bool is_shared; + unsigned external_usage; /* PIPE_HANDLE_USAGE_* */ }; struct r600_transfer { diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c index 558dc73d9d4..5f49dd7df5d 100644 --- a/src/gallium/drivers/radeon/r600_texture.c +++ b/src/gallium/drivers/radeon/r600_texture.c @@ -261,11 +261,14 @@ static boolean r600_texture_get_handle(struct pipe_screen* screen, if (!res->is_shared) { res->is_shared = true; + res->external_usage = usage; if (resource->target != PIPE_BUFFER) { r600_texture_init_metadata(rtex, &metadata); rscreen->ws->buffer_set_metadata(res->buf, &metadata); } + } else { + assert(res->external_usage == usage); } return rscreen->ws->buffer_get_handle(res->buf, |