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