summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2016-02-24 20:04:31 +0100
committerMarek Olšák <[email protected]>2016-03-09 15:02:26 +0100
commitc034d3dde06b1ff882938bfea2b7cad10468b0db (patch)
treeb841828be5658035cdb1ea14d446043719d249af /src/gallium
parent6b187bbd9f9bb86556037b13afac0b1ff43e8293 (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]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/radeon/r600_pipe_common.h1
-rw-r--r--src/gallium/drivers/radeon/r600_texture.c3
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,