0
|
1 |
/******************************************************************************
|
|
2 |
Name : wsegl.h
|
|
3 |
Copyright : Copyright (c) Imagination Technologies Limited.
|
|
4 |
This specification is protected by copyright laws and contains
|
|
5 |
material proprietary to Imagination Technologies Limited.
|
|
6 |
You may use and distribute this specification free of charge for implementing
|
|
7 |
the functionality therein, without altering or removing any trademark, copyright,
|
|
8 |
or other notice from the specification.
|
|
9 |
Platform : ANSI
|
|
10 |
*****************************************************************************/
|
|
11 |
|
|
12 |
|
|
13 |
#if !defined(__WSEGL_H__)
|
|
14 |
#define __WSEGL_H__
|
|
15 |
|
|
16 |
#ifdef __cplusplus
|
|
17 |
extern "C" {
|
|
18 |
#endif
|
|
19 |
|
|
20 |
/*
|
|
21 |
// WSEGL Platform-specific definitions
|
|
22 |
*/
|
|
23 |
#define WSEGL_EXPORT
|
|
24 |
#define WSEGL_IMPORT
|
|
25 |
|
|
26 |
/*
|
|
27 |
// WSEGL API Version Number
|
|
28 |
*/
|
|
29 |
|
|
30 |
#define WSEGL_VERSION 1
|
|
31 |
#define WSEGL_DEFAULT_DISPLAY 0
|
|
32 |
#define WSEGL_DEFAULT_NATIVE_ENGINE 0
|
|
33 |
|
|
34 |
#define WSEGL_FALSE 0
|
|
35 |
#define WSEGL_TRUE 1
|
|
36 |
#define WSEGL_NULL 0
|
|
37 |
|
|
38 |
#define WSEGL_UNREFERENCED_PARAMETER(param) (param) = (param)
|
|
39 |
|
|
40 |
/*
|
|
41 |
// WSEGL handles
|
|
42 |
*/
|
|
43 |
typedef void *WSEGLDisplayHandle;
|
|
44 |
typedef void *WSEGLDrawableHandle;
|
|
45 |
|
|
46 |
/*
|
|
47 |
// Display capability type
|
|
48 |
*/
|
|
49 |
typedef enum WSEGLCapsType_TAG
|
|
50 |
{
|
|
51 |
WSEGL_NO_CAPS = 0,
|
|
52 |
WSEGL_CAP_MIN_SWAP_INTERVAL = 1, /* System default value = 1 */
|
|
53 |
WSEGL_CAP_MAX_SWAP_INTERVAL = 2, /* System default value = 1 */
|
|
54 |
WSEGL_CAP_WINDOWS_USE_HW_SYNC = 3, /* System default value = 0 (FALSE) */
|
|
55 |
WSEGL_CAP_PIXMAPS_USE_HW_SYNC = 4, /* System default value = 0 (FALSE) */
|
|
56 |
|
|
57 |
} WSEGLCapsType;
|
|
58 |
|
|
59 |
/*
|
|
60 |
// Display capability
|
|
61 |
*/
|
|
62 |
typedef struct WSEGLCaps_TAG
|
|
63 |
{
|
|
64 |
WSEGLCapsType eCapsType;
|
|
65 |
unsigned long ui32CapsValue;
|
|
66 |
|
|
67 |
} WSEGLCaps;
|
|
68 |
|
|
69 |
/*
|
|
70 |
// Drawable type
|
|
71 |
*/
|
|
72 |
#define WSEGL_NO_DRAWABLE 0x0
|
|
73 |
#define WSEGL_DRAWABLE_WINDOW 0x1
|
|
74 |
#define WSEGL_DRAWABLE_PIXMAP 0x2
|
|
75 |
|
|
76 |
|
|
77 |
/*
|
|
78 |
// Pixel format of display/drawable
|
|
79 |
*/
|
|
80 |
typedef enum WSEGLPixelFormat_TAG
|
|
81 |
{
|
|
82 |
WSEGL_PIXELFORMAT_565 = 0,
|
|
83 |
WSEGL_PIXELFORMAT_4444 = 1,
|
|
84 |
WSEGL_PIXELFORMAT_8888 = 2,
|
|
85 |
WSEGL_PIXELFORMAT_1555 = 3
|
|
86 |
|
|
87 |
} WSEGLPixelFormat;
|
|
88 |
|
|
89 |
/*
|
|
90 |
// Transparent of display/drawable
|
|
91 |
*/
|
|
92 |
typedef enum WSEGLTransparentType_TAG
|
|
93 |
{
|
|
94 |
WSEGL_OPAQUE = 0,
|
|
95 |
WSEGL_COLOR_KEY = 1,
|
|
96 |
|
|
97 |
} WSEGLTransparentType;
|
|
98 |
|
|
99 |
/*
|
|
100 |
// Display/drawable configuration
|
|
101 |
*/
|
|
102 |
typedef struct WSEGLConfig_TAG
|
|
103 |
{
|
|
104 |
/*
|
|
105 |
// Type of drawables this configuration applies to -
|
|
106 |
// OR'd values of drawable types.
|
|
107 |
*/
|
|
108 |
unsigned long ui32DrawableType;
|
|
109 |
|
|
110 |
/* Pixel format */
|
|
111 |
WSEGLPixelFormat ePixelFormat;
|
|
112 |
|
|
113 |
/* Native Renderable - set to WSEGL_TRUE if native renderable */
|
|
114 |
unsigned long ulNativeRenderable;
|
|
115 |
|
|
116 |
/* FrameBuffer Level Parameter */
|
|
117 |
unsigned long ulFrameBufferLevel;
|
|
118 |
|
|
119 |
/* Native Visual ID */
|
|
120 |
unsigned long ulNativeVisualID;
|
|
121 |
|
|
122 |
/* Native Visual */
|
|
123 |
void *hNativeVisual;
|
|
124 |
|
|
125 |
/* Transparent Type */
|
|
126 |
WSEGLTransparentType eTransparentType;
|
|
127 |
|
|
128 |
/* Transparent Color - only used if transparent type is COLOR_KEY */
|
|
129 |
unsigned long ulTransparentColor; /* packed as 0x00RRGGBB */
|
|
130 |
|
|
131 |
|
|
132 |
} WSEGLConfig;
|
|
133 |
|
|
134 |
/*
|
|
135 |
// WSEGL errors
|
|
136 |
*/
|
|
137 |
typedef enum WSEGLError_TAG
|
|
138 |
{
|
|
139 |
WSEGL_SUCCESS = 0,
|
|
140 |
WSEGL_CANNOT_INITIALISE = 1,
|
|
141 |
WSEGL_BAD_NATIVE_DISPLAY = 2,
|
|
142 |
WSEGL_BAD_NATIVE_WINDOW = 3,
|
|
143 |
WSEGL_BAD_NATIVE_PIXMAP = 4,
|
|
144 |
WSEGL_BAD_NATIVE_ENGINE = 5,
|
|
145 |
WSEGL_BAD_DRAWABLE = 6,
|
|
146 |
WSEGL_BAD_CONFIG = 7,
|
|
147 |
WSEGL_OUT_OF_MEMORY = 8
|
|
148 |
|
|
149 |
} WSEGLError;
|
|
150 |
|
|
151 |
/*
|
|
152 |
// Drawable orientation (in degrees anti-clockwise)
|
|
153 |
*/
|
|
154 |
typedef enum WSEGLRotationAngle_TAG
|
|
155 |
{
|
|
156 |
WSEGL_ROTATE_0 = 0,
|
|
157 |
WSEGL_ROTATE_90 = 1,
|
|
158 |
WSEGL_ROTATE_180 = 2,
|
|
159 |
WSEGL_ROTATE_270 = 3
|
|
160 |
|
|
161 |
} WSEGLRotationAngle;
|
|
162 |
|
|
163 |
/*
|
|
164 |
// Drawable information required by OpenGL-ES driver
|
|
165 |
*/
|
|
166 |
typedef struct WSEGLDrawableParams_TAG
|
|
167 |
{
|
|
168 |
/* Width in pixels of the drawable */
|
|
169 |
unsigned long ui32Width;
|
|
170 |
|
|
171 |
/* Height in pixels of the drawable */
|
|
172 |
unsigned long ui32Height;
|
|
173 |
|
|
174 |
/* Stride in pixels of the drawable */
|
|
175 |
unsigned long ui32Stride;
|
|
176 |
|
|
177 |
/* Pixel format of the drawable */
|
|
178 |
WSEGLPixelFormat ePixelFormat;
|
|
179 |
|
|
180 |
/* User space cpu virtual address of the drawable */
|
|
181 |
void *pvLinearAddress;
|
|
182 |
|
|
183 |
/* HW address of the drawable */
|
|
184 |
unsigned long ui32HWAddress;
|
|
185 |
|
|
186 |
/* Private data for the drawable */
|
|
187 |
void *hPrivateData;
|
|
188 |
|
|
189 |
} WSEGLDrawableParams;
|
|
190 |
|
|
191 |
|
|
192 |
/*
|
|
193 |
// Table of function pointers that is returned by WSEGL_GetFunctionTablePointer()
|
|
194 |
//
|
|
195 |
// The first entry in the table is the version number of the wsegl.h header file that
|
|
196 |
// the module has been written against, and should therefore be set to WSEGL_VERSION
|
|
197 |
*/
|
|
198 |
typedef struct WSEGL_FunctionTable_TAG
|
|
199 |
{
|
|
200 |
unsigned long ui32WSEGLVersion;
|
|
201 |
|
|
202 |
WSEGLError (*pfnWSEGL_IsDisplayValid)(NativeDisplayType);
|
|
203 |
|
|
204 |
WSEGLError (*pfnWSEGL_InitialiseDisplay)(NativeDisplayType, WSEGLDisplayHandle *, const WSEGLCaps **, WSEGLConfig **);
|
|
205 |
|
|
206 |
WSEGLError (*pfnWSEGL_CloseDisplay)(WSEGLDisplayHandle);
|
|
207 |
|
|
208 |
WSEGLError (*pfnWSEGL_CreateWindowDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativeWindowType, WSEGLRotationAngle *);
|
|
209 |
|
|
210 |
WSEGLError (*pfnWSEGL_CreatePixmapDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativePixmapType, WSEGLRotationAngle *);
|
|
211 |
|
|
212 |
WSEGLError (*pfnWSEGL_DeleteDrawable)(WSEGLDrawableHandle);
|
|
213 |
|
|
214 |
WSEGLError (*pfnWSEGL_SwapDrawable)(WSEGLDrawableHandle, unsigned long);
|
|
215 |
|
|
216 |
WSEGLError (*pfnWSEGL_SwapControlInterval)(WSEGLDrawableHandle, unsigned long);
|
|
217 |
|
|
218 |
WSEGLError (*pfnWSEGL_WaitNative)(WSEGLDrawableHandle, unsigned long);
|
|
219 |
|
|
220 |
WSEGLError (*pfnWSEGL_CopyFromDrawable)(WSEGLDrawableHandle, NativePixmapType);
|
|
221 |
|
|
222 |
WSEGLError (*pfnWSEGL_CopyFromPBuffer)(void *, unsigned long, unsigned long, unsigned long, WSEGLPixelFormat, NativePixmapType);
|
|
223 |
|
|
224 |
WSEGLError (*pfnWSEGL_GetDrawableParameters)(WSEGLDrawableHandle, WSEGLDrawableParams *, WSEGLDrawableParams *);
|
|
225 |
|
|
226 |
|
|
227 |
} WSEGL_FunctionTable;
|
|
228 |
|
|
229 |
|
|
230 |
WSEGL_IMPORT const WSEGL_FunctionTable *WSEGL_GetFunctionTablePointer(void);
|
|
231 |
|
|
232 |
#ifdef __cplusplus
|
|
233 |
}
|
|
234 |
#endif
|
|
235 |
|
|
236 |
#endif /* __WSEGL_H__ */
|
|
237 |
|
|
238 |
/******************************************************************************
|
|
239 |
End of file (wsegl.h)
|
|
240 |
******************************************************************************/
|