[Mesa-dev] [PATCH 04/10] radeon/winsys: add layer support for BO export
Christian König
deathsimple at vodafone.de
Tue Mar 8 12:21:45 UTC 2016
From: Christian König <christian.koenig at amd.com>
Add layer support to export individual array layers.
Signed-off-by: Christian König <christian.koenig at 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
More information about the mesa-dev
mailing list