radeon/winsys: add layer support for BO export

Add layer support to export individual array layers.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Christian König 2016-01-14 15:01:39 +01:00
parent 04bc082f6a
commit 5aea0d6919
4 changed files with 7 additions and 0 deletions

View File

@ -374,6 +374,7 @@ static boolean r600_texture_get_handle(struct pipe_screen* screen,
return rscreen->ws->buffer_get_handle(res->buf,
rtex->surface.level[0].pitch_bytes,
rtex->surface.level[0].offset,
rtex->surface.level[0].slice_size,
whandle);
}

View File

@ -547,6 +547,7 @@ struct radeon_winsys {
*/
boolean (*buffer_get_handle)(struct pb_buffer *buf,
unsigned stride, unsigned offset,
unsigned slice_size,
struct winsys_handle *whandle);
/**

View File

@ -613,6 +613,7 @@ error:
static boolean amdgpu_bo_get_handle(struct pb_buffer *buffer,
unsigned stride, unsigned offset,
unsigned slice_size,
struct winsys_handle *whandle)
{
struct amdgpu_winsys_bo *bo = amdgpu_winsys_bo(buffer);
@ -641,6 +642,7 @@ static boolean amdgpu_bo_get_handle(struct pb_buffer *buffer,
whandle->stride = stride;
whandle->offset = offset;
whandle->offset += slice_size * whandle->layer;
bo->is_shared = true;
return TRUE;
}

View File

@ -995,6 +995,7 @@ fail:
static boolean radeon_winsys_bo_get_handle(struct pb_buffer *buffer,
unsigned stride, unsigned offset,
unsigned slice_size,
struct winsys_handle *whandle)
{
struct drm_gem_flink flink;
@ -1029,6 +1030,8 @@ static boolean radeon_winsys_bo_get_handle(struct pb_buffer *buffer,
whandle->stride = stride;
whandle->offset = offset;
whandle->offset += slice_size * whandle->layer;
return TRUE;
}