winsys/amdgpu: allow drivers to set/get opaque metadata
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
bd1feb2827
commit
f4aa3256ef
|
@ -278,6 +278,9 @@ struct radeon_info {
|
|||
|
||||
/* Tiling info for display code, DRI sharing, and other data. */
|
||||
struct radeon_bo_metadata {
|
||||
/* Tiling flags describing the texture layout for display code
|
||||
* and DRI sharing.
|
||||
*/
|
||||
enum radeon_bo_layout microtile;
|
||||
enum radeon_bo_layout macrotile;
|
||||
unsigned pipe_config;
|
||||
|
@ -289,6 +292,13 @@ struct radeon_bo_metadata {
|
|||
unsigned num_banks;
|
||||
unsigned stride;
|
||||
bool scanout;
|
||||
|
||||
/* Additional metadata associated with the buffer, in bytes.
|
||||
* The maximum size is 64 * 4. This is opaque for the winsys & kernel.
|
||||
* Supported by amdgpu only.
|
||||
*/
|
||||
uint32_t size_metadata;
|
||||
uint32_t metadata[64];
|
||||
};
|
||||
|
||||
enum radeon_feature_id {
|
||||
|
|
|
@ -417,6 +417,9 @@ static void amdgpu_buffer_get_metadata(struct pb_buffer *_buf,
|
|||
md->tile_split = eg_tile_split(AMDGPU_TILING_GET(tiling_flags, TILE_SPLIT));
|
||||
md->mtilea = 1 << AMDGPU_TILING_GET(tiling_flags, MACRO_TILE_ASPECT);
|
||||
md->scanout = AMDGPU_TILING_GET(tiling_flags, MICRO_TILE_MODE) == 0; /* DISPLAY */
|
||||
|
||||
md->size_metadata = info.metadata.size_metadata;
|
||||
memcpy(md->metadata, info.metadata.umd_metadata, sizeof(md->metadata));
|
||||
}
|
||||
|
||||
static void amdgpu_buffer_set_metadata(struct pb_buffer *_buf,
|
||||
|
@ -447,6 +450,8 @@ static void amdgpu_buffer_set_metadata(struct pb_buffer *_buf,
|
|||
tiling_flags |= AMDGPU_TILING_SET(MICRO_TILE_MODE, 1); /* THIN_MICRO_TILING */
|
||||
|
||||
metadata.tiling_info = tiling_flags;
|
||||
metadata.size_metadata = md->size_metadata;
|
||||
memcpy(metadata.umd_metadata, md->metadata, sizeof(md->metadata));
|
||||
|
||||
amdgpu_bo_set_metadata(bo->bo, &metadata);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue