annotate android/testproject/jni/eglnatives.h @ 4710:aeac51289991

Last test version with GLSurface
author Paul Hunkin <paul@bieh.net>
date Mon, 28 Jun 2010 21:35:28 +1200
parents f3f65cb6a382
children
rev   line source
4708
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
1 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
2 * Copyright (C) 2007 The Android Open Source Project
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
3 *
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
4 * Licensed under the Apache License, Version 2.0 (the "License");
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
5 * you may not use this file except in compliance with the License.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
6 * You may obtain a copy of the License at
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
7 *
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
8 * http://www.apache.org/licenses/LICENSE-2.0
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
9 *
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
10 * Unless required by applicable law or agreed to in writing, software
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
11 * distributed under the License is distributed on an "AS IS" BASIS,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
13 * See the License for the specific language governing permissions and
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
14 * limitations under the License.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
15 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
16
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
17 #ifndef ANDROID_EGLNATIVES_H
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
18 #define ANDROID_EGLNATIVES_H
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
19
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
20 #include <sys/types.h>
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
21
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
22 #ifdef __cplusplus
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
23 extern "C" {
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
24 #endif
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
25 /*****************************************************************************/
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
26
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
27 struct egl_native_window_t;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
28 struct egl_native_pixmap_t;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
29
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
30
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
31 typedef struct egl_native_window_t* NativeWindowType;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
32 typedef struct egl_native_pixmap_t* NativePixmapType;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
33 typedef void* NativeDisplayType;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
34
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
35 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
36 * This a conveniance function to create a NativeWindowType surface
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
37 * that maps to the whole screen
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
38 * This function is actually implemented in libui.so
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
39 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
40
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
41 NativeWindowType android_createDisplaySurface();
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
42
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
43 /* flags returned from swapBuffer */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
44 #define EGL_NATIVES_FLAG_SIZE_CHANGED 0x00000001
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
45
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
46 /* surface flags */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
47 #define EGL_NATIVES_FLAG_DESTROY_BACKBUFFER 0x00000001
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
48
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
49 enum native_pixel_format_t
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
50 {
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
51 NATIVE_PIXEL_FORMAT_RGBA_8888 = 1,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
52 NATIVE_PIXEL_FORMAT_RGB_565 = 4,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
53 NATIVE_PIXEL_FORMAT_RGBA_5551 = 6,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
54 NATIVE_PIXEL_FORMAT_RGBA_4444 = 7,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
55 NATIVE_PIXEL_FORMAT_YCbCr_422_SP= 0x10,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
56 NATIVE_PIXEL_FORMAT_YCbCr_420_SP= 0x11,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
57 };
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
58
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
59 enum native_memory_type_t
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
60 {
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
61 NATIVE_MEMORY_TYPE_PMEM = 0,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
62 NATIVE_MEMORY_TYPE_GPU = 1,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
63 NATIVE_MEMORY_TYPE_FB = 2,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
64 NATIVE_MEMORY_TYPE_HEAP = 128
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
65 };
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
66
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
67
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
68 struct egl_native_window_t
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
69 {
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
70 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
71 * magic must be set to 0x600913
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
72 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
73 uint32_t magic;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
74
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
75 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
76 * must be sizeof(egl_native_window_t)
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
77 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
78 uint32_t version;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
79
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
80 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
81 * ident is reserved for the Android platform
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
82 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
83 uint32_t ident;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
84
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
85 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
86 * width, height and stride of the window in pixels
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
87 * Any of these value can be nul in which case GL commands are
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
88 * accepted and processed as usual, but not rendering occurs.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
89 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
90 int width; // w=h=0 is legal
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
91 int height;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
92 int stride;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
93
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
94 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
95 * format of the native window (see ui/PixelFormat.h)
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
96 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
97 int format;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
98
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
99 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
100 * Offset of the bits in the VRAM
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
101 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
102 intptr_t offset;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
103
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
104 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
105 * flags describing some attributes of this surface
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
106 * EGL_NATIVES_FLAG_DESTROY_BACKBUFFER: backbuffer not preserved after
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
107 * eglSwapBuffers
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
108 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
109 uint32_t flags;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
110
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
111 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
112 * horizontal and vertical resolution in DPI
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
113 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
114 float xdpi;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
115 float ydpi;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
116
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
117 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
118 * refresh rate in frames per second (Hz)
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
119 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
120 float fps;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
121
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
122
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
123 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
124 * Base memory virtual address of the surface in the CPU side
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
125 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
126 intptr_t base;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
127
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
128 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
129 * Heap the offset above is based from
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
130 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
131 int fd;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
132
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
133 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
134 * Memory type the surface resides into
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
135 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
136 uint8_t memory_type;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
137
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
138 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
139 * Reserved for future use. MUST BE ZERO.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
140 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
141 uint8_t reserved_pad[3];
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
142 int reserved[8];
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
143
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
144 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
145 * Vertical stride (only relevant with planar formats)
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
146 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
147
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
148 int vstride;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
149
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
150 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
151 * Hook called by EGL to hold a reference on this structure
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
152 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
153 void (*incRef)(NativeWindowType window);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
154
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
155 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
156 * Hook called by EGL to release a reference on this structure
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
157 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
158 void (*decRef)(NativeWindowType window);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
159
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
160 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
161 * Hook called by EGL to perform a page flip. This function
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
162 * may update the size attributes above, in which case it returns
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
163 * the EGL_NATIVES_FLAG_SIZE_CHANGED bit set.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
164 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
165 uint32_t (*swapBuffers)(NativeWindowType window);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
166
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
167 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
168 * Hook called by EGL to set the swap rectangle. this hook can be
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
169 * null (operation not supported)
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
170 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
171 void (*setSwapRectangle)(NativeWindowType window, int l, int t, int w, int h);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
172
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
173 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
174 * Reserved for future use. MUST BE ZERO.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
175 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
176 void (*reserved_proc_0)(void);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
177
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
178
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
179 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
180 * Hook called by EGL to retrieve the next buffer to render into.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
181 * This call updates this structure.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
182 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
183 uint32_t (*nextBuffer)(NativeWindowType window);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
184
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
185 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
186 * Hook called by EGL when the native surface is associated to EGL
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
187 * (eglCreateWindowSurface). Can be NULL.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
188 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
189 void (*connect)(NativeWindowType window);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
190
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
191 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
192 * Hook called by EGL when eglDestroySurface is called. Can be NULL.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
193 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
194 void (*disconnect)(NativeWindowType window);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
195
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
196 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
197 * Reserved for future use. MUST BE ZERO.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
198 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
199 void (*reserved_proc[11])(void);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
200
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
201 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
202 * Some storage reserved for the oem driver.
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
203 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
204 intptr_t oem[4];
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
205 };
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
206
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
207
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
208 struct egl_native_pixmap_t
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
209 {
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
210 int32_t version; /* must be 32 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
211 int32_t width;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
212 int32_t height;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
213 int32_t stride;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
214 uint8_t* data;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
215 uint8_t format;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
216 uint8_t rfu[3];
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
217 union {
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
218 uint32_t compressedFormat;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
219 int32_t vstride;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
220 };
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
221 int32_t reserved;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
222 };
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
223
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
224 /*****************************************************************************/
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
225
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
226 /*
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
227 * OEM's egl's library (libhgl.so) must imlement these hooks to allocate
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
228 * the GPU memory they need
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
229 */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
230
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
231
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
232 typedef struct
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
233 {
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
234 // for internal use
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
235 void* user;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
236 // virtual address of this area
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
237 void* base;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
238 // size of this area in bytes
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
239 size_t size;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
240 // physical address of this area
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
241 void* phys;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
242 // offset in this area available to the GPU
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
243 size_t offset;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
244 // fd of this area
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
245 int fd;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
246 } gpu_area_t;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
247
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
248 typedef struct
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
249 {
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
250 // area where GPU registers are mapped
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
251 gpu_area_t regs;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
252 // number of extra areas (currently limited to 2)
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
253 int32_t count;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
254 // extra GPU areas (currently limited to 2)
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
255 gpu_area_t gpu[2];
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
256 } request_gpu_t;
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
257
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
258
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
259 typedef request_gpu_t* (*OEM_EGL_acquire_gpu_t)(void* user);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
260 typedef int (*OEM_EGL_release_gpu_t)(void* user, request_gpu_t* handle);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
261 typedef void (*register_gpu_t)
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
262 (void* user, OEM_EGL_acquire_gpu_t, OEM_EGL_release_gpu_t);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
263
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
264 void oem_register_gpu(
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
265 void* user,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
266 OEM_EGL_acquire_gpu_t acquire,
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
267 OEM_EGL_release_gpu_t release);
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
268
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
269
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
270 /*****************************************************************************/
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
271
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
272 #ifdef __cplusplus
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
273 }
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
274 #endif
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
275
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
276 #endif /* ANDROID_EGLNATIVES_H */
f3f65cb6a382 Added egl headers so we can use eglMakeCurrent()
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
277