[Beignet] [PATCH 2/2] Add document to describe the detials of libva buffer sharing.
Weng, Chuanbo
chuanbo.weng at intel.com
Mon Dec 22 02:31:11 PST 2014
Please ignore this patchset. I'll send out a new version.
-----Original Message-----
From: Weng, Chuanbo
Sent: Tuesday, December 16, 2014 20:17
To: beignet at lists.freedesktop.org
Cc: Zou, Nanhai; Zhao, Yakui; Li, Jocelyn; Weng, Chuanbo
Subject: [PATCH 2/2] Add document to describe the detials of libva buffer sharing.
This document includes the steps of using libva buffer sharing, the way to build and run corresponding example.
Signed-off-by: Chuanbo Weng <chuanbo.weng at intel.com>
---
docs/Beignet.mdwn | 1 +
docs/howto/libva-buffer-sharing-howto.mdwn | 66 ++++++++++++++++++++++++++++++
2 files changed, 67 insertions(+)
create mode 100644 docs/howto/libva-buffer-sharing-howto.mdwn
diff --git a/docs/Beignet.mdwn b/docs/Beignet.mdwn index fea56b8..8845ea1 100644
--- a/docs/Beignet.mdwn
+++ b/docs/Beignet.mdwn
@@ -238,6 +238,7 @@ Documents for OpenCL application developers
-------------------------------------------
- [[Cross compile|Beignet/howto/cross-compiler-howto]]
- [[Kernel Optimization Guide|Beignet/optimization-guide]]
+- [[Libva Buffer Sharing|Beignet/howto/libva-buffer-sharing-howto]]
The wiki URL is as below:
[http://www.freedesktop.org/wiki/Software/Beignet/](http://www.freedesktop.org/wiki/Software/Beignet/)
diff --git a/docs/howto/libva-buffer-sharing-howto.mdwn b/docs/howto/libva-buffer-sharing-howto.mdwn
new file mode 100644
index 0000000..94f1631
--- /dev/null
+++ b/docs/howto/libva-buffer-sharing-howto.mdwn
@@ -0,0 +1,66 @@
+Libva Buffer Sharing HowTo
+==========================
+
+Beignet has extensions
+(clCreateBufferFromLibvaIntel/clCreateImageFromLibvaIntel)
+to share gpu buffer object with libva. So users can utilize OpenCL to
+do processing on VASurface or VABuffer without buffer copy.
+
+Prerequisite
+-----------------------------------
+
+Libva api version >= 0.36.0. Please check your libva api version by
+command `pkg-config --modversion libva`.
+
+Steps
+---------------------------------------------------------
+
+In order to use the extension
+clCreateBufferFromLibvaIntel/clCreateImageFromLibvaIntel
+in your program, please follow the steps as below (We have added an
+example of using clCreateImageFromLibvaIntel, please read next section for details):
+
+- Get the address of this extension by the function:
+ clGetExtensionFunctionAddress("clCreateBufferFromLibvaIntel")
+ or clGetExtensionFunctionAddress("clCreateImageFromLibvaIntel")
+
+- Invoke vaAcquireBufferHandle to get VASurface/VABuffer's handle,
+which you want
+ to do processing by OpenCL.
+
+- Use clCreateBufferFromLibvaIntel/clCreateImageFromLibvaIntel to
+create corresponding
+ cl memory object from VASurface/VABuffer's handle. You should use
+clCreateImageFromLibvaIntel
+ to create a cl image object from VASurface, because VASurface is a
+tiling gpu buffer
+ object. And we suggest use clCreateBufferFromLibvaIntel to create a
+cl buffer object
+ from VABuffer.
+
+- Use OpenCL to do post-processing.
+
+- Release this cl buffer object by clReleaseMemObject.
+
+- Unlock this VABuffer by vaReleaseBufferHandle.
+
+Sample code
+-------------------------------------------------
+
+We have developed an example of using clCreateImageFromLibvaIntel in
+examples/libva_buffer_sharing directory. This example read a source nv12 file to a VASurface, and create a target VASurface.
+Then create corresponding cl image objects from them. After using ocl
+to change this VASurface to a gray image, target VASurface is saved as a file.
+
+- Add option -DBUILD_EXAMPLES=ON to enable building examples when running cmake, such as:
+ `> mkdir build`
+ `> cd build`
+ `> cmake -DBUILD_EXAMPLES=ON ../`
+
+- Build source code:
+ `> make`
+
+- Run:
+ `> cd examples`
+ `> . ../utests/setenv.sh`
+ `> ./example-libva_buffer_sharing`
+
+You can use gst-launch-1.0 to see the result(nv12 image). Just install
+gstreamer1.0-plugins-base, gstreamer1.0-plugins-bad and gstreamer1.0-x
+by apt on Ubuntu. Then running the following
+command:
+ `> gst-launch-1.0 filesrc location=file_name ! videoparse format=nv12 width=xxx height=xxx \
+ ! imagefreeze ! videoconvert ! video/x-raw, format=BGRx !
+ximagesink`
+
--
1.9.1
More information about the Beignet
mailing list