diff options
author | Marek Olšák <[email protected]> | 2016-02-25 22:32:26 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2016-03-09 15:02:28 +0100 |
commit | ec74deeb2466689a0eca52f290d5f9e44af6a97b (patch) | |
tree | 696d3ab31f612630fa80a1fbf30f4c7bf5044e73 /src/gallium/drivers/radeon | |
parent | ff7e9412be9d1f5fdfedefb179483cc43b276c89 (diff) |
radeonsi: set amdgpu metadata before exporting a texture
Reviewed-by: Michel Dänzer <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeon')
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.h | 6 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/r600_texture.c | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h index 31ec24de9a2..d20069ef0c9 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.h +++ b/src/gallium/drivers/radeon/r600_pipe_common.h @@ -43,6 +43,8 @@ #include "util/u_suballoc.h" #include "util/u_transfer.h" +#define ATI_VENDOR_ID 0x1002 + #define R600_RESOURCE_FLAG_TRANSFER (PIPE_RESOURCE_FLAG_DRV_PRIV << 0) #define R600_RESOURCE_FLAG_FLUSHED_DEPTH (PIPE_RESOURCE_FLAG_DRV_PRIV << 1) #define R600_RESOURCE_FLAG_FORCE_TILING (PIPE_RESOURCE_FLAG_DRV_PRIV << 2) @@ -332,6 +334,10 @@ struct r600_common_screen { * drawing and re-emit the framebuffer state accordingly. */ unsigned dirty_fb_counter; + + void (*query_opaque_metadata)(struct r600_common_screen *rscreen, + struct r600_texture *rtex, + struct radeon_bo_metadata *md); }; /* This encapsulates a state or an operation which can emitted into the GPU diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c index b8c4c795b3c..1a8822ca54b 100644 --- a/src/gallium/drivers/radeon/r600_texture.c +++ b/src/gallium/drivers/radeon/r600_texture.c @@ -355,6 +355,10 @@ static boolean r600_texture_get_handle(struct pipe_screen* screen, /* Set metadata. */ r600_texture_init_metadata(rtex, &metadata); + if (rscreen->query_opaque_metadata) + rscreen->query_opaque_metadata(rscreen, rtex, + &metadata); + rscreen->ws->buffer_set_metadata(res->buf, &metadata); } } else { |