diff options
author | Greg Hackmann <ghackmann@google.com> | 2014-05-09 21:54:48 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-05-09 21:54:48 +0000 |
commit | 131c35004ebef46f5936c2d9682d5f66e7c3c88c (patch) | |
tree | abbacf865362279e728f6032ea54629d9410744b /include | |
parent | 4c847f2b79d99b1fecf487b167dd5bbe3ea7da06 (diff) | |
parent | 62cff27d48eada351ea952e5b960ab2f2c15b1d3 (diff) | |
download | hardware_libhardware-131c35004ebef46f5936c2d9682d5f66e7c3c88c.zip hardware_libhardware-131c35004ebef46f5936c2d9682d5f66e7c3c88c.tar.gz hardware_libhardware-131c35004ebef46f5936c2d9682d5f66e7c3c88c.tar.bz2 |
am 62cff27d: am 5a1ca138: am e79f167e: Merge "gralloc: Add asynchronous lock/unlock API"
* commit '62cff27d48eada351ea952e5b960ab2f2c15b1d3':
gralloc: Add asynchronous lock/unlock API
Diffstat (limited to 'include')
-rw-r--r-- | include/hardware/gralloc.h | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/include/hardware/gralloc.h b/include/hardware/gralloc.h index 0dbebcf..e7d0103 100644 --- a/include/hardware/gralloc.h +++ b/include/hardware/gralloc.h @@ -44,10 +44,14 @@ __BEGIN_DECLS * * GRALLOC_MODULE_API_VERSION_0_2: * Add support for flexible YCbCr format with (*lock_ycbcr)() method. + * + * GRALLOC_MODULE_API_VERSION_0_3: + * Add support for fence passing to/from lock/unlock. */ #define GRALLOC_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1) #define GRALLOC_MODULE_API_VERSION_0_2 HARDWARE_MODULE_API_VERSION(0, 2) +#define GRALLOC_MODULE_API_VERSION_0_3 HARDWARE_MODULE_API_VERSION(0, 3) #define GRALLOC_DEVICE_API_VERSION_0_1 HARDWARE_DEVICE_API_VERSION(0, 1) @@ -241,8 +245,53 @@ typedef struct gralloc_module_t { int l, int t, int w, int h, struct android_ycbcr *ycbcr); + /* + * The (*lockAsync)() method is like the (*lock)() method except + * that the buffer's sync fence object is passed into the lock + * call instead of requiring the caller to wait for completion. + * + * The gralloc implementation takes ownership of the fenceFd and + * is responsible for closing it when no longer needed. + * + * Added in GRALLOC_MODULE_API_VERSION_0_3. + */ + int (*lockAsync)(struct gralloc_module_t const* module, + buffer_handle_t handle, int usage, + int l, int t, int w, int h, + void** vaddr, int fenceFd); + + /* + * The (*unlockAsync)() method is like the (*unlock)() method + * except that a buffer sync fence object is returned from the + * lock call, representing the completion of any pending work + * performed by the gralloc implementation. + * + * The caller takes ownership of the fenceFd and is responsible + * for closing it when no longer needed. + * + * Added in GRALLOC_MODULE_API_VERSION_0_3. + */ + int (*unlockAsync)(struct gralloc_module_t const* module, + buffer_handle_t handle, int* fenceFd); + + /* + * The (*lockAsync_ycbcr)() method is like the (*lock_ycbcr)() + * method except that the buffer's sync fence object is passed + * into the lock call instead of requiring the caller to wait for + * completion. + * + * The gralloc implementation takes ownership of the fenceFd and + * is responsible for closing it when no longer needed. + * + * Added in GRALLOC_MODULE_API_VERSION_0_3. + */ + int (*lockAsync_ycbcr)(struct gralloc_module_t const* module, + buffer_handle_t handle, int usage, + int l, int t, int w, int h, + struct android_ycbcr *ycbcr, int fenceFd); + /* reserved for future use */ - void* reserved_proc[6]; + void* reserved_proc[3]; } gralloc_module_t; /*****************************************************************************/ |