From: Christian König <christian.koe...@amd.com> Add layer support to export individual array layers.
Signed-off-by: Christian König <christian.koe...@amd.com> --- src/gallium/drivers/radeon/r600_texture.c | 1 + src/gallium/drivers/radeon/radeon_winsys.h | 1 + src/gallium/winsys/amdgpu/drm/amdgpu_bo.c | 2 ++ src/gallium/winsys/radeon/drm/radeon_drm_bo.c | 3 +++ 4 files changed, 7 insertions(+) diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c index cb0c33e..22ef0a5 100644 --- a/src/gallium/drivers/radeon/r600_texture.c +++ b/src/gallium/drivers/radeon/r600_texture.c @@ -261,6 +261,7 @@ static boolean r600_texture_get_handle(struct pipe_screen* screen, return rscreen->ws->buffer_get_handle(resource->buf, surface->level[0].pitch_bytes, surface->level[0].offset, + surface->level[0].slice_size, whandle); } diff --git a/src/gallium/drivers/radeon/radeon_winsys.h b/src/gallium/drivers/radeon/radeon_winsys.h index 233d089..25901a3 100644 --- a/src/gallium/drivers/radeon/radeon_winsys.h +++ b/src/gallium/drivers/radeon/radeon_winsys.h @@ -537,6 +537,7 @@ struct radeon_winsys { */ boolean (*buffer_get_handle)(struct pb_buffer *buf, unsigned stride, unsigned offset, + unsigned slice_size, struct winsys_handle *whandle); /** diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c index 4e2c1d9..5b06d85 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c @@ -626,6 +626,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); @@ -654,6 +655,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; } diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c index 52000c0..420c32b 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c @@ -1019,6 +1019,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; @@ -1053,6 +1054,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; } -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev