tizen 2.4 release
[framework/graphics/coregl.git] / src / coregl_export_egl.c
1 #include "coregl_export.h"
2
3 Mutex init_export_mutex = MUTEX_INITIALIZER;
4
5 #define INIT_EXPORT() \
6         if (unlikely(export_initialized == 0)) \
7         { \
8                 mutex_lock(&init_export_mutex); \
9                 if (export_initialized == 0) \
10                 { \
11                         if (coregl_initialize() != 0) \
12                         { \
13                                 export_initialized = 1; \
14                         } \
15                 } \
16                 mutex_unlock(&init_export_mutex); \
17         }
18
19 EGLint
20 coregl_api_eglGetError(void)
21 {
22         INIT_EXPORT();
23         if (!export_initialized)
24                 return EGL_NOT_INITIALIZED;
25         else
26                 return ovr_eglGetError();
27 }
28
29 EGLDisplay
30 coregl_api_eglGetDisplay(EGLNativeDisplayType display_id)
31 {
32         INIT_EXPORT();
33         if (!export_initialized)
34                 return NULL;
35         else
36                 return ovr_eglGetDisplay(display_id);
37 }
38
39 EGLBoolean
40 coregl_api_eglInitialize(EGLDisplay dpy, EGLint* major, EGLint* minor)
41 {
42         INIT_EXPORT();
43         if (!export_initialized)
44                 return EGL_FALSE;
45         else
46                 return ovr_eglInitialize(dpy, major, minor);
47 }
48
49 EGLBoolean
50 coregl_api_eglTerminate(EGLDisplay dpy)
51 {
52         INIT_EXPORT();
53         return ovr_eglTerminate(dpy);
54 }
55
56 EGLBoolean
57 coregl_api_eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
58 {
59         INIT_EXPORT();
60         return ovr_eglGetConfigs(dpy, configs, config_size, num_config);
61 }
62
63 EGLBoolean
64 coregl_api_eglChooseConfig(EGLDisplay dpy, const EGLint* attrib_list, EGLConfig* configs, EGLint config_size, EGLint* num_config)
65 {
66         INIT_EXPORT();
67         return ovr_eglChooseConfig(dpy, attrib_list, configs, config_size, num_config);
68 }
69
70 EGLBoolean
71 coregl_api_eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
72 {
73         INIT_EXPORT();
74         return ovr_eglGetConfigAttrib(dpy, config, attribute, value);
75 }
76
77
78 EGLSurface
79 coregl_api_eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint* attrib_list)
80 {
81         INIT_EXPORT();
82         return ovr_eglCreateWindowSurface(dpy, config, win, attrib_list);
83 }
84
85 EGLSurface
86 coregl_api_eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
87 {
88         INIT_EXPORT();
89         return ovr_eglCreatePbufferSurface(dpy, config, attrib_list);
90 }
91
92 EGLSurface
93 coregl_api_eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint* attrib_list)
94 {
95         INIT_EXPORT();
96         return ovr_eglCreatePixmapSurface(dpy, config, pixmap, attrib_list);
97 }
98
99 EGLBoolean
100 coregl_api_eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
101 {
102         INIT_EXPORT();
103         return ovr_eglDestroySurface(dpy, surface);
104 }
105
106 EGLBoolean
107 coregl_api_eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
108 {
109         INIT_EXPORT();
110         return ovr_eglQuerySurface(dpy, surface, attribute, value);
111 }
112
113 EGLBoolean
114 coregl_api_eglBindAPI(EGLenum api)
115 {
116         INIT_EXPORT();
117         return ovr_eglBindAPI(api);
118 }
119
120 EGLenum
121 coregl_api_eglQueryAPI(void)
122 {
123         INIT_EXPORT();
124         return ovr_eglQueryAPI();
125 }
126
127 EGLBoolean
128 coregl_api_eglWaitClient(void)
129 {
130         INIT_EXPORT();
131         return ovr_eglWaitClient();
132 }
133
134 EGLBoolean
135 coregl_api_eglReleaseThread(void)
136 {
137         INIT_EXPORT();
138         return ovr_eglReleaseThread();
139 }
140
141 EGLSurface
142 coregl_api_eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
143 {
144         INIT_EXPORT();
145         return ovr_eglCreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
146 }
147
148 EGLBoolean
149 coregl_api_eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
150 {
151         INIT_EXPORT();
152         return ovr_eglSurfaceAttrib(dpy, surface, attribute, value);
153 }
154
155 EGLBoolean
156 coregl_api_eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
157 {
158         INIT_EXPORT();
159         return ovr_eglBindTexImage(dpy, surface, buffer);
160 }
161
162 EGLBoolean
163 coregl_api_eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
164 {
165         INIT_EXPORT();
166         return ovr_eglReleaseTexImage(dpy, surface, buffer);
167 }
168
169 EGLBoolean
170 coregl_api_eglSwapInterval(EGLDisplay dpy, EGLint interval)
171 {
172         INIT_EXPORT();
173         return ovr_eglSwapInterval(dpy, interval);
174 }
175
176 EGLContext
177 coregl_api_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list)
178 {
179         INIT_EXPORT();
180         return ovr_eglCreateContext(dpy, config, share_context, attrib_list);
181 }
182
183 EGLBoolean
184 coregl_api_eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
185 {
186         INIT_EXPORT();
187         return ovr_eglDestroyContext(dpy, ctx);
188 }
189
190 EGLBoolean
191 coregl_api_eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
192 {
193         INIT_EXPORT();
194         return ovr_eglMakeCurrent(dpy, draw, read, ctx);
195 }
196
197 EGLContext
198 coregl_api_eglGetCurrentContext(void)
199 {
200         INIT_EXPORT();
201         return ovr_eglGetCurrentContext();
202 }
203
204 EGLSurface
205 coregl_api_eglGetCurrentSurface(EGLint readdraw)
206 {
207         INIT_EXPORT();
208         return ovr_eglGetCurrentSurface(readdraw);
209 }
210
211 EGLDisplay
212 coregl_api_eglGetCurrentDisplay(void)
213 {
214         INIT_EXPORT();
215         return ovr_eglGetCurrentDisplay();
216 }
217
218 EGLBoolean
219 coregl_api_eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
220 {
221         INIT_EXPORT();
222         return ovr_eglQueryContext(dpy, ctx, attribute, value);
223 }
224
225 EGLBoolean
226 coregl_api_eglWaitGL(void)
227 {
228         INIT_EXPORT();
229         return ovr_eglWaitGL();
230 }
231
232 EGLBoolean
233 coregl_api_eglWaitNative(EGLint engine)
234 {
235         INIT_EXPORT();
236         return ovr_eglWaitNative(engine);
237 }
238
239 EGLBoolean
240 coregl_api_eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
241 {
242         INIT_EXPORT();
243         return ovr_eglSwapBuffers(dpy, surface);
244 }
245
246 EGLBoolean
247 coregl_api_eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
248 {
249         INIT_EXPORT();
250         return ovr_eglCopyBuffers(dpy, surface, target);
251 }
252
253 _eng_fn
254 coregl_api_eglGetProcAddress(const char* procname)
255 {
256         INIT_EXPORT();
257         return ovr_eglGetProcAddress(procname);
258 }
259
260 const char *
261 coregl_api_eglQueryString(EGLDisplay dpy, EGLint name)
262 {
263         INIT_EXPORT();
264         return ovr_eglQueryString(dpy, name);
265 }
266