summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuo Yejun <yejun.guo@intel.com>2014-06-09 08:39:33 +0800
committerZhigang Gong <zhigang.gong@intel.com>2014-06-11 11:04:57 +0800
commitf5182996ead14f2bb7cdd3f3f082aa486f499114 (patch)
treed2d4016a8da0fdf3e70cfa9e43043fc0fc402aa6
parente5d25dac46ab2f90d9fc66210f3bdc54e72445fe (diff)
fix issue when create cl image from libva with offset
to share data between libva and ocl (at drm level), it is acceptable to create cl image from libva with offset (to drm object). Correct the bo offset whose value will finally go to ss1.base_addr. Signed-off-by: Guo Yejun <yejun.guo@intel.com> Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
-rw-r--r--src/cl_driver.h2
-rw-r--r--src/cl_mem.c2
-rw-r--r--src/intel/intel_driver.c4
3 files changed, 5 insertions, 3 deletions
diff --git a/src/cl_driver.h b/src/cl_driver.h
index 421027a..d935235 100644
--- a/src/cl_driver.h
+++ b/src/cl_driver.h
@@ -287,7 +287,7 @@ extern cl_buffer_release_from_texture_cb *cl_buffer_release_from_texture;
typedef cl_buffer (cl_buffer_get_buffer_from_libva_cb)(cl_context ctx, unsigned int bo_name, size_t *sz);
extern cl_buffer_get_buffer_from_libva_cb *cl_buffer_get_buffer_from_libva;
-typedef cl_buffer (cl_buffer_get_image_from_libva_cb)(cl_context ctx, unsigned int bo_name, struct _cl_mem_image *image);
+typedef cl_buffer (cl_buffer_get_image_from_libva_cb)(cl_context ctx, unsigned int bo_name, struct _cl_mem_image *image, unsigned int offset);
extern cl_buffer_get_image_from_libva_cb *cl_buffer_get_image_from_libva;
/* Unref a buffer and destroy it if no more ref */
diff --git a/src/cl_mem.c b/src/cl_mem.c
index 6369ba9..2f03935 100644
--- a/src/cl_mem.c
+++ b/src/cl_mem.c
@@ -1365,7 +1365,7 @@ LOCAL cl_mem cl_mem_new_libva_image(cl_context ctx,
image = cl_mem_image(mem);
- mem->bo = cl_buffer_get_image_from_libva(ctx, bo_name, image);
+ mem->bo = cl_buffer_get_image_from_libva(ctx, bo_name, image, offset);
image->w = width;
image->h = height;
diff --git a/src/intel/intel_driver.c b/src/intel/intel_driver.c
index bb2f9b2..bc6aaef 100644
--- a/src/intel/intel_driver.c
+++ b/src/intel/intel_driver.c
@@ -632,13 +632,15 @@ cl_buffer intel_share_buffer_from_libva(cl_context ctx,
cl_buffer intel_share_image_from_libva(cl_context ctx,
unsigned int bo_name,
- struct _cl_mem_image *image)
+ struct _cl_mem_image *image,
+ unsigned int offset)
{
drm_intel_bo *intel_bo;
uint32_t intel_tiling, intel_swizzle_mode;
intel_bo = intel_driver_share_buffer((intel_driver_t *)ctx->drv, "shared from libva", bo_name);
+ intel_bo->offset += offset;
drm_intel_bo_get_tiling(intel_bo, &intel_tiling, &intel_swizzle_mode);
image->tiling = get_cl_tiling(intel_tiling);