2 #include "yagl_gles1_ogl.h"
3 #include "yagl_drivers/gles_ogl/yagl_gles_ogl_macros.h"
4 #include "yagl_drivers/gles_ogl/yagl_gles_ogl.h"
5 #include "yagl_gles1_driver.h"
6 #include "yagl_dyn_lib.h"
8 #include "yagl_process.h"
9 #include "yagl_thread.h"
13 static YAGL_DEFINE_TLS(struct yagl_thread_state*, gles1_ogl_ts);
15 struct yagl_gles1_ogl_ps
17 struct yagl_gles1_driver_ps base;
22 struct yagl_gles1_driver base;
24 struct yagl_dyn_lib *dyn_lib;
26 struct yagl_gles_ogl *gles_ogl;
28 YAGL_GLES_OGL_PROC2(glAlphaFunc, GLenum, GLclampf, func, ref)
29 YAGL_GLES_OGL_PROC4(glColor4f, GLfloat, GLfloat, GLfloat, GLfloat, red, green, blue, alpha)
30 YAGL_GLES_OGL_PROC2(glDepthRangef, GLclampf, GLclampf, zNear, zFar)
31 YAGL_GLES_OGL_PROC2(glFogf, GLenum, GLfloat, pname, param)
32 YAGL_GLES_OGL_PROC2(glFogfv, GLenum, const GLfloat*, pname, params)
33 YAGL_GLES_OGL_PROC3(glGetLightfv, GLenum, GLenum, GLfloat*, light, pname, params)
34 YAGL_GLES_OGL_PROC3(glGetMaterialfv, GLenum, GLenum, GLfloat*, face, pname, params)
35 YAGL_GLES_OGL_PROC3(glGetTexEnvfv, GLenum, GLenum, GLfloat*, env, pname, params)
36 YAGL_GLES_OGL_PROC2(glLightModelf, GLenum, GLfloat, pname, param)
37 YAGL_GLES_OGL_PROC2(glLightModelfv, GLenum, const GLfloat*, pname, params)
38 YAGL_GLES_OGL_PROC3(glLightf, GLenum, GLenum, GLfloat, light, pname, param)
39 YAGL_GLES_OGL_PROC3(glLightfv, GLenum, GLenum, const GLfloat*, light, pname, params)
40 YAGL_GLES_OGL_PROC1(glLoadMatrixf, const GLfloat*, m)
41 YAGL_GLES_OGL_PROC3(glMaterialf, GLenum, GLenum, GLfloat, face, pname, param)
42 YAGL_GLES_OGL_PROC3(glMaterialfv, GLenum, GLenum, const GLfloat*, face, pname, params)
43 YAGL_GLES_OGL_PROC1(glMultMatrixf, const GLfloat*, m)
44 YAGL_GLES_OGL_PROC5(glMultiTexCoord4f, GLenum, GLfloat, GLfloat, GLfloat, GLfloat, target, s, t, r, q)
45 YAGL_GLES_OGL_PROC3(glNormal3f, GLfloat, GLfloat, GLfloat, nx, ny, nz)
46 YAGL_GLES_OGL_PROC2(glPointParameterf, GLenum, GLfloat, pname, param)
47 YAGL_GLES_OGL_PROC2(glPointParameterfv, GLenum, const GLfloat*, pname, params)
48 YAGL_GLES_OGL_PROC1(glPointSize, GLfloat, size)
49 YAGL_GLES_OGL_PROC4(glRotatef, GLfloat, GLfloat, GLfloat, GLfloat, angle, x, y, z)
50 YAGL_GLES_OGL_PROC3(glScalef, GLfloat, GLfloat, GLfloat, x, y, z)
51 YAGL_GLES_OGL_PROC3(glTexEnvf, GLenum, GLenum, GLfloat, target, pname, param)
52 YAGL_GLES_OGL_PROC3(glTexEnvfv, GLenum, GLenum, const GLfloat*, target, pname, params)
53 YAGL_GLES_OGL_PROC3(glTranslatef, GLfloat, GLfloat, GLfloat, x, y, z)
54 YAGL_GLES_OGL_PROC1(glClientActiveTexture, GLenum, texture)
55 YAGL_GLES_OGL_PROC4(glColor4ub, GLubyte, GLubyte, GLubyte, GLubyte, red, green, blue, alpha)
56 YAGL_GLES_OGL_PROC4(glColorPointer, GLint, GLenum, GLsizei, const GLvoid*, size, type, stride, pointer)
57 YAGL_GLES_OGL_PROC1(glDisableClientState, GLenum, array)
58 YAGL_GLES_OGL_PROC1(glEnableClientState, GLenum, array)
59 YAGL_GLES_OGL_PROC2(glGetPointerv, GLenum, GLvoid**, pname, params)
60 YAGL_GLES_OGL_PROC3(glGetTexEnviv, GLenum, GLenum, GLint*, env, pname, params)
61 YAGL_GLES_OGL_PROC0(glLoadIdentity)
62 YAGL_GLES_OGL_PROC1(glLogicOp, GLenum, opcode)
63 YAGL_GLES_OGL_PROC1(glMatrixMode, GLenum, mode)
64 YAGL_GLES_OGL_PROC3(glNormalPointer, GLenum, GLsizei, const GLvoid*, type, stride, pointer)
65 YAGL_GLES_OGL_PROC0(glPopMatrix)
66 YAGL_GLES_OGL_PROC0(glPushMatrix)
67 YAGL_GLES_OGL_PROC1(glShadeModel, GLenum, mode)
68 YAGL_GLES_OGL_PROC4(glTexCoordPointer, GLint, GLenum, GLsizei, const GLvoid*, size, type, stride, pointer)
69 YAGL_GLES_OGL_PROC3(glTexEnvi, GLenum, GLenum, GLint, target, pname, param)
70 YAGL_GLES_OGL_PROC3(glTexEnviv, GLenum, GLenum, const GLint*, target, pname, params)
71 YAGL_GLES_OGL_PROC4(glVertexPointer, GLint, GLenum, GLsizei, const GLvoid*, size, type, stride, pointer)
74 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, AlphaFunc, GLenum, GLclampf, func, ref)
75 YAGL_GLES_OGL_PROC_IMPL4(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Color4f, GLfloat, GLfloat, GLfloat, GLfloat, red, green, blue, alpha)
76 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, DepthRangef, GLclampf, GLclampf, zNear, zFar)
77 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Fogf, GLenum, GLfloat, pname, param)
78 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Fogfv, GLenum, const GLfloat*, pname, params)
79 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, GetLightfv, GLenum, GLenum, GLfloat*, light, pname, params)
80 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, GetMaterialfv, GLenum, GLenum, GLfloat*, face, pname, params)
81 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, GetTexEnvfv, GLenum, GLenum, GLfloat*, env, pname, params)
82 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, LightModelf, GLenum, GLfloat, pname, param)
83 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, LightModelfv, GLenum, const GLfloat*, pname, params)
84 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Lightf, GLenum, GLenum, GLfloat, light, pname, param)
85 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Lightfv, GLenum, GLenum, const GLfloat*, light, pname, params)
86 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, LoadMatrixf, const GLfloat*, m)
87 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Materialf, GLenum, GLenum, GLfloat, face, pname, param)
88 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Materialfv, GLenum, GLenum, const GLfloat*, face, pname, params)
89 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, MultMatrixf, const GLfloat*, m)
90 YAGL_GLES_OGL_PROC_IMPL5(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, MultiTexCoord4f, GLenum, GLfloat, GLfloat, GLfloat, GLfloat, target, s, t, r, q)
91 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Normal3f, GLfloat, GLfloat, GLfloat, nx, ny, nz)
92 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, PointParameterf, GLenum, GLfloat, pname, param)
93 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, PointParameterfv, GLenum, const GLfloat*, pname, params)
94 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, PointSize, GLfloat, size)
95 YAGL_GLES_OGL_PROC_IMPL4(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Rotatef, GLfloat, GLfloat, GLfloat, GLfloat, angle, x, y, z)
96 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Scalef, GLfloat, GLfloat, GLfloat, x, y, z)
97 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, TexEnvf, GLenum, GLenum, GLfloat, target, pname, param)
98 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, TexEnvfv, GLenum, GLenum, const GLfloat*, target, pname, params)
99 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Translatef, GLfloat, GLfloat, GLfloat, x, y, z)
100 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, ClientActiveTexture, GLenum, texture)
101 YAGL_GLES_OGL_PROC_IMPL4(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, Color4ub, GLubyte, GLubyte, GLubyte, GLubyte, red, green, blue, alpha)
102 YAGL_GLES_OGL_PROC_IMPL4(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, ColorPointer, GLint, GLenum, GLsizei, const GLvoid*, size, type, stride, pointer)
103 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, DisableClientState, GLenum, array)
104 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, EnableClientState, GLenum, array)
105 YAGL_GLES_OGL_PROC_IMPL2(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, GetPointerv, GLenum, GLvoid**, pname, params)
106 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, GetTexEnviv, GLenum, GLenum, GLint*, env, pname, params)
107 YAGL_GLES_OGL_PROC_IMPL0(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, LoadIdentity)
108 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, LogicOp, GLenum, opcode)
109 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, MatrixMode, GLenum, mode)
110 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, NormalPointer, GLenum, GLsizei, const GLvoid*, type, stride, pointer)
111 YAGL_GLES_OGL_PROC_IMPL0(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, PopMatrix)
112 YAGL_GLES_OGL_PROC_IMPL0(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, PushMatrix)
113 YAGL_GLES_OGL_PROC_IMPL1(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, ShadeModel, GLenum, mode)
114 YAGL_GLES_OGL_PROC_IMPL4(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, TexCoordPointer, GLint, GLenum, GLsizei, const GLvoid*, size, type, stride, pointer)
115 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, TexEnvi, GLenum, GLenum, GLint, target, pname, param)
116 YAGL_GLES_OGL_PROC_IMPL3(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, TexEnviv, GLenum, GLenum, const GLint*, target, pname, params)
117 YAGL_GLES_OGL_PROC_IMPL4(yagl_gles1_driver_ps, yagl_gles1_driver_ps, yagl_gles1_ogl, VertexPointer, GLint, GLenum, GLsizei, const GLvoid*, size, type, stride, pointer)
119 static void yagl_gles1_ogl_thread_init(struct yagl_gles1_driver_ps *driver_ps,
120 struct yagl_thread_state *ts)
124 YAGL_LOG_FUNC_ENTER_TS(gles1_ogl_ts, yagl_gles1_ogl_thread_init, NULL);
126 YAGL_LOG_FUNC_EXIT(NULL);
129 static void yagl_gles1_ogl_thread_fini(struct yagl_gles1_driver_ps *driver_ps)
131 YAGL_LOG_FUNC_ENTER_TS(gles1_ogl_ts, yagl_gles1_ogl_thread_fini, NULL);
135 YAGL_LOG_FUNC_EXIT(NULL);
138 static void yagl_gles1_ogl_process_destroy(struct yagl_gles1_driver_ps *driver_ps)
140 struct yagl_gles1_ogl_ps *gles1_ogl_ps = (struct yagl_gles1_ogl_ps*)driver_ps;
141 struct yagl_gles_ogl_ps *gles_ogl_ps = NULL;
143 YAGL_LOG_FUNC_ENTER(driver_ps->common->ps->id, 0, yagl_gles1_ogl_process_destroy, NULL);
145 gles_ogl_ps = (struct yagl_gles_ogl_ps*)gles1_ogl_ps->base.common;
147 yagl_gles1_driver_ps_cleanup(&gles1_ogl_ps->base);
149 yagl_gles_ogl_ps_destroy(gles_ogl_ps);
151 g_free(gles1_ogl_ps);
153 YAGL_LOG_FUNC_EXIT(NULL);
156 static struct yagl_gles1_driver_ps
157 *yagl_gles1_ogl_process_init(struct yagl_gles1_driver *driver,
158 struct yagl_process_state *ps)
160 struct yagl_gles1_ogl *gles1_ogl = (struct yagl_gles1_ogl*)driver;
161 struct yagl_gles1_ogl_ps *gles1_ogl_ps =
162 g_malloc0(sizeof(struct yagl_gles1_ogl_ps));
163 struct yagl_gles_ogl_ps *gles_ogl_ps = NULL;
165 YAGL_LOG_FUNC_ENTER(ps->id, 0, yagl_gles1_ogl_process_init, NULL);
167 gles_ogl_ps = yagl_gles_ogl_ps_create(gles1_ogl->gles_ogl, ps);
170 yagl_gles1_driver_ps_init(&gles1_ogl_ps->base, driver, &gles_ogl_ps->base);
172 gles1_ogl_ps->base.thread_init = &yagl_gles1_ogl_thread_init;
173 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, AlphaFunc);
174 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Color4f);
175 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, DepthRangef);
176 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Fogf);
177 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Fogfv);
178 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, GetLightfv);
179 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, GetMaterialfv);
180 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, GetTexEnvfv);
181 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, LightModelf);
182 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, LightModelfv);
183 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Lightf);
184 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Lightfv);
185 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, LoadMatrixf);
186 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Materialf);
187 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Materialfv);
188 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, MultMatrixf);
189 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, MultiTexCoord4f);
190 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Normal3f);
191 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, PointParameterf);
192 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, PointParameterfv);
193 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, PointSize);
194 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Rotatef);
195 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Scalef);
196 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, TexEnvf);
197 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, TexEnvfv);
198 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Translatef);
199 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, ClientActiveTexture);
200 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, Color4ub);
201 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, ColorPointer);
202 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, DisableClientState);
203 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, EnableClientState);
204 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, GetPointerv);
205 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, GetTexEnviv);
206 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, LoadIdentity);
207 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, LogicOp);
208 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, MatrixMode);
209 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, NormalPointer);
210 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, PopMatrix);
211 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, PushMatrix);
212 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, ShadeModel);
213 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, TexCoordPointer);
214 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, TexEnvi);
215 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, TexEnviv);
216 YAGL_GLES_OGL_ASSIGN_PROC(yagl_gles1_ogl, gles1_ogl_ps, VertexPointer);
217 gles1_ogl_ps->base.thread_fini = &yagl_gles1_ogl_thread_fini;
218 gles1_ogl_ps->base.destroy = &yagl_gles1_ogl_process_destroy;
220 YAGL_LOG_FUNC_EXIT(NULL);
222 return &gles1_ogl_ps->base;
225 static void yagl_gles1_ogl_destroy(struct yagl_gles1_driver *driver)
227 struct yagl_gles1_ogl *gles1_ogl = (struct yagl_gles1_ogl*)driver;
229 YAGL_LOG_FUNC_ENTER_NPT(yagl_gles1_ogl_destroy, NULL);
231 yagl_gles_ogl_destroy(gles1_ogl->gles_ogl);
233 yagl_dyn_lib_destroy(gles1_ogl->dyn_lib);
235 yagl_gles1_driver_cleanup(&gles1_ogl->base);
239 YAGL_LOG_FUNC_EXIT(NULL);
242 struct yagl_gles1_driver *yagl_gles1_ogl_create(void)
244 struct yagl_gles1_ogl *gles1_ogl = NULL;
245 PFNGLXGETPROCADDRESSPROC get_address = NULL;
246 struct yagl_dyn_lib *dyn_lib = NULL;
247 struct yagl_gles_ogl *gles_ogl = NULL;
249 YAGL_LOG_FUNC_ENTER_NPT(yagl_gles1_ogl_create, NULL);
251 gles1_ogl = g_malloc0(sizeof(*gles1_ogl));
253 yagl_gles1_driver_init(&gles1_ogl->base);
255 dyn_lib = yagl_dyn_lib_create();
261 if (!yagl_dyn_lib_load(dyn_lib, "libGL.so.1")) {
262 YAGL_LOG_ERROR("Unable to load libGL.so.1: %s",
263 yagl_dyn_lib_get_error(dyn_lib));
267 gles_ogl = yagl_gles_ogl_create(dyn_lib);
273 get_address = yagl_dyn_lib_get_sym(dyn_lib, "glXGetProcAddress");
276 get_address = yagl_dyn_lib_get_sym(dyn_lib, "glXGetProcAddressARB");
279 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glAlphaFunc);
280 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glColor4f);
281 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glDepthRangef);
282 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glFogf);
283 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glFogfv);
284 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glGetLightfv);
285 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glGetMaterialfv);
286 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glGetTexEnvfv);
287 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glLightModelf);
288 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glLightModelfv);
289 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glLightf);
290 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glLightfv);
291 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glLoadMatrixf);
292 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glMaterialf);
293 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glMaterialfv);
294 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glMultMatrixf);
295 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glMultiTexCoord4f);
296 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glNormal3f);
297 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glPointParameterf);
298 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glPointParameterfv);
299 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glPointSize);
300 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glRotatef);
301 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glScalef);
302 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glTexEnvf);
303 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glTexEnvfv);
304 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glTranslatef);
305 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glClientActiveTexture);
306 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glColor4ub);
307 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glColorPointer);
308 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glDisableClientState);
309 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glEnableClientState);
310 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glGetPointerv);
311 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glGetTexEnviv);
312 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glLoadIdentity);
313 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glLogicOp);
314 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glMatrixMode);
315 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glNormalPointer);
316 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glPopMatrix);
317 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glPushMatrix);
318 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glShadeModel);
319 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glTexCoordPointer);
320 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glTexEnvi);
321 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glTexEnviv);
322 YAGL_GLES_OGL_GET_PROC(gles1_ogl, glVertexPointer);
324 gles1_ogl->dyn_lib = dyn_lib;
325 gles1_ogl->gles_ogl = gles_ogl;
326 gles1_ogl->base.process_init = &yagl_gles1_ogl_process_init;
327 gles1_ogl->base.destroy = &yagl_gles1_ogl_destroy;
329 YAGL_LOG_FUNC_EXIT(NULL);
331 return &gles1_ogl->base;
335 yagl_gles_ogl_destroy(gles_ogl);
338 yagl_dyn_lib_destroy(dyn_lib);
340 yagl_gles1_driver_cleanup(&gles1_ogl->base);
343 YAGL_LOG_FUNC_EXIT(NULL);