diff options
author | Alex Ray <aray@google.com> | 2013-04-18 20:39:42 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-04-18 20:39:42 +0000 |
commit | c82a0e7792190a2c02826dccf8a77473c6fce980 (patch) | |
tree | 9b75e24f8caa8b856c28820724c5d550fcb461af | |
parent | 47a0ead467b563c97e2813c292e90f31e650c640 (diff) | |
parent | baa47f353a318b9f498f093e70d57e4f43f7c345 (diff) | |
download | libhardware-c82a0e7792190a2c02826dccf8a77473c6fce980.tar.gz |
Merge "gralloc: add lock_ycbcr method" into jb-mr2-dev
-rw-r--r-- | include/hardware/gralloc.h | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/include/hardware/gralloc.h b/include/hardware/gralloc.h index a6d9c1f3..52ef6a3b 100644 --- a/include/hardware/gralloc.h +++ b/include/hardware/gralloc.h @@ -19,6 +19,7 @@ #define ANDROID_GRALLOC_INTERFACE_H #include <system/window.h> +#include <system/graphics.h> #include <hardware/hardware.h> #include <stdint.h> @@ -32,7 +33,23 @@ __BEGIN_DECLS -#define GRALLOC_API_VERSION 1 +/** + * Module versioning information for the Gralloc hardware module, based on + * gralloc_module_t.common.module_api_version. + * + * Version History: + * + * GRALLOC_MODULE_API_VERSION_0_1: + * Initial Gralloc hardware module API. + * + * GRALLOC_MODULE_API_VERSION_0_2: + * Add support for flexible YCbCr format with (*lock_ycbcr)() method. + */ + +#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_DEVICE_API_VERSION_0_1 HARDWARE_DEVICE_API_VERSION(0, 1) /** * The id of this module @@ -165,6 +182,10 @@ typedef struct gralloc_module_t { * If usage specifies GRALLOC_USAGE_SW_*, vaddr is filled with the address * of the buffer in virtual memory. * + * Note calling (*lock)() on HAL_PIXEL_FORMAT_YCbCr_*_888 buffers will fail + * and return -EINVAL. These buffers must be locked with (*lock_ycbcr)() + * instead. + * * THREADING CONSIDERATIONS: * * It is legal for several different threads to lock a buffer from @@ -201,8 +222,24 @@ typedef struct gralloc_module_t { int (*perform)(struct gralloc_module_t const* module, int operation, ... ); + /* + * The (*lock_ycbcr)() method is like the (*lock)() method, with the + * difference that it fills a struct ycbcr with a description of the buffer + * layout, and zeroes out the reserved fields. + * + * This will only work on buffers with HAL_PIXEL_FORMAT_YCbCr_*_888, and + * will return -EINVAL on any other buffer formats. + * + * Added in GRALLOC_MODULE_API_VERSION_0_2. + */ + + int (*lock_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); + /* reserved for future use */ - void* reserved_proc[7]; + void* reserved_proc[6]; } gralloc_module_t; /*****************************************************************************/ |