Module: wine Branch: master Commit: 7124a7d90c0dc123da5a86229a7f64303bd32481 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7124a7d90c0dc123da5a86229a...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Jun 2 11:46:21 2017 +0200
wineandroid: Add a header for some of the Android native APIs and data structures.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wineandroid.drv/android.h | 1 + dlls/wineandroid.drv/android_native.h | 233 ++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+)
diff --git a/dlls/wineandroid.drv/android.h b/dlls/wineandroid.drv/android.h index 70a1e04..fb8b67d 100644 --- a/dlls/wineandroid.drv/android.h +++ b/dlls/wineandroid.drv/android.h @@ -32,6 +32,7 @@ #include "wingdi.h" #include "winuser.h" #include "wine/gdi_driver.h" +#include "android_native.h"
/************************************************************************** diff --git a/dlls/wineandroid.drv/android_native.h b/dlls/wineandroid.drv/android_native.h new file mode 100644 index 0000000..5efd564 --- /dev/null +++ b/dlls/wineandroid.drv/android_native.h @@ -0,0 +1,233 @@ +/* + * 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 */