diff options
Diffstat (limited to 'include')
27 files changed, 288 insertions, 1313 deletions
diff --git a/include/GLES/egl.h b/include/GLES/egl.h deleted file mode 100644 index 08834ab..0000000 --- a/include/GLES/egl.h +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_EGL_H -#define ANDROID_EGL_H - -#include <GLES/gl.h> -#include <GLES/egltypes.h> -#include <GLES/eglnatives.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#define EGL_VERSION_1_0 1 -#define EGL_VERSION_1_1 1 -#define EGL_VERSION_1_2 1 - -#define EGL_FALSE 0 -#define EGL_TRUE 1 - -/* Errors */ -#define EGL_SUCCESS 0x3000 -#define EGL_NOT_INITIALIZED 0x3001 -#define EGL_BAD_ACCESS 0x3002 -#define EGL_BAD_ALLOC 0x3003 -#define EGL_BAD_ATTRIBUTE 0x3004 -#define EGL_BAD_CONFIG 0x3005 -#define EGL_BAD_CONTEXT 0x3006 -#define EGL_BAD_CURRENT_SURFACE 0x3007 -#define EGL_BAD_DISPLAY 0x3008 -#define EGL_BAD_MATCH 0x3009 -#define EGL_BAD_NATIVE_PIXMAP 0x300A -#define EGL_BAD_NATIVE_WINDOW 0x300B -#define EGL_BAD_PARAMETER 0x300C -#define EGL_BAD_SURFACE 0x300D -#define EGL_CONTEXT_LOST 0x300E - -/* Config attributes */ -#define EGL_BUFFER_SIZE 0x3020 -#define EGL_ALPHA_SIZE 0x3021 -#define EGL_BLUE_SIZE 0x3022 -#define EGL_GREEN_SIZE 0x3023 -#define EGL_RED_SIZE 0x3024 -#define EGL_DEPTH_SIZE 0x3025 -#define EGL_STENCIL_SIZE 0x3026 -#define EGL_CONFIG_CAVEAT 0x3027 -#define EGL_CONFIG_ID 0x3028 -#define EGL_LEVEL 0x3029 -#define EGL_MAX_PBUFFER_HEIGHT 0x302A -#define EGL_MAX_PBUFFER_PIXELS 0x302B -#define EGL_MAX_PBUFFER_WIDTH 0x302C -#define EGL_NATIVE_RENDERABLE 0x302D -#define EGL_NATIVE_VISUAL_ID 0x302E -#define EGL_NATIVE_VISUAL_TYPE 0x302F -#define EGL_SAMPLES 0x3031 -#define EGL_SAMPLE_BUFFERS 0x3032 -#define EGL_SURFACE_TYPE 0x3033 -#define EGL_TRANSPARENT_TYPE 0x3034 -#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 -#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 -#define EGL_TRANSPARENT_RED_VALUE 0x3037 -#define EGL_NONE 0x3038 -#define EGL_BIND_TO_TEXTURE_RGB 0x3039 -#define EGL_BIND_TO_TEXTURE_RGBA 0x303A -#define EGL_MIN_SWAP_INTERVAL 0x303B -#define EGL_MAX_SWAP_INTERVAL 0x303C -#define EGL_LUMINANCE_SIZE 0x303D -#define EGL_ALPHA_MASK_SIZE 0x303E -#define EGL_COLOR_BUFFER_TYPE 0x303F -#define EGL_RENDERABLE_TYPE 0x3040 - -/* Config values */ -#define EGL_DONT_CARE ((EGLint)-1) - -#define EGL_SLOW_CONFIG 0x3050 -#define EGL_NON_CONFORMANT_CONFIG 0x3051 -#define EGL_TRANSPARENT_RGB 0x3052 -#define EGL_NO_TEXTURE 0x305C -#define EGL_TEXTURE_RGB 0x305D -#define EGL_TEXTURE_RGBA 0x305E -#define EGL_TEXTURE_2D 0x305F -#define EGL_RGB_BUFFER 0x308E -#define EGL_LUMINANCE_BUFFER 0x308F - -/* Config attribute mask bits */ -#define EGL_PBUFFER_BIT 0x01 -#define EGL_PIXMAP_BIT 0x02 -#define EGL_WINDOW_BIT 0x04 -#define EGL_OPENGL_ES_BIT 0x01 -#define EGL_OPENVG_BIT 0x02 - -/* String names */ -#define EGL_VENDOR 0x3053 -#define EGL_VERSION 0x3054 -#define EGL_EXTENSIONS 0x3055 -#define EGL_CLIENT_APIS 0x308D - -/* Surface attributes */ -#define EGL_HEIGHT 0x3056 -#define EGL_WIDTH 0x3057 -#define EGL_LARGEST_PBUFFER 0x3058 -#define EGL_TEXTURE_FORMAT 0x3080 -#define EGL_TEXTURE_TARGET 0x3081 -#define EGL_MIPMAP_TEXTURE 0x3082 -#define EGL_MIPMAP_LEVEL 0x3083 -#define EGL_RENDER_BUFFER 0x3086 -#define EGL_COLORSPACE 0x3087 -#define EGL_ALPHA_FORMAT 0x3088 -#define EGL_HORIZONTAL_RESOLUTION 0x3090 -#define EGL_VERTICAL_RESOLUTION 0x3091 -#define EGL_PIXEL_ASPECT_RATIO 0x3092 -#define EGL_SWAP_BEHAVIOR 0x3093 - -#define EGL_BACK_BUFFER 0x3084 -#define EGL_SINGLE_BUFFER 0x3085 - -#define EGL_DISPLAY_SCALING 10000 - -#define EGL_UNKNOWN ((EGLint)-1) - -/* Back buffer swap behaviors */ -#define EGL_BUFFER_PRESERVED 0x3094 -#define EGL_BUFFER_DESTROYED 0x3095 - -/* CreatePbufferFromClientBuffer buffer types */ -#define EGL_OPENVG_IMAGE 0x3096 - -/* QueryContext targets */ -#define EGL_CONTEXT_CLIENT_TYPE 0x3097 - -/* BindAPI/QueryAPI targets */ -#define EGL_OPENGL_ES_API 0x30A0 -#define EGL_OPENVG_API 0x30A1 - -/* WaitNative engines */ -#define EGL_CORE_NATIVE_ENGINE 0x305B - -/* Current surfaces */ -#define EGL_DRAW 0x3059 -#define EGL_READ 0x305A - - -EGLDisplay eglGetDisplay(NativeDisplayType display); -EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); -EGLBoolean eglTerminate(EGLDisplay dpy); - -EGLBoolean eglGetConfigs( EGLDisplay dpy, - EGLConfig *configs, - EGLint config_size, EGLint *num_config); - -EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list, - EGLConfig *configs, EGLint config_size, - EGLint *num_config); - -EGLBoolean eglGetConfigAttrib( EGLDisplay dpy, EGLConfig config, - EGLint attribute, EGLint *value); - -EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, - NativeWindowType window, - const EGLint *attrib_list); - -EGLSurface eglCreatePixmapSurface( EGLDisplay dpy, EGLConfig config, - NativePixmapType pixmap, - const EGLint *attrib_list); - -EGLSurface eglCreatePbufferSurface( EGLDisplay dpy, EGLConfig config, - const EGLint *attrib_list); - -EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface); - -EGLBoolean eglQuerySurface( EGLDisplay dpy, EGLSurface surface, - EGLint attribute, EGLint *value); - -EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, - EGLContext share_list, const EGLint *attrib_list); - -EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx); - -EGLBoolean eglMakeCurrent( EGLDisplay dpy, EGLSurface draw, - EGLSurface read, EGLContext ctx); - -EGLContext eglGetCurrentContext(void); -EGLSurface eglGetCurrentSurface(EGLint readdraw); -EGLDisplay eglGetCurrentDisplay(void); -EGLBoolean eglQueryContext( EGLDisplay dpy, EGLContext ctx, - EGLint attribute, EGLint *value); - -EGLBoolean eglWaitGL(void); -EGLBoolean eglWaitNative(EGLint engine); -EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface draw); -EGLBoolean eglCopyBuffers( EGLDisplay dpy, EGLSurface surface, - NativePixmapType target); - -EGLint eglGetError(void); -const char* eglQueryString(EGLDisplay dpy, EGLint name); -void (*eglGetProcAddress (const char *procname))(); - -/* ---------------------------------------------------------------------------- - * EGL 1.1 - * ---------------------------------------------------------------------------- - */ - -EGLBoolean eglSurfaceAttrib( - EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); -EGLBoolean eglBindTexImage( - EGLDisplay dpy, EGLSurface surface, EGLint buffer); -EGLBoolean eglReleaseTexImage( - EGLDisplay dpy, EGLSurface surface, EGLint buffer); - -EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval); - -/* ---------------------------------------------------------------------------- - * EGL 1.2 - * ---------------------------------------------------------------------------- - */ - -EGLBoolean eglBindAPI(EGLenum api); -EGLenum eglQueryAPI(void); -EGLBoolean eglWaitClient(void); -EGLBoolean eglReleaseThread(void); -EGLSurface eglCreatePbufferFromClientBuffer( - EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, - EGLConfig config, const EGLint *attrib_list); - -/* ---------------------------------------------------------------------------- - * Android extentions - * ---------------------------------------------------------------------------- - */ - -EGLBoolean eglSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw, - EGLint l, EGLint t, EGLint w, EGLint h); - -EGLBoolean eglCopyFrontToBackANDROID(EGLDisplay dpy, - EGLSurface surface, - EGLint l, EGLint t, EGLint w, EGLint h); - -const char* eglQueryStringConfigANDROID( - EGLDisplay dpy, EGLConfig config, EGLint name); - -void* eglGetRenderBufferAddressANDROID(EGLDisplay dpy, EGLSurface surface); - -EGLBoolean eglCopyBitsANDROID(EGLDisplay dpy, - NativeWindowType draw, EGLint x, EGLint y, - NativeWindowType read, - EGLint crop_x, EGLint crop_y, EGLint crop_w, EGLint crop_h, - EGLint flags); - - -#ifdef __cplusplus -} -#endif - - -#endif /*ANDROID_EGL_H*/ diff --git a/include/GLES/eglnatives.h b/include/GLES/eglnatives.h deleted file mode 100644 index 1cd57d0..0000000 --- a/include/GLES/eglnatives.h +++ /dev/null @@ -1,277 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_EGLNATIVES_H -#define ANDROID_EGLNATIVES_H - -#include <sys/types.h> - -#ifdef __cplusplus -extern "C" { -#endif -/*****************************************************************************/ - -struct egl_native_window_t; -struct egl_native_pixmap_t; - - -typedef struct egl_native_window_t* NativeWindowType; -typedef struct egl_native_pixmap_t* NativePixmapType; -typedef void* NativeDisplayType; - -/* - * This a convenience function to create a NativeWindowType surface - * that maps to the whole screen - * This function is actually implemented in libui.so - */ - -NativeWindowType android_createDisplaySurface(); - -/* flags returned from swapBuffer */ -#define EGL_NATIVES_FLAG_SIZE_CHANGED 0x00000001 - -/* surface flags */ -#define EGL_NATIVES_FLAG_DESTROY_BACKBUFFER 0x00000001 - -enum native_pixel_format_t -{ - NATIVE_PIXEL_FORMAT_RGBA_8888 = 1, - NATIVE_PIXEL_FORMAT_RGB_565 = 4, - NATIVE_PIXEL_FORMAT_BGRA_8888 = 5, - NATIVE_PIXEL_FORMAT_RGBA_5551 = 6, - NATIVE_PIXEL_FORMAT_RGBA_4444 = 7, - NATIVE_PIXEL_FORMAT_YCbCr_422_SP= 0x10, - NATIVE_PIXEL_FORMAT_YCbCr_420_SP= 0x11, -}; - -enum native_memory_type_t -{ - NATIVE_MEMORY_TYPE_PMEM = 0, - NATIVE_MEMORY_TYPE_GPU = 1, - NATIVE_MEMORY_TYPE_FB = 2, - NATIVE_MEMORY_TYPE_HEAP = 128 -}; - - -struct egl_native_window_t -{ - /* - * magic must be set to 0x600913 - */ - uint32_t magic; - - /* - * must be sizeof(egl_native_window_t) - */ - uint32_t version; - - /* - * ident is reserved for the Android platform - */ - uint32_t ident; - - /* - * width, height and stride of the window in pixels - * Any of these value can be nul in which case GL commands are - * accepted and processed as usual, but not rendering occurs. - */ - int width; // w=h=0 is legal - int height; - int stride; - - /* - * format of the native window (see ui/PixelFormat.h) - */ - int format; - - /* - * Offset of the bits in the VRAM - */ - intptr_t offset; - - /* - * flags describing some attributes of this surface - * EGL_NATIVES_FLAG_DESTROY_BACKBUFFER: backbuffer not preserved after - * eglSwapBuffers - */ - uint32_t flags; - - /* - * horizontal and vertical resolution in DPI - */ - float xdpi; - float ydpi; - - /* - * refresh rate in frames per second (Hz) - */ - float fps; - - - /* - * Base memory virtual address of the surface in the CPU side - */ - intptr_t base; - - /* - * Heap the offset above is based from - */ - int fd; - - /* - * Memory type the surface resides into - */ - uint8_t memory_type; - - /* - * Reserved for future use. MUST BE ZERO. - */ - uint8_t reserved_pad[3]; - int reserved[8]; - - /* - * Vertical stride (only relevant with planar formats) - */ - - int vstride; - - /* - * Hook called by EGL to hold a reference on this structure - */ - void (*incRef)(NativeWindowType window); - - /* - * Hook called by EGL to release a reference on this structure - */ - void (*decRef)(NativeWindowType window); - - /* - * Hook called by EGL to perform a page flip. This function - * may update the size attributes above, in which case it returns - * the EGL_NATIVES_FLAG_SIZE_CHANGED bit set. - */ - uint32_t (*swapBuffers)(NativeWindowType window); - - /* - * Hook called by EGL to set the swap rectangle. this hook can be - * null (operation not supported) - */ - void (*setSwapRectangle)(NativeWindowType window, int l, int t, int w, int h); - - /* - * Reserved for future use. MUST BE ZERO. - */ - void (*reserved_proc_0)(void); - - - /* - * Hook called by EGL to retrieve the next buffer to render into. - * This call updates this structure. - */ - uint32_t (*nextBuffer)(NativeWindowType window); - - /* - * Hook called by EGL when the native surface is associated to EGL - * (eglCreateWindowSurface). Can be NULL. - */ - void (*connect)(NativeWindowType window); - - /* - * Hook called by EGL when eglDestroySurface is called. Can be NULL. - */ - void (*disconnect)(NativeWindowType window); - - /* - * Reserved for future use. MUST BE ZERO. - */ - void (*reserved_proc[11])(void); - - /* - * Some storage reserved for the oem driver. - */ - intptr_t oem[4]; -}; - - -struct egl_native_pixmap_t -{ - int32_t version; /* must be 32 */ - int32_t width; - int32_t height; - int32_t stride; - uint8_t* data; - uint8_t format; - uint8_t rfu[3]; - union { - uint32_t compressedFormat; - int32_t vstride; - }; - int32_t reserved; -}; - -/*****************************************************************************/ - -/* - * OEM's egl's library (libhgl.so) must imlement these hooks to allocate - * the GPU memory they need - */ - - -typedef struct -{ - // for internal use - void* user; - // virtual address of this area - void* base; - // size of this area in bytes - size_t size; - // physical address of this area - void* phys; - // offset in this area available to the GPU - size_t offset; - // fd of this area - int fd; -} gpu_area_t; - -typedef struct -{ - // area where GPU registers are mapped - gpu_area_t regs; - // number of extra areas (currently limited to 2) - int32_t count; - // extra GPU areas (currently limited to 2) - gpu_area_t gpu[2]; -} request_gpu_t; - - -typedef request_gpu_t* (*OEM_EGL_acquire_gpu_t)(void* user); -typedef int (*OEM_EGL_release_gpu_t)(void* user, request_gpu_t* handle); -typedef void (*register_gpu_t) - (void* user, OEM_EGL_acquire_gpu_t, OEM_EGL_release_gpu_t); - -void oem_register_gpu( - void* user, - OEM_EGL_acquire_gpu_t acquire, - OEM_EGL_release_gpu_t release); - - -/*****************************************************************************/ - -#ifdef __cplusplus -} -#endif - -#endif /* ANDROID_EGLNATIVES_H */ diff --git a/include/GLES/egltypes.h b/include/GLES/egltypes.h deleted file mode 100644 index 698239b..0000000 --- a/include/GLES/egltypes.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_EGL_TYPES_H -#define ANDROID_EGL_TYPES_H - -#include <sys/types.h> - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned int EGLBoolean; -typedef int32_t EGLint; -typedef int EGLenum; -typedef void *EGLDisplay; -typedef void *EGLConfig; -typedef void *EGLSurface; -typedef void *EGLContext; -typedef void *EGLClientBuffer; - -#define EGL_DEFAULT_DISPLAY ((NativeDisplayType)0) - -#define EGL_NO_CONTEXT ((EGLContext)0) -#define EGL_NO_DISPLAY ((EGLDisplay)0) -#define EGL_NO_SURFACE ((EGLSurface)0) - - -#ifdef __cplusplus -} -#endif - - -#endif /* ANDROID_EGL_TYPES_H */ diff --git a/include/GLES/gl.h b/include/GLES/gl.h deleted file mode 100644 index 50b6ac4..0000000 --- a/include/GLES/gl.h +++ /dev/null @@ -1,639 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __gl_h_ -#define __gl_h_ - -#include <stdint.h> -#include <sys/types.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/*****************************************************************************/ - -typedef int8_t GLbyte; // b -typedef int16_t GLshort; // s -typedef int32_t GLint; // i -typedef ssize_t GLsizei; // i -typedef int32_t GLfixed; // x -typedef int32_t GLclampx; // x -typedef float GLfloat; // f -typedef float GLclampf; // f -typedef uint8_t GLubyte; // ub -typedef uint8_t GLboolean; // ub -typedef uint16_t GLushort; // us -typedef uint32_t GLuint; // ui -typedef unsigned int GLenum; // ui -typedef unsigned int GLbitfield; // ui -typedef void GLvoid; -typedef intptr_t GLintptr; -typedef int GLsizeiptr; -typedef GLintptr GLintptrARB; -typedef GLsizeiptr GLsizeiptrARB; - -/*****************************************************************************/ - -#define GL_VERSION_ES_CM_1_0 1 -#define GL_VERSION_ES_CL_1_0 1 -#define GL_VERSION_ES_CM_1_1 1 -#define GL_VERSION_ES_CL_1_1 1 - -#define GL_OES_byte_coordinates 1 -#define GL_OES_fixed_point 1 -#define GL_OES_single_precision 1 -#define GL_OES_read_format 1 -#define GL_OES_compressed_paletted_texture 1 -#define GL_OES_draw_texture 1 -#define GL_OES_matrix_get 1 -#define GL_OES_query_matrix 1 -#define GL_OES_vertex_buffer_object 1 -#define GL_OES_point_size_array 1 -#define GL_OES_point_sprite 1 -#define GL_ARB_texture_non_power_of_two 1 - -/*****************************************************************************/ -/* OpenGL ES 1.0 names */ - -#define GL_FALSE 0 -#define GL_TRUE 1 - -/* begin mode */ -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 - -/* clear mask */ -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_COLOR_BUFFER_BIT 0x00004000 - -/* enable/disable */ -#define GL_FOG 0x0B60 -#define GL_LIGHTING 0x0B50 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_CULL_FACE 0x0B44 -#define GL_ALPHA_TEST 0x0BC0 -#define GL_BLEND 0x0BE2 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_DITHER 0x0BD0 -#define GL_STENCIL_TEST 0x0B90 -#define GL_DEPTH_TEST 0x0B71 -#define GL_POINT_SMOOTH 0x0B10 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_NORMALIZE 0x0BA1 -#define GL_RESCALE_NORMAL 0x803A -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_VERTEX_ARRAY 0x8074 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_COLOR_ARRAY 0x8076 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 - -/* gets */ -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 - -/* clip planes */ -#define GL_CLIP_PLANE0 0x3000 -#define GL_CLIP_PLANE1 0x3001 -#define GL_CLIP_PLANE2 0x3002 -#define GL_CLIP_PLANE3 0x3003 -#define GL_CLIP_PLANE4 0x3004 -#define GL_CLIP_PLANE5 0x3005 - -/* errors */ -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_OUT_OF_MEMORY 0x0505 - -/* fog */ -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_START 0x0B63 -#define GL_FOG_END 0x0B64 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_COLOR 0x0B66 - -/* culling */ -#define GL_CW 0x0900 -#define GL_CCW 0x0901 - -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_FRONT_AND_BACK 0x0408 - -/* hints */ -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 - -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_GENERATE_MIPMAP_HINT 0x8192 - -/* lights */ -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 - -#define GL_AMBIENT 0x1200 -#define GL_DIFFUSE 0x1201 -#define GL_SPECULAR 0x1202 -#define GL_POSITION 0x1203 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_QUADRATIC_ATTENUATION 0x1209 - -#define GL_LIGHT0 0x4000 -#define GL_LIGHT1 0x4001 -#define GL_LIGHT2 0x4002 -#define GL_LIGHT3 0x4003 -#define GL_LIGHT4 0x4004 -#define GL_LIGHT5 0x4005 -#define GL_LIGHT6 0x4006 -#define GL_LIGHT7 0x4007 - -/* material */ -#define GL_EMISSION 0x1600 -#define GL_SHININESS 0x1601 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 - -/* matrix */ -#define GL_MODELVIEW 0x1700 -#define GL_PROJECTION 0x1701 -#define GL_TEXTURE 0x1702 - -/* types */ -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_FLOAT 0x1406 -#define GL_FIXED 0x140C - -/* pixel formats */ -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A - -/* pixel store */ -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_ALIGNMENT 0x0D05 - -/* pixel types */ -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 - -/* logic op */ -#define GL_CLEAR 0x1500 // 0 -#define GL_AND 0x1501 // s & d -#define GL_AND_REVERSE 0x1502 // s & ~d -#define GL_COPY 0x1503 // s -#define GL_AND_INVERTED 0x1504 // ~s & d -#define GL_NOOP 0x1505 // d -#define GL_XOR 0x1506 // s ^ d -#define GL_OR 0x1507 // s | d -#define GL_NOR 0x1508 // ~(s | d) -#define GL_EQUIV 0x1509 // ~(s ^ d) -#define GL_INVERT 0x150A // ~d -#define GL_OR_REVERSE 0x150B // s | ~d -#define GL_COPY_INVERTED 0x150C // ~s -#define GL_OR_INVERTED 0x150D // ~s | d -#define GL_NAND 0x150E // ~(s & d) -#define GL_SET 0x150F // 1 - -/* shade model */ -#define GL_FLAT 0x1D00 -#define GL_SMOOTH 0x1D01 - -/* strings */ -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 - -/* stencil */ -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 - -/* alpha & stencil */ -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 - -/* blending equation & function */ -#define GL_ZERO 0 // SD -#define GL_ONE 1 // SD -#define GL_SRC_COLOR 0x0300 // D -#define GL_ONE_MINUS_SRC_COLOR 0x0301 // D -#define GL_SRC_ALPHA 0x0302 // SD -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 // SD -#define GL_DST_ALPHA 0x0304 // SD -#define GL_ONE_MINUS_DST_ALPHA 0x0305 // SD -#define GL_DST_COLOR 0x0306 // S -#define GL_ONE_MINUS_DST_COLOR 0x0307 // S -#define GL_SRC_ALPHA_SATURATE 0x0308 // S - -/* Texture parameter name */ -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_TEXTURE_CROP_RECT_OES 0x8B9D - -/* Texture Filter */ -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 - -/* Texture Wrap Mode */ -#define GL_CLAMP 0x2900 -#define GL_REPEAT 0x2901 -#define GL_CLAMP_TO_EDGE 0x812F - -/* Texture Env Mode */ -#define GL_REPLACE 0x1E01 -#define GL_MODULATE 0x2100 -#define GL_DECAL 0x2101 -#define GL_ADD 0x0104 - -/* Texture Env Parameter */ -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_ENV_COLOR 0x2201 - -/* Texture Env Target */ -#define GL_TEXTURE_ENV 0x2300 - -/* TMUs */ -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF - -/*****************************************************************************/ -/* OpenGL ES 1.1 additions */ - -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 - -#define GL_STATIC_DRAW 0x88E4 -#define GL_DYNAMIC_DRAW 0x88E8 - -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 - -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A - -/*****************************************************************************/ -/* Required extensions */ - -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 - -#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B - -#define GL_POINT_SPRITE_OES 0x8861 -#define GL_COORD_REPLACE_OES 0x8862 - -#define GL_POINT_SIZE_ARRAY_OES 0x8B9C -#define GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A -#define GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B -#define GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C -#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F - -/*****************************************************************************/ -/* Extensions */ - -#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898D -#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898E -#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898F - -#define GL_DIRECT_TEXTURE_2D_QUALCOMM 0x7E80 - - - - -/*****************************************************************************/ -/* OpenGL ES 1.0 functions */ - -void glActiveTexture(GLenum texture); -void glAlphaFunc(GLenum func, GLclampf ref); -void glAlphaFuncx(GLenum func, GLclampx ref); -void glBindTexture(GLenum target, GLuint texture); -void glBlendFunc(GLenum sfactor, GLenum dfactor); -void glClear(GLbitfield mask); -void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -void glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); -void glClearDepthf(GLclampf depth); -void glClearDepthx(GLclampx depth); -void glClearStencil(GLint s); -void glClientActiveTexture(GLenum texture); -void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -void glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -void glColorMask(GLboolean r, GLboolean g, GLboolean b, GLboolean a); -void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr); -void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, - GLsizei width, GLsizei height, GLint border, - GLsizei imageSize, const GLvoid *data); -void glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLsizei width, GLsizei height, - GLenum format, GLsizei imageSize, - const GLvoid *data); -void glCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, - GLint x, GLint y, GLsizei width, GLsizei height, - GLint border); -void glCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint x, GLint y, GLsizei width, - GLsizei height); -void glCullFace(GLenum mode); -void glDeleteTextures(GLsizei n, const GLuint *textures); -void glDepthFunc(GLenum func); -void glDepthMask(GLboolean flag); -void glDepthRangef(GLclampf zNear, GLclampf zFar); -void glDepthRangex(GLclampx zNear, GLclampx zFar); -void glDisable(GLenum cap); -void glDisableClientState(GLenum array); -void glDrawArrays(GLenum mode, GLint first, GLsizei count); -void glDrawElements(GLenum mode, GLsizei count, - GLenum type, const GLvoid *indices); -void glEnable(GLenum cap); -void glEnableClientState(GLenum array); -void glFinish(void); -void glFlush(void); -void glFogf(GLenum pname, GLfloat param); -void glFogfv(GLenum pname, const GLfloat *params); -void glFogx(GLenum pname, GLfixed param); -void glFogxv(GLenum pname, const GLfixed *params); -void glFrontFace(GLenum mode); -void glFrustumf(GLfloat left, GLfloat right, - GLfloat bottom, GLfloat top, - GLfloat zNear, GLfloat zFar); -void glFrustumx(GLfixed left, GLfixed right, - GLfixed bottom, GLfixed top, - GLfixed zNear, GLfixed zFar); -void glGenTextures(GLsizei n, GLuint *textures); -GLenum glGetError(void); -void glGetIntegerv(GLenum pname, GLint *params); -const GLubyte * glGetString(GLenum name); -void glHint(GLenum target, GLenum mode); -void glLightModelf(GLenum pname, GLfloat param); -void glLightModelfv(GLenum pname, const GLfloat *params); -void glLightModelx(GLenum pname, GLfixed param); -void glLightModelxv(GLenum pname, const GLfixed *params); -void glLightf(GLenum light, GLenum pname, GLfloat param); -void glLightfv(GLenum light, GLenum pname, const GLfloat *params); -void glLightx(GLenum light, GLenum pname, GLfixed param); -void glLightxv(GLenum light, GLenum pname, const GLfixed *params); -void glLineWidth(GLfloat width); -void glLineWidthx(GLfixed width); -void glLoadIdentity(void); -void glLoadMatrixf(const GLfloat *m); -void glLoadMatrixx(const GLfixed *m); -void glLogicOp(GLenum opcode); -void glMaterialf(GLenum face, GLenum pname, GLfloat param); -void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); -void glMaterialx(GLenum face, GLenum pname, GLfixed param); -void glMaterialxv(GLenum face, GLenum pname, const GLfixed *params); -void glMatrixMode(GLenum mode); -void glMultMatrixf(const GLfloat *m); -void glMultMatrixx(const GLfixed *m); -void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -void glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); -void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); -void glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz); -void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); -void glOrthof( GLfloat left, GLfloat right, - GLfloat bottom, GLfloat top, - GLfloat zNear, GLfloat zFar); -void glOrthox( GLfixed left, GLfixed right, - GLfixed bottom, GLfixed top, - GLfixed zNear, GLfixed zFar); -void glPixelStorei(GLenum pname, GLint param); -void glPointSize(GLfloat size); -void glPointSizex(GLfixed size); -void glPolygonOffset(GLfloat factor, GLfloat units); -void glPolygonOffsetx(GLfixed factor, GLfixed units); -void glPopMatrix(void); -void glPushMatrix(void); -void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, GLvoid *pixels); -void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -void glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); -void glSampleCoverage(GLclampf value, GLboolean invert); -void glSampleCoveragex(GLclampx value, GLboolean invert); -void glScalef(GLfloat x, GLfloat y, GLfloat z); -void glScalex(GLfixed x, GLfixed y, GLfixed z); -void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); -void glShadeModel(GLenum mode); -void glStencilFunc(GLenum func, GLint ref, GLuint mask); -void glStencilMask(GLuint mask); -void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); -void glTexCoordPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *pointer); -void glTexEnvf(GLenum target, GLenum pname, GLfloat param); -void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); -void glTexEnvx(GLenum target, GLenum pname, GLfixed param); -void glTexEnvxv(GLenum target, GLenum pname, const GLfixed *params); -void glTexImage2D( GLenum target, GLint level, GLenum internalformat, - GLsizei width, GLsizei height, GLint border, GLenum format, - GLenum type, const GLvoid *pixels); -void glTexParameterf(GLenum target, GLenum pname, GLfloat param); -void glTexParameterx(GLenum target, GLenum pname, GLfixed param); -void glTexSubImage2D( GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLsizei width, GLsizei height, - GLenum format, GLenum type, const GLvoid *pixels); -void glTranslatef(GLfloat x, GLfloat y, GLfloat z); -void glTranslatex(GLfixed x, GLfixed y, GLfixed z); -void glVertexPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *pointer); -void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); - -/*****************************************************************************/ -/* OpenGL ES 1.1 functions */ - -void glClipPlanef(GLenum plane, const GLfloat* equation); -void glClipPlanex(GLenum plane, const GLfixed* equation); - -void glBindBuffer(GLenum target, GLuint buffer); -void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); -void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); -void glDeleteBuffers(GLsizei n, const GLuint* buffers); -void glGenBuffers(GLsizei n, GLuint* buffers); - -void glGetBooleanv(GLenum pname, GLboolean *params); -void glGetFixedv(GLenum pname, GLfixed *params); -void glGetFloatv(GLenum pname, GLfloat *params); -void glGetPointerv(GLenum pname, void **params); -void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); -void glGetClipPlanef(GLenum pname, GLfloat eqn[4]); -void glGetClipPlanex(GLenum pname, GLfixed eqn[4]); -void glGetLightxv(GLenum light, GLenum pname, GLfixed *params); -void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); -void glGetMaterialxv(GLenum face, GLenum pname, GLfixed *params); -void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); -void glGetTexEnvfv(GLenum env, GLenum pname, GLfloat *params); -void glGetTexEnviv(GLenum env, GLenum pname, GLint *params); -void glGetTexEnvxv(GLenum env, GLenum pname, GLfixed *params); -void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); -void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); -void glGetTexParameterxv(GLenum target, GLenum pname, GLfixed *params); -GLboolean glIsBuffer(GLuint buffer); -GLboolean glIsEnabled(GLenum cap); -GLboolean glIsTexture(GLuint texture); -void glPointParameterf(GLenum pname, GLfloat param); -void glPointParameterfv(GLenum pname, const GLfloat *params); -void glPointParameterx(GLenum pname, GLfixed param); -void glPointParameterxv(GLenum pname, const GLfixed *params); -void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -void glTexEnvi(GLenum target, GLenum pname, GLint param); -void glTexEnviv(GLenum target, GLenum pname, const GLint *params); -void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); -void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); -void glTexParameteri(GLenum target, GLenum pname, GLint param); -void glTexParameterxv(GLenum target, GLenum pname, const GLfixed *params); - -/*****************************************************************************/ -/* Required extensions functions */ - -void glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer); - - -/*****************************************************************************/ -/* Extensions functions */ - -void glDrawTexsOES(GLshort x , GLshort y, GLshort z, GLshort w, GLshort h); -void glDrawTexiOES(GLint x, GLint y, GLint z, GLint w, GLint h); -void glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h); -void glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h); -void glDrawTexsvOES(const GLshort* coords); -void glDrawTexivOES(const GLint* coords); -void glDrawTexfvOES(const GLfloat* coords); -void glDrawTexxvOES(const GLfixed* coords); -GLbitfield glQueryMatrixxOES(GLfixed* mantissa, GLint* exponent); - -/* called by dalvik */ -void glColorPointerBounds(GLint size, GLenum type, GLsizei stride, - const GLvoid *ptr, GLsizei count); -void glNormalPointerBounds(GLenum type, GLsizei stride, - const GLvoid *pointer, GLsizei count); -void glTexCoordPointerBounds(GLint size, GLenum type, - GLsizei stride, const GLvoid *pointer, GLsizei count); -void glVertexPointerBounds(GLint size, GLenum type, - GLsizei stride, const GLvoid *pointer, GLsizei count); - -#ifdef __cplusplus -} -#endif - -#endif /* __gl_h_ */ diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h index 77676bf..6bd54ba 100644 --- a/include/media/AudioSystem.h +++ b/include/media/AudioSystem.h @@ -99,23 +99,31 @@ public: static status_t getOutputSamplingRate(int* samplingRate); static status_t getOutputFrameCount(int* frameCount); static status_t getOutputLatency(uint32_t* latency); + + static status_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount, + size_t* buffSize); // ---------------------------------------------------------------------------- private: - class DeathNotifier: public IBinder::DeathRecipient + class AudioFlingerClient: public IBinder::DeathRecipient, public BnAudioFlingerClient { public: - DeathNotifier() { + AudioFlingerClient() { } + // DeathRecipient virtual void binderDied(const wp<IBinder>& who); + + // IAudioFlingerClient + virtual void audioOutputChanged(uint32_t frameCount, uint32_t samplingRate, uint32_t latency); + }; - static sp<DeathNotifier> gDeathNotifier; + static sp<AudioFlingerClient> gAudioFlingerClient; - friend class DeathNotifier; + friend class AudioFlingerClient; static Mutex gLock; static sp<IAudioFlinger> gAudioFlinger; @@ -123,6 +131,13 @@ private: static int gOutSamplingRate; static int gOutFrameCount; static uint32_t gOutLatency; + + static size_t gInBuffSize; + // previous parameters for recording buffer size queries + static uint32_t gPrevInSamplingRate; + static int gPrevInFormat; + static int gPrevInChannelCount; + }; }; // namespace android diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h index fd62daa..5b2bab9 100644 --- a/include/media/AudioTrack.h +++ b/include/media/AudioTrack.h @@ -51,6 +51,7 @@ public: MUSIC = 3, ALARM = 4, NOTIFICATION = 5, + BLUETOOTH_SCO = 6, NUM_STREAM_TYPES }; diff --git a/include/media/IAudioFlinger.h b/include/media/IAudioFlinger.h index 69703b2..df601d7 100644 --- a/include/media/IAudioFlinger.h +++ b/include/media/IAudioFlinger.h @@ -26,6 +26,7 @@ #include <utils/IInterface.h> #include <media/IAudioTrack.h> #include <media/IAudioRecord.h> +#include <media/IAudioFlingerClient.h> namespace android { @@ -107,6 +108,15 @@ public: // Temporary interface, do not use // TODO: Replace with a more generic key:value get/set mechanism virtual status_t setParameter(const char* key, const char* value) = 0; + + // register a current process for audio output change notifications + virtual void registerClient(const sp<IAudioFlingerClient>& client) = 0; + + // retrieve the audio recording buffer size + virtual size_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount) = 0; + + // force AudioFlinger thread out of standby + virtual void wakeUp() = 0; }; diff --git a/include/media/IAudioFlingerClient.h b/include/media/IAudioFlingerClient.h new file mode 100644 index 0000000..10c3e0f --- /dev/null +++ b/include/media/IAudioFlingerClient.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_IAUDIOFLINGERCLIENT_H +#define ANDROID_IAUDIOFLINGERCLIENT_H + + +#include <utils/RefBase.h> +#include <utils/IInterface.h> + + +namespace android { + +// ---------------------------------------------------------------------------- + +class IAudioFlingerClient : public IInterface +{ +public: + DECLARE_META_INTERFACE(AudioFlingerClient); + + // Notifies a change of audio output from/to hardware to/from A2DP. + virtual void audioOutputChanged(uint32_t frameCount, uint32_t samplingRate, uint32_t latency) = 0; + +}; + + +// ---------------------------------------------------------------------------- + +class BnAudioFlingerClient : public BnInterface<IAudioFlingerClient> +{ +public: + virtual status_t onTransact( uint32_t code, + const Parcel& data, + Parcel* reply, + uint32_t flags = 0); +}; + +// ---------------------------------------------------------------------------- + +}; // namespace android + +#endif // ANDROID_IAUDIOFLINGERCLIENT_H diff --git a/include/media/JetPlayer.h b/include/media/JetPlayer.h index 4268170..16764a9 100644 --- a/include/media/JetPlayer.h +++ b/include/media/JetPlayer.h @@ -33,9 +33,12 @@ class JetPlayer { public: - static const int JET_USERID_UPDATE = 1; - static const int JET_NUMQUEUEDSEGMENT_UPDATE = 2; - static const int JET_PAUSE_UPDATE = 3; + // to keep in sync with the JetPlayer class constants + // defined in frameworks/base/media/java/android/media/JetPlayer.java + static const int JET_EVENT = 1; + static const int JET_USERID_UPDATE = 2; + static const int JET_NUMQUEUEDSEGMENT_UPDATE = 3; + static const int JET_PAUSE_UPDATE = 4; JetPlayer(jobject javaJetPlayer, int maxTracks = 32, @@ -44,7 +47,8 @@ public: int init(); int release(); - int openFile(const char* url); + int loadFromFile(const char* url); + int loadFromFD(const int fd, const long long offset, const long long length); int closeFile(); int play(); int pause(); @@ -53,6 +57,7 @@ public: int setMuteFlags(EAS_U32 muteFlags, bool sync); int setMuteFlag(int trackNum, bool muteFlag, bool sync); int triggerClip(int clipId); + int clearQueue(); void setEventCallback(jetevent_callback callback); @@ -62,7 +67,8 @@ public: private: static int renderThread(void*); int render(); - void fireEventOnStatusChange(); + void fireUpdateOnStatusChange(); + void fireEventsFromJetQueue(); JetPlayer() {} // no default constructor void dump(); diff --git a/include/media/MediaPlayerInterface.h b/include/media/MediaPlayerInterface.h index 30e4578..7f0e7b3 100644 --- a/include/media/MediaPlayerInterface.h +++ b/include/media/MediaPlayerInterface.h @@ -17,9 +17,6 @@ #ifndef ANDROID_MEDIAPLAYERINTERFACE_H #define ANDROID_MEDIAPLAYERINTERFACE_H -#include <pthread.h> -#include <signal.h> - #ifdef __cplusplus #include <ui/ISurface.h> @@ -74,7 +71,6 @@ public: virtual ~MediaPlayerBase() {} virtual status_t initCheck() = 0; virtual bool hardwareOutput() = 0; - virtual status_t setSigBusHandlerStructTLSKey(pthread_key_t key) { return 0; } virtual status_t setDataSource(const char *url) = 0; virtual status_t setDataSource(int fd, int64_t offset, int64_t length) = 0; virtual status_t setVideoSurface(const sp<ISurface>& surface) = 0; @@ -125,34 +121,6 @@ public: #endif // __cplusplus -// A thread can set the thread local variable identified by the pthread_key_t -// that was passed to the player using the setSigBusHandlerStructTLSKey() -// method to the address of the following structure. -// If 'handlesigbus' is non-NULL, the function it points to will be called, -// and if it returns 0, the signal will be assumed to have been handled, -// and no other action will be taken. If it returns non-zero, the old SIGBUS -// handler will be called. -// If 'handlesigbus is NULL, then sigbusvar must be non NULL. The system's -// SIGBUS handler will map an accessible page filled with zeroes at the -// location that caused the original fault, set the variable pointed to by -// sigbusvar to a non-zero value, and exit (which causes the operation to -// be retried, which should now succeed). -// If base and len are non zero, which is strongly recommended, they will -// be used as additional constraints on the signal handler. That is, when -// specified, the fault address must be in the range specified by base and -// len in order for handlesigbus() to be called or sigbusvar to be set. -// If the fault address is outside of the range, the old SIGBUS handler -// will be called. -struct mediasigbushandler { - int (*handlesigbus)(siginfo_t *, struct mediasigbushandler *); - int *sigbusvar; - char *base; - int len; - // these next two are free for application use - struct mediasigbushandler *next; - void *data; -}; - #endif // ANDROID_MEDIAPLAYERINTERFACE_H diff --git a/include/media/PVPlayer.h b/include/media/PVPlayer.h index 5f302ed..6d98852 100644 --- a/include/media/PVPlayer.h +++ b/include/media/PVPlayer.h @@ -20,6 +20,12 @@ #include <utils/Errors.h> #include <media/MediaPlayerInterface.h> +#define MAX_OPENCORE_INSTANCES 25 + +#ifdef MAX_OPENCORE_INSTANCES +#include <cutils/atomic.h> +#endif + class PlayerDriver; namespace android { @@ -31,7 +37,6 @@ public: virtual ~PVPlayer(); virtual status_t initCheck(); - virtual status_t setSigBusHandlerStructTLSKey(pthread_key_t key); virtual status_t setDataSource(const char *url); virtual status_t setDataSource(int fd, int64_t offset, int64_t length); virtual status_t setVideoSurface(const sp<ISurface>& surface); @@ -62,10 +67,13 @@ private: char * mDataSourcePath; bool mIsDataSourceSet; sp<ISurface> mSurface; - void * mMemBase; - off_t mMemSize; + int mSharedFd; status_t mInit; int mDuration; + +#ifdef MAX_OPENCORE_INSTANCES + static volatile int32_t sNumInstances; +#endif }; }; // namespace android diff --git a/include/media/ToneGenerator.h b/include/media/ToneGenerator.h index 0cfdeec7..ec64e4d 100644 --- a/include/media/ToneGenerator.h +++ b/include/media/ToneGenerator.h @@ -85,8 +85,6 @@ private: TONE_RESTARTING // }; - static const unsigned int NUM_PCM_BUFFERS = 2; // Number of AudioTrack pcm buffers - static const unsigned int TONEGEN_MAX_WAVES = 3; static const unsigned int TONEGEN_MAX_SEGMENTS = 4; // Maximun number of elenemts in static const unsigned int TONEGEN_INF = 0xFFFFFFFF; // Represents infinite time duration @@ -127,7 +125,6 @@ private: const ToneDescriptor *mpNewToneDesc; // pointer to next active tone descriptor int mSamplingRate; // AudioFlinger Sampling rate - int mBufferSize; // PCM buffer size in frames AudioTrack *mpAudioTrack; // Pointer to audio track used for playback Mutex mLock; // Mutex to control concurent access to ToneGenerator object from audio callback and application API Mutex mCbkCondLock; // Mutex associated to mWaitCbkCond diff --git a/include/private/opengles/gl_context.h b/include/private/opengles/gl_context.h index 3056139..0c7ad46 100644 --- a/include/private/opengles/gl_context.h +++ b/include/private/opengles/gl_context.h @@ -28,6 +28,7 @@ #include <private/pixelflinger/ggl_context.h> #include <GLES/gl.h> +#include <GLES/glext.h> namespace android { diff --git a/include/ui/Camera.h b/include/ui/Camera.h index 44acce5..e593fea 100644 --- a/include/ui/Camera.h +++ b/include/ui/Camera.h @@ -23,8 +23,8 @@ namespace android { /* - * A set of bit masks for specifying how the received frames from preview are - * handled before the frame callback call. + * A set of bit masks for specifying how the received preview frames are + * handled before the previewCallback() call. * * The least significant 3 bits of an "int" value are used for this purpose: * @@ -34,10 +34,18 @@ namespace android { * | |-----------> determine whether the callback is one-shot or not * |-------------> determine whether the frame is copied out or not * + * WARNING: + * When a frame is sent directly without copying, it is the frame receiver's + * responsiblity to make sure that the frame data won't get corrupted by + * subsequent preview frames filled by the camera. This flag is recommended + * only when copying out data brings significant performance price and the + * handling/processing of the received frame data is always faster than + * the preview frame rate so that data corruption won't occur. + * * For instance, * 1. 0x00 disables the callback. In this case, copy out and one shot bits * are ignored. - * 2. 0x01 enables a callback without copying out the recievied frames. A + * 2. 0x01 enables a callback without copying out the received frames. A * typical use case is the Camcorder application to avoid making costly * frame copies. * 3. 0x05 is enabling a callback with frame copied out repeatedly. A typical @@ -96,6 +104,18 @@ public: // get preview state bool previewEnabled(); + // start recording mode, must call setPreviewDisplay first + status_t startRecording(); + + // stop recording mode + void stopRecording(); + + // get recording state + bool recordingEnabled(); + + // release a recording frame + void releaseRecordingFrame(const sp<IMemory>& mem); + // autoFocus - status returned from callback status_t autoFocus(); @@ -111,20 +131,19 @@ public: void setShutterCallback(shutter_callback cb, void *cookie); void setRawCallback(frame_callback cb, void *cookie); void setJpegCallback(frame_callback cb, void *cookie); - - void setFrameCallback(frame_callback cb, - void *cookie, - int frame_callback_flag = FRAME_CALLBACK_FLAG_NOOP); - + void setRecordingCallback(frame_callback cb, void *cookie); + void setPreviewCallback(frame_callback cb, void *cookie, int preview_callback_flag = FRAME_CALLBACK_FLAG_NOOP); void setErrorCallback(error_callback cb, void *cookie); void setAutoFocusCallback(autofocus_callback cb, void *cookie); + // ICameraClient interface virtual void shutterCallback(); virtual void rawCallback(const sp<IMemory>& picture); virtual void jpegCallback(const sp<IMemory>& picture); - virtual void frameCallback(const sp<IMemory>& frame); + virtual void previewCallback(const sp<IMemory>& frame); virtual void errorCallback(status_t error); virtual void autoFocusCallback(bool focused); + virtual void recordingCallback(const sp<IMemory>& frame); sp<ICamera> remote(); @@ -155,8 +174,10 @@ private: void *mRawCallbackCookie; frame_callback mJpegCallback; void *mJpegCallbackCookie; - frame_callback mFrameCallback; - void *mFrameCallbackCookie; + frame_callback mPreviewCallback; + void *mPreviewCallbackCookie; + frame_callback mRecordingCallback; + void *mRecordingCallbackCookie; error_callback mErrorCallback; void *mErrorCallbackCookie; autofocus_callback mAutoFocusCallback; diff --git a/include/ui/CameraHardwareInterface.h b/include/ui/CameraHardwareInterface.h index 2bd53dd..b068c52 100644 --- a/include/ui/CameraHardwareInterface.h +++ b/include/ui/CameraHardwareInterface.h @@ -20,12 +20,16 @@ #include <utils/IMemory.h> #include <utils/RefBase.h> #include <ui/CameraParameters.h> +#include <ui/Overlay.h> namespace android { /** Callback for startPreview() */ typedef void (*preview_callback)(const sp<IMemory>& mem, void* user); +/** Callback for startRecord() */ +typedef void (*recording_callback)(const sp<IMemory>& mem, void* user); + /** Callback for takePicture() */ typedef void (*shutter_callback)(void* user); @@ -89,6 +93,11 @@ public: * call back parameter may be null. */ virtual status_t startPreview(preview_callback cb, void* user) = 0; + /** + * Only used if overlays are used for camera preview. + */ + virtual bool useOverlay() {return false;} + virtual status_t setOverlay(const sp<Overlay> &overlay) {return BAD_VALUE;} /** * Stop a previously started preview. @@ -101,6 +110,29 @@ public: virtual bool previewEnabled() = 0; /** + * Start record mode. When a record image is available recording_callback() + * is called with the user parameter. Every record frame must be released + * by calling releaseRecordingFrame(). + */ + virtual status_t startRecording(recording_callback cb, void* user) = 0; + + /** + * Stop a previously started recording. + */ + virtual void stopRecording() = 0; + + /** + * Returns true if recording is enabled. + */ + virtual bool recordingEnabled() = 0; + + /** + * Release a record frame previously returned by the recording_callback() + * passed to startRecord(). + */ + virtual void releaseRecordingFrame(const sp<IMemory>& mem) = 0; + + /** * Start auto focus, the callback routine is called * once when focusing is complete. autoFocus() will * be called again if another auto focus is needed. diff --git a/include/ui/CameraParameters.h b/include/ui/CameraParameters.h index e35a054..9ca1806 100644 --- a/include/ui/CameraParameters.h +++ b/include/ui/CameraParameters.h @@ -29,6 +29,12 @@ public: CameraParameters(const String8 ¶ms) { unflatten(params); } ~CameraParameters(); + enum { + CAMERA_ORIENTATION_UNKNOWN = 0, + CAMERA_ORIENTATION_PORTRAIT = 1, + CAMERA_ORIENTATION_LANDSCAPE = 2, + }; + String8 flatten() const; void unflatten(const String8 ¶ms); @@ -57,6 +63,9 @@ public: void setPictureFormat(const char *format); const char *getPictureFormat() const; + int getOrientation() const; + void setOrientation(int orientation); + void dump() const; status_t dump(int fd, const Vector<String16>& args) const; diff --git a/include/ui/EGLDisplaySurface.h b/include/ui/EGLDisplaySurface.h index 0190e09..a8b5853 100644 --- a/include/ui/EGLDisplaySurface.h +++ b/include/ui/EGLDisplaySurface.h @@ -27,7 +27,10 @@ #include <pixelflinger/pixelflinger.h> #include <linux/fb.h> +#include <EGL/egl.h> + struct copybit_device_t; +struct copybit_image_t; // --------------------------------------------------------------------------- namespace android { @@ -44,17 +47,17 @@ public: int32_t getPageFlipCount() const; void copyFrontToBack(const Region& copyback); + void copyFrontToImage(const copybit_image_t& dst); + void copyBackToImage(const copybit_image_t& dst); + void setSwapRectangle(int l, int t, int w, int h); + private: static void hook_incRef(NativeWindowType window); static void hook_decRef(NativeWindowType window); static uint32_t hook_swapBuffers(NativeWindowType window); - static void hook_setSwapRectangle(NativeWindowType window, int l, int t, int w, int h); - static uint32_t hook_nextBuffer(NativeWindowType window); uint32_t swapBuffers(); - uint32_t nextBuffer(); - void setSwapRectangle(int l, int t, int w, int h); status_t mapFrameBuffer(); diff --git a/include/ui/EGLNativeSurface.h b/include/ui/EGLNativeSurface.h index c303cd8..7964e7c 100644 --- a/include/ui/EGLNativeSurface.h +++ b/include/ui/EGLNativeSurface.h @@ -23,7 +23,7 @@ #include <cutils/atomic.h> #include <utils/RefBase.h> -#include <GLES/eglnatives.h> +#include <EGL/eglnatives.h> // --------------------------------------------------------------------------- namespace android { diff --git a/include/ui/EGLNativeWindowSurface.h b/include/ui/EGLNativeWindowSurface.h index 058479a..3494234 100644 --- a/include/ui/EGLNativeWindowSurface.h +++ b/include/ui/EGLNativeWindowSurface.h @@ -20,6 +20,7 @@ #include <stdint.h> #include <sys/types.h> #include <ui/EGLNativeSurface.h> +#include <EGL/egl.h> // --------------------------------------------------------------------------- namespace android { @@ -33,18 +34,16 @@ public: EGLNativeWindowSurface(const sp<Surface>& surface); ~EGLNativeWindowSurface(); + void setSwapRectangle(int l, int t, int w, int h); + private: static void hook_incRef(NativeWindowType window); static void hook_decRef(NativeWindowType window); static uint32_t hook_swapBuffers(NativeWindowType window); - static uint32_t hook_nextBuffer(NativeWindowType window); - static void hook_setSwapRectangle(NativeWindowType window, int l, int t, int w, int h); static void hook_connect(NativeWindowType window); static void hook_disconnect(NativeWindowType window); uint32_t swapBuffers(); - uint32_t nextBuffer(); - void setSwapRectangle(int l, int t, int w, int h); void connect(); void disconnect(); diff --git a/include/ui/EventHub.h b/include/ui/EventHub.h index 017c145..3848d8c 100644 --- a/include/ui/EventHub.h +++ b/include/ui/EventHub.h @@ -76,6 +76,9 @@ public: DEVICE_REMOVED = 0x20000000 }; + // examine key input devices for specific framework keycode support + bool hasKeys(size_t numCodes, int32_t* keyCodes, uint8_t* outFlags); + virtual bool getEvent(int32_t* outDeviceId, int32_t* outType, int32_t* outScancode, int32_t* outKeycode, uint32_t *outFlags, int32_t* outValue, nsecs_t* outWhen); @@ -100,6 +103,7 @@ private: const String8 path; String8 name; uint32_t classes; + uint8_t* keyBitmask; KeyLayoutMap* layoutMap; String8 keylayoutFilename; device_t* next; @@ -134,8 +138,6 @@ private: #ifdef EV_SW int32_t mSwitches[SW_MAX+1]; #endif - - KeyLayoutMap * mLayoutMap; }; }; // namespace android diff --git a/include/ui/ICamera.h b/include/ui/ICamera.h index ea2fcee..241fb63 100644 --- a/include/ui/ICamera.h +++ b/include/ui/ICamera.h @@ -48,9 +48,9 @@ public: // pass the buffered ISurface to the camera service virtual status_t setPreviewDisplay(const sp<ISurface>& surface) = 0; - // set the frame callback flag to affect how the received frames from + // set the preview callback flag to affect how the received frames from // preview are handled. - virtual void setFrameCallbackFlag(int frame_callback_flag) = 0; + virtual void setPreviewCallbackFlag(int flag) = 0; // start preview mode, must call setPreviewDisplay first virtual status_t startPreview() = 0; @@ -61,6 +61,18 @@ public: // get preview state virtual bool previewEnabled() = 0; + // start recording mode + virtual status_t startRecording() = 0; + + // stop recording mode + virtual void stopRecording() = 0; + + // get recording state + virtual bool recordingEnabled() = 0; + + // release a recording frame + virtual void releaseRecordingFrame(const sp<IMemory>& mem) = 0; + // auto focus virtual status_t autoFocus() = 0; diff --git a/include/ui/ICameraClient.h b/include/ui/ICameraClient.h index a286b8e..73b951c 100644 --- a/include/ui/ICameraClient.h +++ b/include/ui/ICameraClient.h @@ -32,9 +32,10 @@ public: virtual void shutterCallback() = 0; virtual void rawCallback(const sp<IMemory>& picture) = 0; virtual void jpegCallback(const sp<IMemory>& picture) = 0; - virtual void frameCallback(const sp<IMemory>& frame) = 0; + virtual void previewCallback(const sp<IMemory>& frame) = 0; virtual void errorCallback(status_t error) = 0; virtual void autoFocusCallback(bool focused) = 0; + virtual void recordingCallback(const sp<IMemory>& frame) = 0; }; diff --git a/include/ui/ISurface.h b/include/ui/ISurface.h index 9a7383c..1c8043d 100644 --- a/include/ui/ISurface.h +++ b/include/ui/ISurface.h @@ -34,11 +34,56 @@ class OverlayRef; class ISurface : public IInterface { +protected: + enum { + REGISTER_BUFFERS = IBinder::FIRST_CALL_TRANSACTION, + UNREGISTER_BUFFERS, + POST_BUFFER, // one-way transaction + CREATE_OVERLAY, + }; + public: DECLARE_META_INTERFACE(Surface); - virtual status_t registerBuffers(int w, int h, int hstride, int vstride, - PixelFormat format, const sp<IMemoryHeap>& heap) = 0; + + class BufferHeap { + public: + enum { + /* flip source image horizontally */ + FLIP_H = 0x01, + /* flip source image vertically */ + FLIP_V = 0x02, + /* rotate source image 90 degrees */ + ROT_90 = 0x04, + /* rotate source image 180 degrees */ + ROT_180 = 0x03, + /* rotate source image 270 degrees */ + ROT_270 = 0x07, + }; + BufferHeap(); + + BufferHeap(uint32_t w, uint32_t h, + int32_t hor_stride, int32_t ver_stride, + PixelFormat format, const sp<IMemoryHeap>& heap); + + BufferHeap(uint32_t w, uint32_t h, + int32_t hor_stride, int32_t ver_stride, + PixelFormat format, uint32_t transform, uint32_t flags, + const sp<IMemoryHeap>& heap); + + ~BufferHeap(); + + uint32_t w; + uint32_t h; + int32_t hor_stride; + int32_t ver_stride; + PixelFormat format; + uint32_t transform; + uint32_t flags; + sp<IMemoryHeap> heap; + }; + + virtual status_t registerBuffers(const BufferHeap& buffers) = 0; virtual void postBuffer(ssize_t offset) = 0; // one-way diff --git a/include/ui/Overlay.h b/include/ui/Overlay.h index f8454fd..66514b4 100644 --- a/include/ui/Overlay.h +++ b/include/ui/Overlay.h @@ -91,6 +91,7 @@ public: int32_t getFormat() const; int32_t getWidthStride() const; int32_t getHeightStride() const; + int32_t getBufferCount() const; status_t getStatus() const; private: diff --git a/include/ui/PixelFormat.h b/include/ui/PixelFormat.h index b65c959..14af823 100644 --- a/include/ui/PixelFormat.h +++ b/include/ui/PixelFormat.h @@ -71,6 +71,10 @@ enum { PIXEL_FORMAT_YCbCr_422_SP= GGL_PIXEL_FORMAT_YCbCr_422_SP, PIXEL_FORMAT_YCbCr_420_SP= GGL_PIXEL_FORMAT_YCbCr_420_SP, + PIXEL_FORMAT_YCbCr_422_P = GGL_PIXEL_FORMAT_YCbCr_422_P, + PIXEL_FORMAT_YCbCr_420_P = GGL_PIXEL_FORMAT_YCbCr_420_P, + PIXEL_FORMAT_YCbCr_422_I = GGL_PIXEL_FORMAT_YCbCr_422_I, + PIXEL_FORMAT_YCbCr_420_I = GGL_PIXEL_FORMAT_YCbCr_420_I, // New formats can be added if they're also defined in // pixelflinger/format.h @@ -80,7 +84,19 @@ typedef int32_t PixelFormat; struct PixelFormatInfo { + enum { // components + ALPHA = 1, + RGB = 2, + RGBA = 3, + LUMINANCE = 4, + LUMINANCE_ALPHA = 5, + Y_CB_CR_SP = 6, + Y_CB_CR_P = 7, + Y_CB_CR_I = 8, + }; + inline PixelFormatInfo() : version(sizeof(PixelFormatInfo)) { } + size_t getScanlineSize(unsigned int width) const; size_t version; PixelFormat format; size_t bytesPerPixel; @@ -93,7 +109,9 @@ struct PixelFormatInfo uint8_t l_green; uint8_t h_blue; uint8_t l_blue; - uint32_t reserved[2]; + uint8_t components; + uint8_t reserved0[3]; + uint32_t reserved1; }; // Consider caching the results of these functions are they're not diff --git a/include/utils/Asset.h b/include/utils/Asset.h index d8351f5..453a204 100644 --- a/include/utils/Asset.h +++ b/include/utils/Asset.h @@ -62,7 +62,11 @@ public: enum { /* data larger than this does not get uncompressed into a buffer */ +#ifdef HAVE_ANDROID_OS UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024 +#else + UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024 +#endif }; /* diff --git a/include/utils/ResourceTypes.h b/include/utils/ResourceTypes.h index 2d56e3e..d83a33c 100644 --- a/include/utils/ResourceTypes.h +++ b/include/utils/ResourceTypes.h @@ -223,7 +223,7 @@ struct Res_value { // Number of bytes in this structure. uint16_t size; - + // Always set to 0. uint8_t res0; @@ -1131,10 +1131,8 @@ struct ResTable_config && orientation != settings.orientation) { return false; } - if (settings.density != 0 && density != 0 - && density != settings.density) { - return false; - } + // Density not taken into account, always match, no matter what + // density is specified for the resource if (settings.touchscreen != 0 && touchscreen != 0 && touchscreen != settings.touchscreen) { return false; @@ -1464,11 +1462,11 @@ public: * @return ssize_t Either a >= 0 table index or a negative error code. */ ssize_t getResource(uint32_t resID, Res_value* outValue, bool mayBeBag=false, - uint32_t* outSpecFlags=NULL) const; + uint32_t* outSpecFlags=NULL, ResTable_config* outConfig=NULL) const; inline ssize_t getResource(const ResTable_ref& res, Res_value* outValue, uint32_t* outSpecFlags=NULL) const { - return getResource(res.ident, outValue, outSpecFlags); + return getResource(res.ident, outValue, false, outSpecFlags, NULL); } ssize_t resolveReference(Res_value* inOutValue, |