| /* | |
| * Android native system definitions | |
| * | |
| * Copyright 2013 Alexandre Julliard | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| */ | |
| /* Copy of some Android native structures to avoid depending on the Android source */ | |
| /* Hopefully these won't change too frequently... */ | |
| #ifndef __WINE_ANDROID_NATIVE_H | |
| #define __WINE_ANDROID_NATIVE_H | |
| /* Native window definitions */ | |
| typedef struct native_handle | |
| { | |
| int version; | |
| int numFds; | |
| int numInts; | |
| int data[0]; | |
| } native_handle_t; | |
| typedef const native_handle_t *buffer_handle_t; | |
| struct android_native_base_t | |
| { | |
| int magic; | |
| int version; | |
| void *reserved[4]; | |
| void (*incRef)(struct android_native_base_t *base); | |
| void (*decRef)(struct android_native_base_t *base); | |
| }; | |
| typedef struct android_native_rect_t | |
| { | |
| int32_t left; | |
| int32_t top; | |
| int32_t right; | |
| int32_t bottom; | |
| } android_native_rect_t; | |
| struct ANativeWindowBuffer | |
| { | |
| struct android_native_base_t common; | |
| int width; | |
| int height; | |
| int stride; | |
| int format; | |
| int usage; | |
| void *reserved[2]; | |
| buffer_handle_t handle; | |
| void *reserved_proc[8]; | |
| }; | |
| struct ANativeWindow | |
| { | |
| struct android_native_base_t common; | |
| uint32_t flags; | |
| int minSwapInterval; | |
| int maxSwapInterval; | |
| float xdpi; | |
| float ydpi; | |
| intptr_t oem[4]; | |
| int (*setSwapInterval)(struct ANativeWindow *window, int interval); | |
| int (*dequeueBuffer_DEPRECATED)(struct ANativeWindow *window, struct ANativeWindowBuffer **buffer); | |
| int (*lockBuffer_DEPRECATED)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer); | |
| int (*queueBuffer_DEPRECATED)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer); | |
| int (*query)(const struct ANativeWindow *window, int what, int *value); | |
| int (*perform)(struct ANativeWindow *window, int operation, ... ); | |
| int (*cancelBuffer_DEPRECATED)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer); | |
| int (*dequeueBuffer)(struct ANativeWindow *window, struct ANativeWindowBuffer **buffer, int *fenceFd); | |
| int (*queueBuffer)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer, int fenceFd); | |
| int (*cancelBuffer)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer, int fenceFd); | |
| }; | |
| enum native_window_query | |
| { | |
| NATIVE_WINDOW_WIDTH = 0, | |
| NATIVE_WINDOW_HEIGHT = 1, | |
| NATIVE_WINDOW_FORMAT = 2, | |
| NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS = 3, | |
| NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER = 4, | |
| NATIVE_WINDOW_CONCRETE_TYPE = 5, | |
| NATIVE_WINDOW_DEFAULT_WIDTH = 6, | |
| NATIVE_WINDOW_DEFAULT_HEIGHT = 7, | |
| NATIVE_WINDOW_TRANSFORM_HINT = 8, | |
| NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND = 9 | |
| }; | |
| enum native_window_perform | |
| { | |
| NATIVE_WINDOW_SET_USAGE = 0, | |
| NATIVE_WINDOW_CONNECT = 1, | |
| NATIVE_WINDOW_DISCONNECT = 2, | |
| NATIVE_WINDOW_SET_CROP = 3, | |
| NATIVE_WINDOW_SET_BUFFER_COUNT = 4, | |
| NATIVE_WINDOW_SET_BUFFERS_GEOMETRY = 5, | |
| NATIVE_WINDOW_SET_BUFFERS_TRANSFORM = 6, | |
| NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP = 7, | |
| NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS = 8, | |
| NATIVE_WINDOW_SET_BUFFERS_FORMAT = 9, | |
| NATIVE_WINDOW_SET_SCALING_MODE = 10, | |
| NATIVE_WINDOW_LOCK = 11, | |
| NATIVE_WINDOW_UNLOCK_AND_POST = 12, | |
| NATIVE_WINDOW_API_CONNECT = 13, | |
| NATIVE_WINDOW_API_DISCONNECT = 14, | |
| NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS = 15, | |
| NATIVE_WINDOW_SET_POST_TRANSFORM_CROP = 16 | |
| }; | |
| enum native_window_api | |
| { | |
| NATIVE_WINDOW_API_EGL = 1, | |
| NATIVE_WINDOW_API_CPU = 2, | |
| NATIVE_WINDOW_API_MEDIA = 3, | |
| NATIVE_WINDOW_API_CAMERA = 4 | |
| }; | |
| enum android_pixel_format | |
| { | |
| PF_RGBA_8888 = 1, | |
| PF_RGBX_8888 = 2, | |
| PF_RGB_888 = 3, | |
| PF_RGB_565 = 4, | |
| PF_BGRA_8888 = 5, | |
| PF_RGBA_5551 = 6, | |
| PF_RGBA_4444 = 7 | |
| }; | |
| /* Hardware module definitions */ | |
| struct hw_module_methods_t; | |
| struct hw_device_t; | |
| struct android_ycbcr; | |
| struct hw_module_t | |
| { | |
| uint32_t tag; | |
| uint16_t module_api_version; | |
| uint16_t hal_api_version; | |
| const char *id; | |
| const char *name; | |
| const char *author; | |
| struct hw_module_methods_t *methods; | |
| void *dso; | |
| void *reserved[32-7]; | |
| }; | |
| struct hw_module_methods_t | |
| { | |
| int (*open)(const struct hw_module_t *module, const char *id, struct hw_device_t **device); | |
| }; | |
| struct hw_device_t | |
| { | |
| uint32_t tag; | |
| uint32_t version; | |
| struct hw_module_t *module; | |
| void *reserved[12]; | |
| int (*close)(struct hw_device_t *device); | |
| }; | |
| struct gralloc_module_t | |
| { | |
| struct hw_module_t common; | |
| int (*registerBuffer)(struct gralloc_module_t const *module, buffer_handle_t handle); | |
| int (*unregisterBuffer)(struct gralloc_module_t const *module, buffer_handle_t handle); | |
| int (*lock)(struct gralloc_module_t const *module, buffer_handle_t handle, int usage, int l, int t, int w, int h, void **vaddr); | |
| int (*unlock)(struct gralloc_module_t const *module, buffer_handle_t handle); | |
| int (*perform)(struct gralloc_module_t const *module, int operation, ... ); | |
| 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); | |
| void *reserved_proc[6]; | |
| }; | |
| #define ANDROID_NATIVE_MAKE_CONSTANT(a,b,c,d) \ | |
| (((unsigned)(a)<<24)|((unsigned)(b)<<16)|((unsigned)(c)<<8)|(unsigned)(d)) | |
| #define ANDROID_NATIVE_WINDOW_MAGIC \ | |
| ANDROID_NATIVE_MAKE_CONSTANT('_','w','n','d') | |
| #define ANDROID_NATIVE_BUFFER_MAGIC \ | |
| ANDROID_NATIVE_MAKE_CONSTANT('_','b','f','r') | |
| enum gralloc_usage | |
| { | |
| GRALLOC_USAGE_SW_READ_NEVER = 0x00000000, | |
| GRALLOC_USAGE_SW_READ_RARELY = 0x00000002, | |
| GRALLOC_USAGE_SW_READ_OFTEN = 0x00000003, | |
| GRALLOC_USAGE_SW_READ_MASK = 0x0000000F, | |
| GRALLOC_USAGE_SW_WRITE_NEVER = 0x00000000, | |
| GRALLOC_USAGE_SW_WRITE_RARELY = 0x00000020, | |
| GRALLOC_USAGE_SW_WRITE_OFTEN = 0x00000030, | |
| GRALLOC_USAGE_SW_WRITE_MASK = 0x000000F0, | |
| GRALLOC_USAGE_HW_TEXTURE = 0x00000100, | |
| GRALLOC_USAGE_HW_RENDER = 0x00000200, | |
| GRALLOC_USAGE_HW_2D = 0x00000400, | |
| GRALLOC_USAGE_HW_COMPOSER = 0x00000800, | |
| GRALLOC_USAGE_HW_FB = 0x00001000, | |
| GRALLOC_USAGE_HW_VIDEO_ENCODER = 0x00010000, | |
| GRALLOC_USAGE_HW_CAMERA_WRITE = 0x00020000, | |
| GRALLOC_USAGE_HW_CAMERA_READ = 0x00040000, | |
| GRALLOC_USAGE_HW_CAMERA_ZSL = 0x00060000, | |
| GRALLOC_USAGE_HW_CAMERA_MASK = 0x00060000, | |
| GRALLOC_USAGE_HW_MASK = 0x00071F00, | |
| GRALLOC_USAGE_EXTERNAL_DISP = 0x00002000, | |
| GRALLOC_USAGE_PROTECTED = 0x00004000, | |
| GRALLOC_USAGE_PRIVATE_0 = 0x10000000, | |
| GRALLOC_USAGE_PRIVATE_1 = 0x20000000, | |
| GRALLOC_USAGE_PRIVATE_2 = 0x40000000, | |
| GRALLOC_USAGE_PRIVATE_3 = 0x80000000, | |
| GRALLOC_USAGE_PRIVATE_MASK = 0xF0000000, | |
| }; | |
| #define GRALLOC_HARDWARE_MODULE_ID "gralloc" | |
| extern int hw_get_module(const char *id, const struct hw_module_t **module); | |
| #endif /* __WINE_ANDROID_NATIVE_H */ |