Merge lp:~marcoil/glproxy/extensions-cleanup into lp:glproxy
- extensions-cleanup
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 34 |
Proposed branch: | lp:~marcoil/glproxy/extensions-cleanup |
Merge into: | lp:glproxy |
Diff against target: |
1103 lines (+141/-690) 10 files modified
include/GL/gl_proxy.h (+6/-1) include/GL/glext_proxy.h (+3/-129) include/GL/glx_proxy.h (+3/-1) include/GL/glxext_proxy.h (+3/-173) src/egldef.h (+10/-1) src/gl_proxy.c (+84/-24) src/glext_proxy.c (+0/-168) src/glx_proxy.c (+3/-178) tests/tfp/egl_tfp.c (+15/-6) tests/tfp/glx_tfp.c (+14/-9) |
To merge this branch: | bzr merge lp:~marcoil/glproxy/extensions-cleanup |
Related bugs: | |
Related blueprints: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alexandros Frantzis | Approve | ||
Review via email: mp+79724@code.launchpad.net |
Commit message
Removed automatically resolving all known extensions and added a simple API to get extension functions.
Description of the change
Removed automatically resolving all known extensions and added a simple API to get extension functions.
Added a function to help getting extensions, glProxyGetExtPr
name and the function name, and glProxy will look for it in both the current backend (EGL or GLX) and
GL, but the later will only work if there's a valid current context.
- 36. By Marc Ordinas i Llopis
-
Removed caching the extensions strings. Ensured that extension names are checked correctly.
Added a new API function to check if an extension is present in both the backend and GL,
glProxyHasExtension.
Marc Ordinas i Llopis (marcoil) wrote : | # |
Thanks, Alexandros! I removed the string caching and copied the check from cairo, please take a look.
Alexandros Frantzis (afrantzis) wrote : | # |
Looks good!
Preview Diff
1 | === modified file 'include/GL/gl_proxy.h' |
2 | --- include/GL/gl_proxy.h 2011-09-10 10:03:08 +0000 |
3 | +++ include/GL/gl_proxy.h 2011-10-19 11:31:30 +0000 |
4 | @@ -22,7 +22,9 @@ |
5 | */ |
6 | |
7 | /* |
8 | - * Authored-by: Jammy Zhou <jammy.zhou@linaro.org> |
9 | + * Authors: |
10 | + * Jammy Zhou <jammy.zhou@linaro.org> |
11 | + * Marc Ordinas i Llopis, Collabora Ltd <marc.ordinasillopis@linaro.org> |
12 | */ |
13 | |
14 | #ifndef _GL_PROXY_H |
15 | @@ -930,6 +932,9 @@ |
16 | extern int glProxyInit(PROXY_BACKEND_OPTION *pProxyBackend); |
17 | extern int glProxyClose(void); |
18 | |
19 | +extern GLboolean glProxyHasExtension(const char *extension); |
20 | +extern void *glProxyGetExtProcAddr(const char *extension, const char *name); |
21 | + |
22 | #ifdef __cplusplus |
23 | } |
24 | #endif |
25 | |
26 | === modified file 'include/GL/glext_proxy.h' |
27 | --- include/GL/glext_proxy.h 2011-02-24 04:52:03 +0000 |
28 | +++ include/GL/glext_proxy.h 2011-10-19 11:31:30 +0000 |
29 | @@ -22,7 +22,9 @@ |
30 | */ |
31 | |
32 | /* |
33 | - * Authored-by: Jammy Zhou <jammy.zhou@linaro.org> |
34 | + * Authors: |
35 | + * Jammy Zhou <jammy.zhou@linaro.org> |
36 | + * Marc Ordinas i Llopis, Collabora Ltd <marc.ordinasillopis@linaro.org> |
37 | */ |
38 | |
39 | #ifndef __GLEXT_PROXY_H |
40 | @@ -322,134 +324,6 @@ |
41 | typedef void GL_APIENTRY (*PFNPROXYSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); |
42 | typedef void GL_APIENTRY (*PFNPROXYENDTILINGQCOMPROC) (GLbitfield preserveMask); |
43 | |
44 | -/* --------------------------------------------------------------------------- |
45 | - * function rename |
46 | - * -------------------------------------------------------------------------*/ |
47 | -#define glEGLImageTargetTexture2DOES pfnProxyEGLImageTargetTexture2DOES |
48 | -#define glEGLImageTargetRenderbufferStorageOES pfnProxyEGLImageTargetRenderbufferStorageOES |
49 | -#define glGetProgramBinaryOES pfnProxyGetProgramBinaryOES |
50 | -#define glProgramBinaryOES pfnProxyProgramBinaryOES |
51 | -#define glMapBufferOES pfnProxyMapBufferOES |
52 | -#define glUnmapBufferOES pfnProxyUnmapBufferOES |
53 | -#define glGetBufferPointervOES pfnProxyGetBufferPointervOES |
54 | -#define glTexImage3DOES pfnProxyTexImage3DOES |
55 | -#define glTexSubImage3DOES pfnProxyTexSubImage3DOES |
56 | -#define glCopyTexSubImage3DOES pfnProxyCopyTexSubImage3DOES |
57 | -#define glCompressedTexImage3DOES pfnProxyCompressedTexImage3DOES |
58 | -#define glCompressedTexSubImage3DOES pfnProxyCompressedTexSubImage3DOES |
59 | -#define glFramebufferTexture3DOES pfnProxyFramebufferTexture3DOES |
60 | -#define glBindVertexArrayOES pfnProxyBindVertexArrayOES |
61 | -#define glDeleteVertexArraysOES pfnProxyDeleteVertexArraysOES |
62 | -#define glGenVertexArraysOES pfnProxyGenVertexArraysOES |
63 | -#define glIsVertexArrayOES pfnProxyIsVertexArrayOES |
64 | -#define glGetPerfMonitorGroupsAMD pfnProxyGetPerfMonitorGroupsAMD |
65 | -#define glGetPerfMonitorCountersAMD pfnProxyGetPerfMonitorCountersAMD |
66 | -#define glGetPerfMonitorGroupStringAMD pfnProxyGetPerfMonitorGroupStringAMD |
67 | -#define glGetPerfMonitorCounterStringAMD pfnProxyGetPerfMonitorCounterStringAMD |
68 | -#define glGetPerfMonitorCounterInfoAMD pfnProxyGetPerfMonitorCounterInfoAMD |
69 | -#define glGenPerfMonitorsAMD pfnProxyGenPerfMonitorsAMD |
70 | -#define glDeletePerfMonitorsAMD pfnProxyDeletePerfMonitorsAMD |
71 | -#define glSelectPerfMonitorCountersAMD pfnProxySelectPerfMonitorCountersAMD |
72 | -#define glBeginPerfMonitorAMD pfnProxyBeginPerfMonitorAMD |
73 | -#define glEndPerfMonitorAMD pfnProxyEndPerfMonitorAMD |
74 | -#define glGetPerfMonitorCounterDataAMD pfnProxyGetPerfMonitorCounterDataAMD |
75 | -#define glDiscardFramebufferEXT pfnProxyDiscardFramebufferEXT |
76 | -#define glMultiDrawArraysEXT pfnProxyMultiDrawArraysEXT |
77 | -#define glMultiDrawElementsEXT pfnProxyMultiDrawElementsEXT |
78 | -#define glRenderbufferStorageMultisampleIMG pfnProxyRenderbufferStorageMultisampleIMG |
79 | -#define glFramebufferTexture2DMultisampleIMG pfnProxyFramebufferTexture2DMultisampleIMG |
80 | -#define glDeleteFencesNV pfnProxyDeleteFencesNV |
81 | -#define glGenFencesNV pfnProxyGenFencesNV |
82 | -#define glIsFenceNV pfnProxyIsFenceNV |
83 | -#define glTestFenceNV pfnProxyTestFenceNV |
84 | -#define glGetFenceNV pfnProxyGetFenceNV |
85 | -#define glFinishFenceNV pfnProxyFinishFenceNV |
86 | -#define glSetFenceNV pfnProxySetFenceNV |
87 | -#define glCoverageMaskNV pfnProxyCoverageMaskNV |
88 | -#define glCoverageOperationNV pfnProxyCoverageOperationNV |
89 | -#define glGetDriverControlsQCOM pfnProxyGetDriverControlsQCOM |
90 | -#define glGetDriverControlStringQCOM pfnProxyGetDriverControlStringQCOM |
91 | -#define glEnableDriverControlQCOM pfnProxyEnableDriverControlQCOM |
92 | -#define glDisableDriverControlQCOM pfnProxyDisableDriverControlQCOM |
93 | -#define glExtGetTexturesQCOM pfnProxyExtGetTexturesQCOM |
94 | -#define glExtGetBuffersQCOM pfnProxyExtGetBuffersQCOM |
95 | -#define glExtGetRenderbuffersQCOM pfnProxyExtGetRenderbuffersQCOM |
96 | -#define glExtGetFramebuffersQCOM pfnProxyExtGetFramebuffersQCOM |
97 | -#define glExtGetTexLevelParameterivQCOM pfnProxyExtGetTexLevelParameterivQCOM |
98 | -#define glExtTexObjectStateOverrideQCOM pfnProxyExtTexObjectStateOverrideQCOM |
99 | -#define glExtGetTexSubImageQCOM pfnProxyExtGetTexSubImageQCOM |
100 | -#define glExtGetBufferPointervQCOM pfnProxyExtGetBufferPointervQCOM |
101 | -#define glExtGetShadersQCOM pfnProxyExtGetShadersQCOM |
102 | -#define glExtGetProgramsQCOM pfnProxyExtGetProgramsQCOM |
103 | -#define glExtIsProgramBinaryQCOM pfnProxyExtIsProgramBinaryQCOM |
104 | -#define glExtGetProgramBinarySourceQCOM pfnProxyExtGetProgramBinarySourceQCOM |
105 | -#define glStartTilingQCOM pfnProxyStartTilingQCOM |
106 | -#define glEndTilingQCOM pfnProxyEndTilingQCOM |
107 | - |
108 | -/* --------------------------------------------------------------------------- |
109 | - * export proxy functions |
110 | - * -------------------------------------------------------------------------*/ |
111 | -extern PFNPROXYEGLIMAGETARGETTEXTURE2DOESPROC pfnProxyEGLImageTargetTexture2DOES; |
112 | -extern PFNPROXYEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC pfnProxyEGLImageTargetRenderbufferStorageOES; |
113 | -extern PFNPROXYGETPROGRAMBINARYOESPROC pfnProxyGetProgramBinaryOES; |
114 | -extern PFNPROXYPROGRAMBINARYOESPROC pfnProxyProgramBinaryOES; |
115 | -extern PFNPROXYMAPBUFFEROESPROC pfnProxyMapBufferOES; |
116 | -extern PFNPROXYUNMAPBUFFEROESPROC pfnProxyUnmapBufferOES; |
117 | -extern PFNPROXYGETBUFFERPOINTERVOESPROC pfnProxyGetBufferPointervOES; |
118 | -extern PFNPROXYTEXIMAGE3DOESPROC pfnProxyTexImage3DOES; |
119 | -extern PFNPROXYTEXSUBIMAGE3DOESPROC pfnProxyTexSubImage3DOES; |
120 | -extern PFNPROXYCOPYTEXSUBIMAGE3DOESPROC pfnProxyCopyTexSubImage3DOES; |
121 | -extern PFNPROXYCOMPRESSEDTEXIMAGE3DOESPROC pfnProxyCompressedTexImage3DOES; |
122 | -extern PFNPROXYCOMPRESSEDTEXSUBIMAGE3DOESPROC pfnProxyCompressedTexSubImage3DOES; |
123 | -extern PFNPROXYFRAMEBUFFERTEXTURE3DOESPROC pfnProxyFramebufferTexture3DOES; |
124 | -extern PFNPROXYBINDVERTEXARRAYOESPROC pfnProxyBindVertexArrayOES; |
125 | -extern PFNPROXYDELETEVERTEXARRAYSOESPROC pfnProxyDeleteVertexArraysOES; |
126 | -extern PFNPROXYGENVERTEXARRAYSOESPROC pfnProxyGenVertexArraysOES; |
127 | -extern PFNPROXYISVERTEXARRAYOESPROC pfnProxyIsVertexArrayOES; |
128 | -extern PFNPROXYGETPERFMONITORGROUPSAMDPROC pfnProxyGetPerfMonitorGroupsAMD; |
129 | -extern PFNPROXYGETPERFMONITORCOUNTERSAMDPROC pfnProxyGetPerfMonitorCountersAMD; |
130 | -extern PFNPROXYGETPERFMONITORGROUPSTRINGAMDPROC pfnProxyGetPerfMonitorGroupStringAMD; |
131 | -extern PFNPROXYGETPERFMONITORCOUNTERSTRINGAMDPROC pfnProxyGetPerfMonitorCounterStringAMD; |
132 | -extern PFNPROXYGETPERFMONITORCOUNTERINFOAMDPROC pfnProxyGetPerfMonitorCounterInfoAMD; |
133 | -extern PFNPROXYGENPERFMONITORSAMDPROC pfnProxyGenPerfMonitorsAMD; |
134 | -extern PFNPROXYDELETEPERFMONITORSAMDPROC pfnProxyDeletePerfMonitorsAMD; |
135 | -extern PFNPROXYSELECTPERFMONITORCOUNTERSAMDPROC pfnProxySelectPerfMonitorCountersAMD; |
136 | -extern PFNPROXYBEGINPERFMONITORAMDPROC pfnProxyBeginPerfMonitorAMD; |
137 | -extern PFNPROXYENDPERFMONITORAMDPROC pfnProxyEndPerfMonitorAMD; |
138 | -extern PFNPROXYGETPERFMONITORCOUNTERDATAAMDPROC pfnProxyGetPerfMonitorCounterDataAMD; |
139 | -extern PFNPROXYDISCARDFRAMEBUFFEREXTPROC pfnProxyDiscardFramebufferEXT; |
140 | -extern PFNPROXYMULTIDRAWARRAYSEXTPROC pfnProxyMultiDrawArraysEXT; |
141 | -extern PFNPROXYMULTIDRAWELEMENTSEXTPROC pfnProxyMultiDrawElementsEXT; |
142 | -extern PFNPROXYRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC pfnProxyRenderbufferStorageMultisampleIMG; |
143 | -extern PFNPROXYFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC pfnProxyFramebufferTexture2DMultisampleIMG; |
144 | -extern PFNPROXYDELETEFENCESNVPROC pfnProxyDeleteFencesNV; |
145 | -extern PFNPROXYGENFENCESNVPROC pfnProxyGenFencesNV; |
146 | -extern PFNPROXYISFENCENVPROC pfnProxyIsFenceNV; |
147 | -extern PFNPROXYTESTFENCENVPROC pfnProxyTestFenceNV; |
148 | -extern PFNPROXYGETFENCEIVNVPROC pfnProxyGetFenceivNV; |
149 | -extern PFNPROXYFINISHFENCENVPROC pfnProxyFinishFenceNV; |
150 | -extern PFNPROXYSETFENCENVPROC pfnProxySetFenceNV; |
151 | -extern PFNPROXYCOVERAGEMASKNVPROC pfnProxyCoverageMaskNV; |
152 | -extern PFNPROXYCOVERAGEOPERATIONNVPROC pfnProxyCoverageOperationNV; |
153 | -extern PFNPROXYGETDRIVERCONTROLSQCOMPROC pfnProxyGetDriverControlsQCOM; |
154 | -extern PFNPROXYGETDRIVERCONTROLSTRINGQCOMPROC pfnProxyGetDriverControlStringQCOM; |
155 | -extern PFNPROXYENABLEDRIVERCONTROLQCOMPROC pfnProxyEnableDriverControlQCOM; |
156 | -extern PFNPROXYDISABLEDRIVERCONTROLQCOMPROC pfnProxyDisableDriverControlQCOM; |
157 | -extern PFNPROXYEXTGETTEXTURESQCOMPROC pfnProxyExtGetTexturesQCOM; |
158 | -extern PFNPROXYEXTGETBUFFERSQCOMPROC pfnProxyExtGetBuffersQCOM; |
159 | -extern PFNPROXYEXTGETRENDERBUFFERSQCOMPROC pfnProxyExtGetRenderbuffersQCOM; |
160 | -extern PFNPROXYEXTGETFRAMEBUFFERSQCOMPROC pfnProxyExtGetFramebuffersQCOM; |
161 | -extern PFNPROXYEXTGETTEXLEVELPARAMETERIVQCOMPROC pfnProxyExtGetTexLevelParameterivQCOM; |
162 | -extern PFNPROXYEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC pfnProxyExtTexObjectStateOverrideiQCOM; |
163 | -extern PFNPROXYEXTGETTEXSUBIMAGEQCOMPROC pfnProxyExtGetTexSubImageQCOM; |
164 | -extern PFNPROXYEXTGETBUFFERPOINTERVQCOMPROC pfnProxyExtGetBufferPointervQCOM; |
165 | -extern PFNPROXYEXTGETSHADERSQCOMPROC pfnProxyExtGetShadersQCOM; |
166 | -extern PFNPROXYEXTGETPROGRAMSQCOMPROC pfnProxyExtGetProgramsQCOM; |
167 | -extern PFNPROXYEXTISPROGRAMBINARYQCOMPROC pfnProxyExtIsProgramBinaryQCOM; |
168 | -extern PFNPROXYEXTGETPROGRAMBINARYSOURCEQCOMPROC pfnProxyExtGetProgramBinarySourceQCOM; |
169 | -extern PFNPROXYSTARTTILINGQCOMPROC pfnProxyStartTilingQCOM; |
170 | -extern PFNPROXYENDTILINGQCOMPROC pfnProxyEndTilingQCOM; |
171 | - |
172 | #ifdef __cplusplus |
173 | } |
174 | #endif |
175 | |
176 | === modified file 'include/GL/glx_proxy.h' |
177 | --- include/GL/glx_proxy.h 2011-02-24 04:52:03 +0000 |
178 | +++ include/GL/glx_proxy.h 2011-10-19 11:31:30 +0000 |
179 | @@ -22,7 +22,9 @@ |
180 | */ |
181 | |
182 | /* |
183 | - * Authored-by: Jammy Zhou <jammy.zhou@linaro.org> |
184 | + * Authors: |
185 | + * Jammy Zhou <jammy.zhou@linaro.org> |
186 | + * Marc Ordinas i Llopis, Collabora Ltd <marc.ordinasillopis@linaro.org> |
187 | */ |
188 | |
189 | #ifndef _GLX_PROXY_H |
190 | |
191 | === modified file 'include/GL/glxext_proxy.h' |
192 | --- include/GL/glxext_proxy.h 2011-09-13 16:03:17 +0000 |
193 | +++ include/GL/glxext_proxy.h 2011-10-19 11:31:30 +0000 |
194 | @@ -22,7 +22,9 @@ |
195 | */ |
196 | |
197 | /* |
198 | - * Authored-by: Jammy Zhou <jammy.zhou@linaro.org> |
199 | + * Authors: |
200 | + * Jammy Zhou <jammy.zhou@linaro.org> |
201 | + * Marc Ordinas i Llopis, Collabora Ltd <marc.ordinasillopis@linaro.org> |
202 | */ |
203 | |
204 | #ifndef __GLXEXT_PROXY_H |
205 | @@ -467,178 +469,6 @@ |
206 | typedef int ( * PFNPROXYSWAPINTERVALMESAPROC) (unsigned int interval); |
207 | typedef int ( * PFNPROXYGETSWAPINTERVALMESAPROC) (void); |
208 | |
209 | -/* --------------------------------------------------------------------------------------------- |
210 | - * function rename |
211 | - * -------------------------------------------------------------------------------------------*/ |
212 | -#define glXCreateContextAttribsARB pfnProxyCreateContextAttribsARB |
213 | -#define glXSwapIntervalSGI pfnProxySwapIntervalSGI |
214 | -#define glXGetVideoSyncSGI pfnProxyGetVideoSyncSGI |
215 | -#define glXWaitVideoSyncSGI pfnProxyWaitVideoSyncSGI |
216 | -#define glXMakeCurrentReadSGI pfnProxyMakeCurrentReadSGI |
217 | -#define glXGetCurrentReadDrawableSGI pfnProxyGetCurrentReadDrawableSGI |
218 | -#ifdef _VL_H |
219 | -#define glXCreateGLXVideoSourceSGIX pfnProxyCreateGLXVideoSourceSGIX |
220 | -#define glXDestroyGLXVideoSourceSGIX pfnProxyDestroyGLXVideoSourceSGIX |
221 | -#endif |
222 | -#define glXGetCurrentDisplayEXT pfnProxyGetCurrentDisplayEXT |
223 | -#define glXQueryContextInfoEXT pfnProxyQueryContextInfoEXT |
224 | -#define glXGetContextIDEXT pfnProxyGetContextIDEXT |
225 | -#define glXImportContextEXT pfnProxyImportContextEXT |
226 | -#define glXFreeContextEXT pfnProxyFreeContextEXT |
227 | -#define glXGetFBConfigAttribSGIX pfnProxyGetFBConfigAttribSGIX |
228 | -#define glXChooseFBConfigSGIX pfnProxyChooseFBConfigSGIX |
229 | -#define glXCreateGLXPixmapWithConfigSGIX pfnProxyCreateGLXPixmapWithConfigSGIX |
230 | -#define glXCreateContextWithConfigSGIX pfnProxyCreateContextWithConfigSGIX |
231 | -#define glXGetVisualFromFBConfigSGIX pfnProxyGetVisualFromFBConfigSGIX |
232 | -#define glXGetFBConfigFromVisualSGIX pfnProxyGetFBConfigFromVisualSGIX |
233 | -#define glXCreateGLXPbufferSGIX pfnProxyCreateGLXPbufferSGIX |
234 | -#define glXDestroyGLXPbufferSGIX pfnProxyDestroyGLXPbufferSGIX |
235 | -#define glXQueryGLXPbufferSGIX pfnProxyQueryGLXPbufferSGIX |
236 | -#define glXSelectEventSGIX pfnProxySelectEventSGIX |
237 | -#define glXGetSelectedEventSGIX pfnProxyGetSelectedEventSGIX |
238 | -#define glXCushionSGI pfnProxyCushionSGI |
239 | -#define glXBindChannelToWindowSGIX pfnProxyBindChannelToWindowSGIX |
240 | -#define glXChannelRectSGIX pfnProxyChannelRectSGIX |
241 | -#define glXQueryChannelRectSGIX pfnProxyQueryChannelRectSGIX |
242 | -#define glXQueryChannelDeltasSGIX pfnProxyQueryChannelDeltasSGIX |
243 | -#define glXChannelRectSyncSGIX pfnProxyChannelRectSyncSGIX |
244 | -#ifdef _DM_BUFFER_H |
245 | -#define glXAssociateDMPbufferSGIX pfnProxyAssociateDMPbufferSGIX |
246 | -#endif |
247 | -#define glXJoinSwapGroupSGIX pfnProxyJoinSwapGroupSGIX |
248 | -#define glXBindSwapBarrierSGIX pfnProxyBindSwapBarrierSGIX |
249 | -#define glXQueryMaxSwapBarriersSGIX pfnProxyQueryMaxSwapBarriersSGIX |
250 | -#define glXGetTransparentIndexSUN pfnProxyGetTransparentIndexSUN |
251 | -#define glXCopySubBufferMESA pfnProxyCopySubBufferMESA |
252 | -#define glXCreateGLXPixmapMESA pfnProxyCreateGLXPixmapMESA |
253 | -#define glXReleaseBuffersMESA pfnProxyReleaseBuffersMESA |
254 | -#define glXSet3DfxModeMESA pfnProxySet3DfxModeMESA |
255 | -#define glXGetSyncValuesOML pfnProxyGetSyncValuesOML |
256 | -#define glXGetMscRateOML pfnProxyGetMscRateOML |
257 | -#define glXSwapBuffersMscOML pfnProxySwapBuffersMscOML |
258 | -#define glXWaitForMscOML pfnProxyWaitForMscOML |
259 | -#define glXWaitForSbcOML pfnProxyWaitForSbcOML |
260 | -#define glXQueryHyperpipeNetworkSGIX pfnProxyQueryHyperpipeNetworkSGIX |
261 | -#define glXHyperpipeConfigSGIX pfnProxyHyperpipeConfigSGIX |
262 | -#define glXQueryHyperpipeConfigSGIX pfnProxyQueryHyperpipeConfigSGIX |
263 | -#define glXDestroyHyperpipeConfigSGIX pfnProxyDestroyHyperpipeConfigSGIX |
264 | -#define glXBindHyperpipeSGIX pfnProxyBindHyperpipeSGIX |
265 | -#define glXQueryHyperpipeBestAttribSGIX pfnProxyQueryHyperpipeBestAttribSGIX |
266 | -#define glXHyperpipeAttribSGIX pfnProxyHyperpipeAttribSGIX |
267 | -#define glXQueryHyperpipeAttribSGIX pfnProxyQueryHyperpipeAttribSGIX |
268 | -#define glXGetAGPOffsetMESA pfnProxyGetAGPOffsetMESA |
269 | -#define glXBindTexImageEXT pfnProxyBindTexImageEXT |
270 | -#define glXReleaseTexImageEXT pfnProxyReleaseTexImageEXT |
271 | -#define glXEnumerateVideoDevicesNV pfnProxyEnumerateVideoDevicesNV |
272 | -#define glXBindVideoDeviceNV pfnProxyBindVideoDeviceNV |
273 | -#define glXGetVideoDeviceNV pfnProxyBindVideoDeviceNV |
274 | -#define glXReleaseVideoDeviceNV pfnProxyReleaseVideoDeviceNV |
275 | -#define glXBindVideoImageNV pfnProxyBindVideoImageNV |
276 | -#define glXReleaseVideoImageNV pfnProxyReleaseVideoImageNV |
277 | -#define glXSendPbufferToVideoNV pfnProxySendPbufferToVideoNV |
278 | -#define glXGetVideoInfoNV pfnProxyGetVideoInfoNV |
279 | -#define glXJoinSwapGroupNV pfnProxyJoinSwapGroupNV |
280 | -#define glXBindSwapBarrierNV pfnProxyBindSwapBarrierNV |
281 | -#define glXQuerySwapGroupNV pfnProxyQuerySwapGroupNV |
282 | -#define glXQueryMaxSwapGroupsNV pfnProxyQueryMaxSwapGroupsNV |
283 | -#define glXQueryFrameCountNV pfnProxyQueryFrameCountNV |
284 | -#define glXResetFrameCountNV pfnProxyResetFrameCountNV |
285 | -#define glXBindVideoCaptureDeviceNV pfnProxyBindVideoCaptureDeviceNV |
286 | -#define glXEnumerateVideoCaptureDevicesNV pfnProxyEnumerateVideoCaptureDevicesNV |
287 | -#define glXLockVideoCaptureDeviceNV pfnProxyLockVideoCaptureDeviceNV |
288 | -#define glXQueryVideoCaptureDeviceNV pfnProxyQueryVideoCaptureDeviceNV |
289 | -#define glXReleaseVideoCaptureDeviceNV pfnProxyReleaseVideoCaptureDeviceNV |
290 | -#define glXSwapIntervalEXT pfnProxySwapIntervalEXT |
291 | -#define glXCopyImageSubDataNV pfnProxyCopyImageSubDataNV |
292 | -#define glXSwapIntervalMESA pfnProxySwapIntervalMESA |
293 | -#define glXGetSwapIntervalMESA pfnProxyGetSwapIntervalMESA |
294 | - |
295 | -/* --------------------------------------------------------------------------------------------- |
296 | - * export proxy functions |
297 | - * -------------------------------------------------------------------------------------------*/ |
298 | -extern PFNPROXYCREATECONTEXTATTRIBSARBPROC pfnProxyCreateContextAttribsARB; |
299 | -extern PFNPROXYSWAPINTERVALSGIPROC pfnProxySwapIntervalSGI; |
300 | -extern PFNPROXYGETVIDEOSYNCSGIPROC pfnProxyGetVideoSyncSGI; |
301 | -extern PFNPROXYWAITVIDEOSYNCSGIPROC pfnProxyWaitVideoSyncSGI; |
302 | -extern PFNPROXYMAKECURRENTREADSGIPROC pfnProxyMakeCurrentReadSGI; |
303 | -extern PFNPROXYGETCURRENTREADDRAWABLESGIPROC pfnProxyGetCurrentReadDrawableSGI; |
304 | -#ifdef _VL_H |
305 | -extern PFNPROXYCREATEGLXVIDEOSOURCESGIXPROC pfnProxyCreateGLXVideoSourceSGIX; |
306 | -extern PFNPROXYDESTROYGLXVIDEOSOURCESGIXPROC pfnProxyDestroyGLXVideoSourceSGIX; |
307 | -#endif |
308 | -extern PFNPROXYGETCURRENTDISPLAYEXTPROC pfnProxyGetCurrentDisplayEXT; |
309 | -extern PFNPROXYQUERYCONTEXTINFOEXTPROC pfnProxyQueryContextInfoEXT; |
310 | -extern PFNPROXYGETCONTEXTIDEXTPROC pfnProxyGetContextIDEXT; |
311 | -extern PFNPROXYIMPORTCONTEXTEXTPROC pfnProxyImportContextEXT; |
312 | -extern PFNPROXYFREECONTEXTEXTPROC pfnProxyFreeContextEXT; |
313 | -extern PFNPROXYGETFBCONFIGATTRIBSGIXPROC pfnProxyGetFBConfigAttribSGIX; |
314 | -extern PFNPROXYCHOOSEFBCONFIGSGIXPROC pfnProxyChooseFBConfigSGIX; |
315 | -extern PFNPROXYCREATEGLXPIXMAPWITHCONFIGSGIXPROC pfnProxyCreateGLXPixmapWithConfigSGIX; |
316 | -extern PFNPROXYCREATECONTEXTWITHCONFIGSGIXPROC pfnProxyCreateContextWithConfigSGIX; |
317 | -extern PFNPROXYGETVISUALFROMFBCONFIGSGIXPROC pfnProxyGetVisualFromFBConfigSGIX; |
318 | -extern PFNPROXYGETFBCONFIGFROMVISUALSGIXPROC pfnProxyGetFBConfigFromVisualSGIX; |
319 | -extern PFNPROXYCREATEGLXPBUFFERSGIXPROC pfnProxyCreateGLXPbufferSGIX; |
320 | -extern PFNPROXYDESTROYGLXPBUFFERSGIXPROC pfnProxyDestroyGLXPbufferSGIX; |
321 | -extern PFNPROXYQUERYGLXPBUFFERSGIXPROC pfnProxyQueryGLXPbufferSGIX; |
322 | -extern PFNPROXYSELECTEVENTSGIXPROC pfnProxySelectEventSGIX; |
323 | -extern PFNPROXYGETSELECTEDEVENTSGIXPROC pfnProxyGetSelectedEventSGIX; |
324 | -extern PFNPROXYCUSHIONSGIPROC pfnProxyCushionSGI; |
325 | -extern PFNPROXYBINDCHANNELTOWINDOWSGIXPROC pfnProxyBindChannelToWindowSGIX; |
326 | -extern PFNPROXYCHANNELRECTSGIXPROC pfnProxyChannelRectSGIX; |
327 | -extern PFNPROXYQUERYCHANNELRECTSGIXPROC pfnProxyQueryChannelRectSGIX; |
328 | -extern PFNPROXYQUERYCHANNELDELTASSGIXPROC pfnProxyQueryChannelDeltasSGIX; |
329 | -extern PFNPROXYCHANNELRECTSYNCSGIXPROC pfnProxyChannelRectSyncSGIX; |
330 | -#ifdef _DM_BUFFER_H |
331 | -extern PFNPROXYASSOCIATEDMPBUFFERSGIXPROC pfnProxyAssociateDMPbufferSGIX; |
332 | -#endif |
333 | -extern PFNPROXYJOINSWAPGROUPSGIXPROC pfnProxyJoinSwapGroupSGIX; |
334 | -extern PFNPROXYBINDSWAPBARRIERSGIXPROC pfnProxyBindSwapBarrierSGIX; |
335 | -extern PFNPROXYQUERYMAXSWAPBARRIERSSGIXPROC pfnProxyQueryMaxSwapBarriersSGIX; |
336 | -extern PFNPROXYGETTRANSPARENTINDEXSUNPROC pfnProxyGetTransparentIndexSUN; |
337 | -extern PFNPROXYCOPYSUBBUFFERMESAPROC pfnProxyCopySubBufferMESA; |
338 | -extern PFNPROXYCREATEGLXPIXMAPMESAPROC pfnProxyCreateGLXPixmapMESA; |
339 | -extern PFNPROXYRELEASEBUFFERSMESAPROC pfnProxyReleaseBuffersMESA; |
340 | -extern PFNPROXYSET3DFXMODEMESAPROC pfnProxySet3DfxModeMESA; |
341 | -extern PFNPROXYGETSYNCVALUESOMLPROC pfnProxyGetSyncValuesOML; |
342 | -extern PFNPROXYGETMSCRATEOMLPROC pfnProxyGetMscRateOML; |
343 | -extern PFNPROXYSWAPBUFFERSMSCOMLPROC pfnProxySwapBuffersMscOML; |
344 | -extern PFNPROXYWAITFORMSCOMLPROC pfnProxyWaitForMscOML; |
345 | -extern PFNPROXYWAITFORSBCOMLPROC pfnProxyWaitForSbcOML; |
346 | -extern PFNPROXYQUERYHYPERPIPENETWORKSGIXPROC pfnProxyQueryHyperpipeNetworkSGIX; |
347 | -extern PFNPROXYHYPERPIPECONFIGSGIXPROC pfnProxyHyperpipeConfigSGIX; |
348 | -extern PFNPROXYQUERYHYPERPIPECONFIGSGIXPROC pfnProxyQueryHyperpipeConfigSGIX; |
349 | -extern PFNPROXYDESTROYHYPERPIPECONFIGSGIXPROC pfnProxyDestroyHyperpipeConfigSGIX; |
350 | -extern PFNPROXYBINDHYPERPIPESGIXPROC pfnProxyBindHyperpipeSGIX; |
351 | -extern PFNPROXYQUERYHYPERPIPEBESTATTRIBSGIXPROC pfnProxyQueryHyperpipeBestAttribSGIX; |
352 | -extern PFNPROXYHYPERPIPEATTRIBSGIXPROC pfnProxyHyperpipeAttribSGIX; |
353 | -extern PFNPROXYQUERYHYPERPIPEATTRIBSGIXPROC pfnProxyQueryHyperpipeAttribSGIX; |
354 | -extern PFNPROXYGETAGPOFFSETMESAPROC pfnProxyGetAGPOffsetMESA; |
355 | -extern PFNPROXYBINDTEXIMAGEEXTPROC pfnProxyBindTexImageEXT; |
356 | -extern PFNPROXYRELEASETEXIMAGEEXTPROC pfnProxyReleaseTexImageEXT; |
357 | -extern PFNPROXYENUMERATEVIDEODEVICESNVPROC pfnProxyEnumerateVideoDevicesNV; |
358 | -extern PFNPROXYBINDVIDEODEVICENVPROC pfnProxyBindVideoDeviceNV; |
359 | -extern PFNPROXYGETVIDEODEVICENVPROC pfnProxyGetVideoDeviceNV; |
360 | -extern PFNPROXYRELEASEVIDEODEVICENVPROC pfnProxyReleaseVideoDeviceNV; |
361 | -extern PFNPROXYBINDVIDEOIMAGENVPROC pfnProxyBindVideoImageNV; |
362 | -extern PFNPROXYRELEASEVIDEOIMAGENVPROC pfnProxyReleaseVideoImageNV; |
363 | -extern PFNPROXYSENDPBUFFERTOVIDEONVPROC pfnProxySendPbufferToVideoNV; |
364 | -extern PFNPROXYGETVIDEOINFONVPROC pfnProxyGetVideoInfoNV; |
365 | -extern PFNPROXYJOINSWAPGROUPNVPROC pfnProxyJoinSwapGroupNV; |
366 | -extern PFNPROXYBINDSWAPBARRIERNVPROC pfnProxyBindSwapBarrierNV; |
367 | -extern PFNPROXYQUERYSWAPGROUPNVPROC pfnProxyQuerySwapGroupNV; |
368 | -extern PFNPROXYQUERYMAXSWAPGROUPSNVPROC pfnProxyQueryMaxSwapGroupsNV; |
369 | -extern PFNPROXYQUERYFRAMECOUNTNVPROC pfnProxyQueryFrameCountNV; |
370 | -extern PFNPROXYRESETFRAMECOUNTNVPROC pfnProxyResetFrameCountNV; |
371 | -extern PFNPROXYBINDVIDEOCAPTUREDEVICENVPROC pfnProxyBindVideoCaptureDeviceNV; |
372 | -extern PFNPROXYENUMERATEVIDEOCAPTUREDEVICESNVPROC pfnProxyEnumerateVideoCaptureDevicesNV; |
373 | -extern PFNPROXYLOCKVIDEOCAPTUREDEVICENVPROC pfnProxyLockVideoCaptureDeviceNV; |
374 | -extern PFNPROXYQUERYVIDEOCAPTUREDEVICENVPROC pfnProxyQueryVideoCaptureDeviceNV; |
375 | -extern PFNPROXYRELEASEVIDEOCAPTUREDEVICENVPROC pfnProxyReleaseVideoCaptureDeviceNV; |
376 | -extern PFNPROXYSWAPINTERVALEXTPROC pfnProxySwapIntervalEXT; |
377 | -extern PFNPROXYCOPYIMAGESUBDATANVPROC pfnProxyCopyImageSubDataNV; |
378 | -extern PFNPROXYSWAPINTERVALMESAPROC pfnProxySwapIntervalMESA; |
379 | -extern PFNPROXYGETSWAPINTERVALMESAPROC pfnProxyGetSwapIntervalMESA; |
380 | - |
381 | #ifdef __cplusplus |
382 | } |
383 | #endif |
384 | |
385 | === modified file 'src/egldef.h' |
386 | --- src/egldef.h 2011-04-29 22:01:08 +0000 |
387 | +++ src/egldef.h 2011-10-19 11:31:30 +0000 |
388 | @@ -20,7 +20,9 @@ |
389 | */ |
390 | |
391 | /* |
392 | - * Authored-by: Jammy Zhou <jammy.zhou@linaro.org> |
393 | + * Authors: |
394 | + * Jammy Zhou <jammy.zhou@linaro.org> |
395 | + * Marc Ordinas i Llopis, Collabora Ltd <marc.ordinasillopis@linaro.org> |
396 | */ |
397 | |
398 | #define LIBEGL_PATH "/usr/lib/libEGL.so" |
399 | @@ -39,6 +41,12 @@ |
400 | #define EGL_NO_CONTEXT ((EGLContext)0) |
401 | #define EGL_NO_SURFACE ((EGLSurface)0) |
402 | |
403 | +/* QueryString targets */ |
404 | +#define EGL_VENDOR 0x3053 |
405 | +#define EGL_VERSION 0x3054 |
406 | +#define EGL_EXTENSIONS 0x3055 |
407 | +#define EGL_CLIENT_APIS 0x308D |
408 | + |
409 | #define EGL_OPENGL_ES_API 0x30A0 |
410 | #define EGL_OPENGL_API 0x30A2 |
411 | |
412 | @@ -52,6 +60,7 @@ |
413 | #define EGL_WIDTH 0x3057 |
414 | |
415 | typedef void * (*PFNPROXYEGLGETPROCADDRESSPROC)( char const *procName); |
416 | +typedef char const * (*PFNPROXYEGLQUERYSTRINGPROC)(EGLDisplay display, EGLint name); |
417 | typedef EGLDisplay (*PFNPROXYEGLGETDISPLAYPROC)(EGLNativeDisplayType display_id); |
418 | typedef EGLBoolean (*PFNPROXYEGLINITIALIZEPROC)(EGLDisplay dpy, EGLint *major, EGLint *minor); |
419 | typedef EGLBoolean (*PFNPROXYEGLTERMINATEPROC)(EGLDisplay dpy); |
420 | |
421 | === modified file 'src/gl_proxy.c' |
422 | --- src/gl_proxy.c 2011-04-29 22:01:08 +0000 |
423 | +++ src/gl_proxy.c 2011-10-19 11:31:30 +0000 |
424 | @@ -20,7 +20,9 @@ |
425 | */ |
426 | |
427 | /* |
428 | - * Authored-by: Jammy Zhou <jammy.zhou@linaro.org> |
429 | + * Authors: |
430 | + * Jammy Zhou <jammy.zhou@linaro.org> |
431 | + * Marc Ordinas i Llopis, Collabora Ltd <marc.ordinasillopis@linaro.org> |
432 | */ |
433 | |
434 | #include <stdio.h> |
435 | @@ -195,6 +197,8 @@ |
436 | PFNPROXYGLXGETPROCADDRESSPROC pfnProxyGLXGetProcAddress = NULL; |
437 | PFNPROXYEGLGETPROCADDRESSPROC pfnProxyEGLGetProcAddress = NULL; |
438 | |
439 | +PFNPROXYEGLQUERYSTRINGPROC pfnProxyEGLQueryString = NULL; |
440 | + |
441 | /* EGL APIs needed for backend selection */ |
442 | PFNPROXYEGLGETDISPLAYPROC pfnProxyEGLGetDisplay = NULL; |
443 | PFNPROXYEGLINITIALIZEPROC pfnProxyEGLInitialize = NULL; |
444 | @@ -324,6 +328,7 @@ |
445 | return -1; |
446 | |
447 | pfnProxyEGLGetProcAddress = dlsym(proxy_context->egl_handle, "eglGetProcAddress"); |
448 | + pfnProxyEGLQueryString = dlsym(proxy_context->egl_handle, "eglQueryString"); |
449 | } |
450 | |
451 | return 0; |
452 | @@ -332,30 +337,88 @@ |
453 | void *glProxyGetProcAddr(void *handle, const char *name) |
454 | { |
455 | if (pfnProxyGLXGetProcAddress) { |
456 | - return (*pfnProxyGLXGetProcAddress)(name); |
457 | + return (*pfnProxyGLXGetProcAddress)((const GLubyte *)name); |
458 | } |
459 | else if (pfnProxyGLXGetProcAddressARB) { |
460 | - return (*pfnProxyGLXGetProcAddressARB)(name); |
461 | + return (*pfnProxyGLXGetProcAddressARB)((const GLubyte *)name); |
462 | } |
463 | else { |
464 | return dlsym(handle, name); |
465 | } |
466 | } |
467 | |
468 | -void *glProxyGetExtProcAddr(void *handle, const char *name) |
469 | -{ |
470 | - if (pfnProxyEGLGetProcAddress) { |
471 | +static GLboolean glProxyCheckExtension(const char *list, const char *name) |
472 | +{ |
473 | + size_t len = strlen(name); |
474 | + const char *ext_ptr = list; |
475 | + |
476 | + if(ext_ptr == NULL) |
477 | + return GL_FALSE; |
478 | + |
479 | + while ((ext_ptr = strstr(ext_ptr, name)) != NULL) { |
480 | + if (ext_ptr[len] == ' ' || ext_ptr[len] == '\0') |
481 | + break; |
482 | + ext_ptr += len; |
483 | + } |
484 | + |
485 | + return (ext_ptr != NULL)? GL_TRUE : GL_FALSE; |
486 | +} |
487 | + |
488 | +GLboolean glProxyHasExtension(const char *extension) |
489 | +{ |
490 | + char const *backend_extensions = NULL; |
491 | + char const *gl_extensions = NULL; |
492 | + |
493 | + if (global_proxy_context.current_backend == UNKNOWN_BACKEND) |
494 | + return GL_FALSE; |
495 | + |
496 | + /* Get the backend extensions string */ |
497 | + if (global_proxy_context.current_backend == OPENGL_BACKEND && |
498 | + pfnProxyQueryExtensionsString) { |
499 | + |
500 | + if (!global_proxy_context.x_dpy) { |
501 | + global_proxy_context.x_dpy = XOpenDisplay(NULL); |
502 | + } |
503 | + |
504 | + backend_extensions = pfnProxyQueryExtensionsString( |
505 | + global_proxy_context.x_dpy, |
506 | + DefaultScreen(global_proxy_context.x_dpy)); |
507 | + } else if (global_proxy_context.current_backend == OPENGL_ES20_BACKEND && |
508 | + pfnProxyEGLQueryString) { |
509 | + |
510 | + backend_extensions = pfnProxyEGLQueryString( |
511 | + (EGLDisplay)global_proxy_context.egl_dpy, |
512 | + EGL_EXTENSIONS); |
513 | + } |
514 | + |
515 | + /* Get the GL extensions string */ |
516 | + if (pfnProxyGetString) |
517 | + gl_extensions = (const char *)pfnProxyGetString(GL_EXTENSIONS); |
518 | + |
519 | + /* Check if present */ |
520 | + if (glProxyCheckExtension(backend_extensions, extension) || |
521 | + glProxyCheckExtension(gl_extensions, extension)) |
522 | + return GL_TRUE; |
523 | + |
524 | + return GL_FALSE; |
525 | +} |
526 | + |
527 | +void *glProxyGetExtProcAddr(const char *extension, const char *name) |
528 | +{ |
529 | + if (!glProxyHasExtension(extension)) |
530 | + return NULL; |
531 | + |
532 | + if (pfnProxyEGLGetProcAddress) { |
533 | return (*pfnProxyEGLGetProcAddress)(name); |
534 | } |
535 | else if (pfnProxyGLXGetProcAddress) { |
536 | - return (*pfnProxyGLXGetProcAddress)(name); |
537 | + return (*pfnProxyGLXGetProcAddress)((const GLubyte *)name); |
538 | } |
539 | else if (pfnProxyGLXGetProcAddressARB) { |
540 | - return (*pfnProxyGLXGetProcAddressARB)(name); |
541 | - } |
542 | - else { |
543 | - return dlsym(handle, name); |
544 | - } |
545 | + return (*pfnProxyGLXGetProcAddressARB)((const GLubyte *)name); |
546 | + } |
547 | + |
548 | + return NULL; |
549 | } |
550 | |
551 | static const char *glProxyGetGLRenderer(Display *dpy) |
552 | @@ -388,7 +451,7 @@ |
553 | |
554 | (*pfnProxyMakeCurrent)(dpy, root, glx_ctx); |
555 | |
556 | - renderer = (*pfnProxyGetString)(GL_RENDERER); |
557 | + renderer = (const char *)(*pfnProxyGetString)(GL_RENDERER); |
558 | |
559 | (*pfnProxyMakeCurrent)(dpy, None, NULL); |
560 | |
561 | @@ -406,20 +469,20 @@ |
562 | const char *gles2_renderer = NULL; |
563 | |
564 | if (OPENGL_BACKEND == option) { |
565 | - if (proxy_context->gl_handle = glProxyOpenLibrary(opengl_libraries[OPENGL_BACKEND])) { |
566 | + if ((proxy_context->gl_handle = glProxyOpenLibrary(opengl_libraries[OPENGL_BACKEND]))) { |
567 | *pProxyBackend = OPENGL_BACKEND; |
568 | } |
569 | - else if (proxy_context->gles2_handle = glProxyOpenLibrary(opengl_libraries[OPENGL_ES20_BACKEND])) { |
570 | + else if ((proxy_context->gles2_handle = glProxyOpenLibrary(opengl_libraries[OPENGL_ES20_BACKEND]))) { |
571 | *pProxyBackend = OPENGL_ES20_BACKEND; |
572 | } |
573 | else { |
574 | *pProxyBackend = UNKNOWN_BACKEND; |
575 | } |
576 | } else if (OPENGL_ES20_BACKEND == option) { |
577 | - if (proxy_context->gles2_handle = glProxyOpenLibrary(opengl_libraries[OPENGL_ES20_BACKEND])) { |
578 | + if ((proxy_context->gles2_handle = glProxyOpenLibrary(opengl_libraries[OPENGL_ES20_BACKEND]))) { |
579 | *pProxyBackend = OPENGL_ES20_BACKEND; |
580 | } |
581 | - else if (proxy_context->gl_handle = glProxyOpenLibrary(opengl_libraries[OPENGL_BACKEND])) { |
582 | + else if ((proxy_context->gl_handle = glProxyOpenLibrary(opengl_libraries[OPENGL_BACKEND]))) { |
583 | *pProxyBackend = OPENGL_BACKEND; |
584 | } |
585 | else { |
586 | @@ -464,7 +527,7 @@ |
587 | |
588 | CreateEGLRenderingContext(dpy, proxy_context); |
589 | |
590 | - gles2_renderer = pfnProxyGetString(GL_RENDERER); |
591 | + gles2_renderer = (const char *)pfnProxyGetString(GL_RENDERER); |
592 | |
593 | /* Reset the function pointers */ |
594 | pfnProxyGetString = NULL; |
595 | @@ -719,13 +782,13 @@ |
596 | return 0; |
597 | } |
598 | |
599 | -extern int glProxyExtInitGLES2(void *handle); |
600 | -extern int glProxyExtInitGL(void *handle); |
601 | extern int glxProxyInit(void *handle); |
602 | -extern int glxProxyExtInit(void *handle); |
603 | |
604 | int glProxyInit(PROXY_BACKEND_OPTION *pProxyBackend) |
605 | { |
606 | + global_proxy_context.current_backend = UNKNOWN_BACKEND; |
607 | + global_proxy_context.x_dpy = NULL; |
608 | + |
609 | /* Select backend first */ |
610 | glProxyBackendSelection(pProxyBackend, &global_proxy_context); |
611 | |
612 | @@ -743,13 +806,10 @@ |
613 | /* Resolve symbols */ |
614 | if (OPENGL_BACKEND == global_proxy_context.current_backend) { |
615 | glProxyCoreInit(global_proxy_context.gl_handle); |
616 | - glProxyExtInitGL(global_proxy_context.gl_handle); |
617 | glxProxyInit(global_proxy_context.gl_handle); |
618 | - glxProxyExtInit(global_proxy_context.gl_handle); |
619 | } |
620 | else if (OPENGL_ES20_BACKEND == global_proxy_context.current_backend) { |
621 | glProxyCoreInit(global_proxy_context.gles2_handle); |
622 | - glProxyExtInitGLES2(global_proxy_context.gles2_handle); |
623 | } |
624 | else { |
625 | /* should not get here */ |
626 | |
627 | === removed file 'src/glext_proxy.c' |
628 | --- src/glext_proxy.c 2011-02-24 04:52:03 +0000 |
629 | +++ src/glext_proxy.c 1970-01-01 00:00:00 +0000 |
630 | @@ -1,168 +0,0 @@ |
631 | -/* Copyright (C) 2010-2011 Linaro Ltd. |
632 | - * |
633 | - * Permission is hereby granted, free of charge, to any person obtaining a copy |
634 | - * of this software and associated documentation files (the "Software"), to deal |
635 | - * in the Software without restriction, including without limitation the rights |
636 | - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
637 | - * copies of the Software, and to permit persons to whom the Software is |
638 | - * furnished to do so, subject to the following conditions: |
639 | - * |
640 | - * The above copyright notice and this permission notice shall be included in |
641 | - * all copies or substantial portions of the Software. |
642 | - * |
643 | - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
644 | - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
645 | - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
646 | - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
647 | - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
648 | - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
649 | - * THE SOFTWARE. |
650 | - */ |
651 | - |
652 | -/* |
653 | - * Authored-by: Jammy Zhou <jammy.zhou@linaro.org> |
654 | - */ |
655 | - |
656 | -#include <stdlib.h> |
657 | - |
658 | -#include <GL/gl_proxy.h> |
659 | -#include <GL/glext_proxy.h> |
660 | - |
661 | -/* proxy functions for GLES2 extensions */ |
662 | -PFNPROXYEGLIMAGETARGETTEXTURE2DOESPROC pfnProxyEGLImageTargetTexture2DOES = NULL; |
663 | -PFNPROXYEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC pfnProxyEGLImageTargetRenderbufferStorageOES = NULL; |
664 | -PFNPROXYGETPROGRAMBINARYOESPROC pfnProxyGetProgramBinaryOES = NULL; |
665 | -PFNPROXYPROGRAMBINARYOESPROC pfnProxyProgramBinaryOES = NULL; |
666 | -PFNPROXYMAPBUFFEROESPROC pfnProxyMapBufferOES = NULL; |
667 | -PFNPROXYUNMAPBUFFEROESPROC pfnProxyUnmapBufferOES = NULL; |
668 | -PFNPROXYGETBUFFERPOINTERVOESPROC pfnProxyGetBufferPointervOES = NULL; |
669 | -PFNPROXYTEXIMAGE3DOESPROC pfnProxyTexImage3DOES = NULL; |
670 | -PFNPROXYTEXSUBIMAGE3DOESPROC pfnProxyTexSubImage3DOES = NULL; |
671 | -PFNPROXYCOPYTEXSUBIMAGE3DOESPROC pfnProxyCopyTexSubImage3DOES = NULL; |
672 | -PFNPROXYCOMPRESSEDTEXIMAGE3DOESPROC pfnProxyCompressedTexImage3DOES = NULL; |
673 | -PFNPROXYCOMPRESSEDTEXSUBIMAGE3DOESPROC pfnProxyCompressedTexSubImage3DOES = NULL; |
674 | -PFNPROXYFRAMEBUFFERTEXTURE3DOESPROC pfnProxyFramebufferTexture3DOES = NULL; |
675 | -PFNPROXYBINDVERTEXARRAYOESPROC pfnProxyBindVertexArrayOES = NULL; |
676 | -PFNPROXYDELETEVERTEXARRAYSOESPROC pfnProxyDeleteVertexArraysOES = NULL; |
677 | -PFNPROXYGENVERTEXARRAYSOESPROC pfnProxyGenVertexArraysOES = NULL; |
678 | -PFNPROXYISVERTEXARRAYOESPROC pfnProxyIsVertexArrayOES = NULL; |
679 | -PFNPROXYGETPERFMONITORGROUPSAMDPROC pfnProxyGetPerfMonitorGroupsAMD = NULL; |
680 | -PFNPROXYGETPERFMONITORCOUNTERSAMDPROC pfnProxyGetPerfMonitorCountersAMD = NULL; |
681 | -PFNPROXYGETPERFMONITORGROUPSTRINGAMDPROC pfnProxyGetPerfMonitorGroupStringAMD = NULL; |
682 | -PFNPROXYGETPERFMONITORCOUNTERSTRINGAMDPROC pfnProxyGetPerfMonitorCounterStringAMD = NULL; |
683 | -PFNPROXYGETPERFMONITORCOUNTERINFOAMDPROC pfnProxyGetPerfMonitorCounterInfoAMD = NULL; |
684 | -PFNPROXYGENPERFMONITORSAMDPROC pfnProxyGenPerfMonitorsAMD = NULL; |
685 | -PFNPROXYDELETEPERFMONITORSAMDPROC pfnProxyDeletePerfMonitorsAMD = NULL; |
686 | -PFNPROXYSELECTPERFMONITORCOUNTERSAMDPROC pfnProxySelectPerfMonitorCountersAMD = NULL; |
687 | -PFNPROXYBEGINPERFMONITORAMDPROC pfnProxyBeginPerfMonitorAMD = NULL; |
688 | -PFNPROXYENDPERFMONITORAMDPROC pfnProxyEndPerfMonitorAMD = NULL; |
689 | -PFNPROXYGETPERFMONITORCOUNTERDATAAMDPROC pfnProxyGetPerfMonitorCounterDataAMD = NULL; |
690 | -PFNPROXYDISCARDFRAMEBUFFEREXTPROC pfnProxyDiscardFramebufferEXT = NULL; |
691 | -PFNPROXYMULTIDRAWARRAYSEXTPROC pfnProxyMultiDrawArraysEXT = NULL; |
692 | -PFNPROXYMULTIDRAWELEMENTSEXTPROC pfnProxyMultiDrawElementsEXT = NULL; |
693 | -PFNPROXYRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC pfnProxyRenderbufferStorageMultisampleIMG = NULL; |
694 | -PFNPROXYFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC pfnProxyFramebufferTexture2DMultisampleIMG = NULL; |
695 | -PFNPROXYDELETEFENCESNVPROC pfnProxyDeleteFencesNV = NULL; |
696 | -PFNPROXYGENFENCESNVPROC pfnProxyGenFencesNV = NULL; |
697 | -PFNPROXYISFENCENVPROC pfnProxyIsFenceNV = NULL; |
698 | -PFNPROXYTESTFENCENVPROC pfnProxyTestFenceNV = NULL; |
699 | -PFNPROXYGETFENCEIVNVPROC pfnProxyGetFenceivNV = NULL; |
700 | -PFNPROXYFINISHFENCENVPROC pfnProxyFinishFenceNV = NULL; |
701 | -PFNPROXYSETFENCENVPROC pfnProxySetFenceNV = NULL; |
702 | -PFNPROXYCOVERAGEMASKNVPROC pfnProxyCoverageMaskNV = NULL; |
703 | -PFNPROXYCOVERAGEOPERATIONNVPROC pfnProxyCoverageOperationNV = NULL; |
704 | -PFNPROXYGETDRIVERCONTROLSQCOMPROC pfnProxyGetDriverControlsQCOM = NULL; |
705 | -PFNPROXYGETDRIVERCONTROLSTRINGQCOMPROC pfnProxyGetDriverControlStringQCOM = NULL; |
706 | -PFNPROXYENABLEDRIVERCONTROLQCOMPROC pfnProxyEnableDriverControlQCOM = NULL; |
707 | -PFNPROXYDISABLEDRIVERCONTROLQCOMPROC pfnProxyDisableDriverControlQCOM = NULL; |
708 | -PFNPROXYEXTGETTEXTURESQCOMPROC pfnProxyExtGetTexturesQCOM = NULL; |
709 | -PFNPROXYEXTGETBUFFERSQCOMPROC pfnProxyExtGetBuffersQCOM = NULL; |
710 | -PFNPROXYEXTGETRENDERBUFFERSQCOMPROC pfnProxyExtGetRenderbuffersQCOM = NULL; |
711 | -PFNPROXYEXTGETFRAMEBUFFERSQCOMPROC pfnProxyExtGetFramebuffersQCOM = NULL; |
712 | -PFNPROXYEXTGETTEXLEVELPARAMETERIVQCOMPROC pfnProxyExtGetTexLevelParameterivQCOM = NULL; |
713 | -PFNPROXYEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC pfnProxyExtTexObjectStateOverrideiQCOM = NULL; |
714 | -PFNPROXYEXTGETTEXSUBIMAGEQCOMPROC pfnProxyExtGetTexSubImageQCOM = NULL; |
715 | -PFNPROXYEXTGETBUFFERPOINTERVQCOMPROC pfnProxyExtGetBufferPointervQCOM = NULL; |
716 | -PFNPROXYEXTGETSHADERSQCOMPROC pfnProxyExtGetShadersQCOM = NULL; |
717 | -PFNPROXYEXTGETPROGRAMSQCOMPROC pfnProxyExtGetProgramsQCOM = NULL; |
718 | -PFNPROXYEXTISPROGRAMBINARYQCOMPROC pfnProxyExtIsProgramBinaryQCOM = NULL; |
719 | -PFNPROXYEXTGETPROGRAMBINARYSOURCEQCOMPROC pfnProxyExtGetProgramBinarySourceQCOM = NULL; |
720 | -PFNPROXYSTARTTILINGQCOMPROC pfnProxyStartTilingQCOM = NULL; |
721 | -PFNPROXYENDTILINGQCOMPROC pfnProxyEndTilingQCOM = NULL; |
722 | - |
723 | -/* Symbol resolve */ |
724 | -extern void *glProxyGetExtProcAddr(void *handle, const char *name); |
725 | - |
726 | -int glProxyExtInitGLES2(void *handle) |
727 | -{ |
728 | - if (NULL == handle) { |
729 | - return -1; |
730 | - } |
731 | - |
732 | - pfnProxyEGLImageTargetTexture2DOES = glProxyGetExtProcAddr(handle, "glEGLImageTargetTexture2DOES"); |
733 | - pfnProxyEGLImageTargetRenderbufferStorageOES = glProxyGetExtProcAddr(handle, "glEGLImageTargetRenderbufferStorageOES"); |
734 | - pfnProxyGetProgramBinaryOES = glProxyGetExtProcAddr(handle, "glGetProgramBinaryOES"); |
735 | - pfnProxyProgramBinaryOES = glProxyGetExtProcAddr(handle, "glProgramBinaryOES"); |
736 | - pfnProxyMapBufferOES = glProxyGetExtProcAddr(handle, "glMapBufferOES"); |
737 | - pfnProxyUnmapBufferOES = glProxyGetExtProcAddr(handle, "glUnmapBufferOES"); |
738 | - pfnProxyGetBufferPointervOES = glProxyGetExtProcAddr(handle, "glGetBufferPointervOES"); |
739 | - pfnProxyTexImage3DOES = glProxyGetExtProcAddr(handle, "glTexImage3DOES"); |
740 | - pfnProxyTexSubImage3DOES = glProxyGetExtProcAddr(handle, "glTexSubImage3DOES"); |
741 | - pfnProxyCopyTexSubImage3DOES = glProxyGetExtProcAddr(handle, "glCopyTexSubImage3DOES"); |
742 | - pfnProxyCompressedTexImage3DOES = glProxyGetExtProcAddr(handle, "glCompressedTexImage3DOES"); |
743 | - pfnProxyCompressedTexSubImage3DOES = glProxyGetExtProcAddr(handle, "glCompressedTexSubImage3DOES"); |
744 | - pfnProxyFramebufferTexture3DOES = glProxyGetExtProcAddr(handle, "glFramebufferTexture3DOES"); |
745 | - pfnProxyBindVertexArrayOES = glProxyGetExtProcAddr(handle, "glBindVertexArrayOES"); |
746 | - pfnProxyDeleteVertexArraysOES = glProxyGetExtProcAddr(handle, "glDeleteVertexArraysOES"); |
747 | - pfnProxyGenVertexArraysOES = glProxyGetExtProcAddr(handle, "glGenVertexArraysOES"); |
748 | - pfnProxyIsVertexArrayOES = glProxyGetExtProcAddr(handle, "glIsVertexArrayOES"); |
749 | - pfnProxyGetPerfMonitorGroupsAMD = glProxyGetExtProcAddr(handle, "glGetPerfMonitorGroupsAMD"); |
750 | - pfnProxyGetPerfMonitorCountersAMD = glProxyGetExtProcAddr(handle, "glGetPerfMonitorCountersAMD"); |
751 | - pfnProxyGetPerfMonitorGroupStringAMD = glProxyGetExtProcAddr(handle, "glGetPerfMonitorGroupStringAMD"); |
752 | - pfnProxyGetPerfMonitorCounterStringAMD = glProxyGetExtProcAddr(handle, "glGetPerfMonitorCounterStringAMD"); |
753 | - pfnProxyGetPerfMonitorCounterInfoAMD = glProxyGetExtProcAddr(handle, "glGetPerfMonitorCounterInfoAMD"); |
754 | - pfnProxyGenPerfMonitorsAMD = glProxyGetExtProcAddr(handle, "glGenPerfMonitorsAMD"); |
755 | - pfnProxyDeletePerfMonitorsAMD = glProxyGetExtProcAddr(handle, "glDeletePerfMonitorsAMD"); |
756 | - pfnProxySelectPerfMonitorCountersAMD = glProxyGetExtProcAddr(handle, "glSelectPerfMonitorCountersAMD"); |
757 | - pfnProxyBeginPerfMonitorAMD = glProxyGetExtProcAddr(handle, "glBeginPerfMonitorAMD"); |
758 | - pfnProxyEndPerfMonitorAMD = glProxyGetExtProcAddr(handle, "glEndPerfMonitorAMD"); |
759 | - pfnProxyGetPerfMonitorCounterDataAMD = glProxyGetExtProcAddr(handle, "glGetPerfMonitorCounterDataAMD"); |
760 | - pfnProxyDiscardFramebufferEXT = glProxyGetExtProcAddr(handle, "glDiscardFramebufferEXT"); |
761 | - pfnProxyMultiDrawArraysEXT = glProxyGetExtProcAddr(handle, "glMultiDrawArraysEXT"); |
762 | - pfnProxyMultiDrawElementsEXT = glProxyGetExtProcAddr(handle, "glMultiDrawElementsEXT"); |
763 | - pfnProxyRenderbufferStorageMultisampleIMG = glProxyGetExtProcAddr(handle, "glRenderbufferStorageMultisampleIMG"); |
764 | - pfnProxyFramebufferTexture2DMultisampleIMG = glProxyGetExtProcAddr(handle, "glFramebufferTexture2DMultisampleIMG"); |
765 | - pfnProxyDeleteFencesNV = glProxyGetExtProcAddr(handle, "glDeleteFencesNV"); |
766 | - pfnProxyGenFencesNV = glProxyGetExtProcAddr(handle, "glGenFencesNV"); |
767 | - pfnProxyIsFenceNV = glProxyGetExtProcAddr(handle, "glIsFenceNV"); |
768 | - pfnProxyTestFenceNV = glProxyGetExtProcAddr(handle, "glTestFenceNV"); |
769 | - pfnProxyGetFenceivNV = glProxyGetExtProcAddr(handle, "glGetFenceivNV"); |
770 | - pfnProxyFinishFenceNV = glProxyGetExtProcAddr(handle, "glFinishFenceNV"); |
771 | - pfnProxySetFenceNV = glProxyGetExtProcAddr(handle, "glSetFenceNV"); |
772 | - pfnProxyCoverageMaskNV = glProxyGetExtProcAddr(handle, "glCoverageMaskNV"); |
773 | - pfnProxyCoverageOperationNV = glProxyGetExtProcAddr(handle, "glCoverageOperationNV"); |
774 | - pfnProxyGetDriverControlsQCOM = glProxyGetExtProcAddr(handle, "glGetDriverControlsQCOM"); |
775 | - pfnProxyGetDriverControlStringQCOM = glProxyGetExtProcAddr(handle, "glGetDriverControlStringQCOM"); |
776 | - pfnProxyEnableDriverControlQCOM = glProxyGetExtProcAddr(handle, "glEnableDriverControlQCOM"); |
777 | - pfnProxyDisableDriverControlQCOM = glProxyGetExtProcAddr(handle, "glDisableDriverControlQCOM"); |
778 | - pfnProxyExtGetTexturesQCOM = glProxyGetExtProcAddr(handle, "glExtGetTexturesQCOM"); |
779 | - pfnProxyExtGetBuffersQCOM = glProxyGetExtProcAddr(handle, "glExtGetBuffersQCOM"); |
780 | - pfnProxyExtGetRenderbuffersQCOM = glProxyGetExtProcAddr(handle, "glExtGetRenderbuffersQCOM"); |
781 | - pfnProxyExtGetFramebuffersQCOM = glProxyGetExtProcAddr(handle, "glExtGetFramebuffersQCOM"); |
782 | - pfnProxyExtGetTexLevelParameterivQCOM = glProxyGetExtProcAddr(handle, "glExtGetTexLevelParameterivQCOM"); |
783 | - pfnProxyExtTexObjectStateOverrideiQCOM = glProxyGetExtProcAddr(handle, "glExtTexObjectStateOverrideiQCOM"); |
784 | - pfnProxyExtGetTexSubImageQCOM = glProxyGetExtProcAddr(handle, "glExtGetTexSubImageQCOM"); |
785 | - pfnProxyExtGetBufferPointervQCOM = glProxyGetExtProcAddr(handle, "glExtGetBufferPointervQCOM"); |
786 | - pfnProxyExtGetShadersQCOM = glProxyGetExtProcAddr(handle, "glExtGetShadersQCOM"); |
787 | - pfnProxyExtGetProgramsQCOM = glProxyGetExtProcAddr(handle, "glExtGetProgramsQCOM"); |
788 | - pfnProxyExtIsProgramBinaryQCOM = glProxyGetExtProcAddr(handle, "glExtIsProgramBinaryQCOM"); |
789 | - pfnProxyExtGetProgramBinarySourceQCOM = glProxyGetExtProcAddr(handle, "glExtGetProgramBinarySourceQCOM"); |
790 | - pfnProxyStartTilingQCOM = glProxyGetExtProcAddr(handle, "glStartTilingQCOM"); |
791 | - pfnProxyEndTilingQCOM = glProxyGetExtProcAddr(handle, "glEndTilingQCOM"); |
792 | -} |
793 | - |
794 | -int glProxyExtInitGL(void *handle) |
795 | -{ |
796 | - /* TODO */ |
797 | - return 0; |
798 | -} |
799 | |
800 | === modified file 'src/glx_proxy.c' |
801 | --- src/glx_proxy.c 2011-09-13 16:03:17 +0000 |
802 | +++ src/glx_proxy.c 2011-10-19 11:31:30 +0000 |
803 | @@ -20,7 +20,9 @@ |
804 | */ |
805 | |
806 | /* |
807 | - * Authored-by: Jammy Zhou <jammy.zhou@linaro.org> |
808 | + * Authors: |
809 | + * Jammy Zhou <jammy.zhou@linaro.org> |
810 | + * Marc Ordinas i Llopis, Collabora Ltd <marc.ordinasillopis@linaro.org> |
811 | */ |
812 | |
813 | #include <GL/gl_proxy.h> |
814 | @@ -66,92 +68,7 @@ |
815 | PFNPROXYSELECTEVENTPROC pfnProxySelectEvent = NULL; |
816 | PFNPROXYGETSELECTEDEVENTPROC pfnProxyGetSelectedEvent = NULL; |
817 | |
818 | -/* GLX extension functions */ |
819 | -PFNPROXYCREATECONTEXTATTRIBSARBPROC pfnProxyCreateContextAttribsARB = NULL; |
820 | -PFNPROXYSWAPINTERVALSGIPROC pfnProxySwapIntervalSGI = NULL; |
821 | -PFNPROXYGETVIDEOSYNCSGIPROC pfnProxyGetVideoSyncSGI = NULL; |
822 | -PFNPROXYWAITVIDEOSYNCSGIPROC pfnProxyWaitVideoSyncSGI = NULL; |
823 | -PFNPROXYMAKECURRENTREADSGIPROC pfnProxyMakeCurrentReadSGI = NULL; |
824 | -PFNPROXYGETCURRENTREADDRAWABLESGIPROC pfnProxyGetCurrentReadDrawableSGI = NULL; |
825 | -#ifdef _VL_H |
826 | -PFNPROXYCREATEGLXVIDEOSOURCESGIXPROC pfnProxyCreateGLXVideoSourceSGIX = NULL; |
827 | -PFNPROXYDESTROYGLXVIDEOSOURCESGIXPROC pfnProxyDestroyGLXVideoSourceSGIX = NULL; |
828 | -#endif |
829 | -PFNPROXYGETCURRENTDISPLAYEXTPROC pfnProxyGetCurrentDisplayEXT = NULL; |
830 | -PFNPROXYQUERYCONTEXTINFOEXTPROC pfnProxyQueryContextInfoEXT = NULL; |
831 | -PFNPROXYGETCONTEXTIDEXTPROC pfnProxyGetContextIDEXT = NULL; |
832 | -PFNPROXYIMPORTCONTEXTEXTPROC pfnProxyImportContextEXT = NULL; |
833 | -PFNPROXYFREECONTEXTEXTPROC pfnProxyFreeContextEXT = NULL; |
834 | -PFNPROXYGETFBCONFIGATTRIBSGIXPROC pfnProxyGetFBConfigAttribSGIX = NULL; |
835 | -PFNPROXYCHOOSEFBCONFIGSGIXPROC pfnProxyChooseFBConfigSGIX = NULL; |
836 | -PFNPROXYCREATEGLXPIXMAPWITHCONFIGSGIXPROC pfnProxyCreateGLXPixmapWithConfigSGIX = NULL; |
837 | -PFNPROXYCREATECONTEXTWITHCONFIGSGIXPROC pfnProxyCreateContextWithConfigSGIX = NULL; |
838 | -PFNPROXYGETVISUALFROMFBCONFIGSGIXPROC pfnProxyGetVisualFromFBConfigSGIX = NULL; |
839 | -PFNPROXYGETFBCONFIGFROMVISUALSGIXPROC pfnProxyGetFBConfigFromVisualSGIX = NULL; |
840 | -PFNPROXYCREATEGLXPBUFFERSGIXPROC pfnProxyCreateGLXPbufferSGIX = NULL; |
841 | -PFNPROXYDESTROYGLXPBUFFERSGIXPROC pfnProxyDestroyGLXPbufferSGIX = NULL; |
842 | -PFNPROXYQUERYGLXPBUFFERSGIXPROC pfnProxyQueryGLXPbufferSGIX = NULL; |
843 | -PFNPROXYSELECTEVENTSGIXPROC pfnProxySelectEventSGIX = NULL; |
844 | -PFNPROXYGETSELECTEDEVENTSGIXPROC pfnProxyGetSelectedEventSGIX = NULL; |
845 | -PFNPROXYCUSHIONSGIPROC pfnProxyCushionSGI = NULL; |
846 | -PFNPROXYBINDCHANNELTOWINDOWSGIXPROC pfnProxyBindChannelToWindowSGIX = NULL; |
847 | -PFNPROXYCHANNELRECTSGIXPROC pfnProxyChannelRectSGIX = NULL; |
848 | -PFNPROXYQUERYCHANNELRECTSGIXPROC pfnProxyQueryChannelRectSGIX = NULL; |
849 | -PFNPROXYQUERYCHANNELDELTASSGIXPROC pfnProxyQueryChannelDeltasSGIX = NULL; |
850 | -PFNPROXYCHANNELRECTSYNCSGIXPROC pfnProxyChannelRectSyncSGIX = NULL; |
851 | -#ifdef _DM_BUFFER_H |
852 | -PFNPROXYASSOCIATEDMPBUFFERSGIXPROC pfnProxyAssociateDMPbufferSGIX = NULL; |
853 | -#endif |
854 | -PFNPROXYJOINSWAPGROUPSGIXPROC pfnProxyJoinSwapGroupSGIX = NULL; |
855 | -PFNPROXYBINDSWAPBARRIERSGIXPROC pfnProxyBindSwapBarrierSGIX = NULL; |
856 | -PFNPROXYQUERYMAXSWAPBARRIERSSGIXPROC pfnProxyQueryMaxSwapBarriersSGIX = NULL; |
857 | -PFNPROXYGETTRANSPARENTINDEXSUNPROC pfnProxyGetTransparentIndexSUN = NULL; |
858 | -PFNPROXYCOPYSUBBUFFERMESAPROC pfnProxyCopySubBufferMESA = NULL; |
859 | -PFNPROXYCREATEGLXPIXMAPMESAPROC pfnProxyCreateGLXPixmapMESA = NULL; |
860 | -PFNPROXYRELEASEBUFFERSMESAPROC pfnProxyReleaseBuffersMESA = NULL; |
861 | -PFNPROXYSET3DFXMODEMESAPROC pfnProxySet3DfxModeMESA = NULL; |
862 | -PFNPROXYGETSYNCVALUESOMLPROC pfnProxyGetSyncValuesOML = NULL; |
863 | -PFNPROXYGETMSCRATEOMLPROC pfnProxyGetMscRateOML = NULL; |
864 | -PFNPROXYSWAPBUFFERSMSCOMLPROC pfnProxySwapBuffersMscOML = NULL; |
865 | -PFNPROXYWAITFORMSCOMLPROC pfnProxyWaitForMscOML = NULL; |
866 | -PFNPROXYWAITFORSBCOMLPROC pfnProxyWaitForSbcOML = NULL; |
867 | -PFNPROXYQUERYHYPERPIPENETWORKSGIXPROC pfnProxyQueryHyperpipeNetworkSGIX = NULL; |
868 | -PFNPROXYHYPERPIPECONFIGSGIXPROC pfnProxyHyperpipeConfigSGIX = NULL; |
869 | -PFNPROXYQUERYHYPERPIPECONFIGSGIXPROC pfnProxyQueryHyperpipeConfigSGIX = NULL; |
870 | -PFNPROXYDESTROYHYPERPIPECONFIGSGIXPROC pfnProxyDestroyHyperpipeConfigSGIX = NULL; |
871 | -PFNPROXYBINDHYPERPIPESGIXPROC pfnProxyBindHyperpipeSGIX = NULL; |
872 | -PFNPROXYQUERYHYPERPIPEBESTATTRIBSGIXPROC pfnProxyQueryHyperpipeBestAttribSGIX = NULL; |
873 | -PFNPROXYHYPERPIPEATTRIBSGIXPROC pfnProxyHyperpipeAttribSGIX = NULL; |
874 | -PFNPROXYQUERYHYPERPIPEATTRIBSGIXPROC pfnProxyQueryHyperpipeAttribSGIX = NULL; |
875 | -PFNPROXYGETAGPOFFSETMESAPROC pfnProxyGetAGPOffsetMESA = NULL; |
876 | -PFNPROXYBINDTEXIMAGEEXTPROC pfnProxyBindTexImageEXT = NULL; |
877 | -PFNPROXYRELEASETEXIMAGEEXTPROC pfnProxyReleaseTexImageEXT = NULL; |
878 | -PFNPROXYENUMERATEVIDEODEVICESNVPROC pfnProxyEnumerateVideoDevicesNV = NULL; |
879 | -PFNPROXYBINDVIDEODEVICENVPROC pfnProxyBindVideoDeviceNV = NULL; |
880 | -PFNPROXYGETVIDEODEVICENVPROC pfnProxyGetVideoDeviceNV = NULL; |
881 | -PFNPROXYRELEASEVIDEODEVICENVPROC pfnProxyReleaseVideoDeviceNV = NULL; |
882 | -PFNPROXYBINDVIDEOIMAGENVPROC pfnProxyBindVideoImageNV = NULL; |
883 | -PFNPROXYRELEASEVIDEOIMAGENVPROC pfnProxyReleaseVideoImageNV = NULL; |
884 | -PFNPROXYSENDPBUFFERTOVIDEONVPROC pfnProxySendPbufferToVideoNV = NULL; |
885 | -PFNPROXYGETVIDEOINFONVPROC pfnProxyGetVideoInfoNV = NULL; |
886 | -PFNPROXYJOINSWAPGROUPNVPROC pfnProxyJoinSwapGroupNV = NULL; |
887 | -PFNPROXYBINDSWAPBARRIERNVPROC pfnProxyBindSwapBarrierNV = NULL; |
888 | -PFNPROXYQUERYSWAPGROUPNVPROC pfnProxyQuerySwapGroupNV = NULL; |
889 | -PFNPROXYQUERYMAXSWAPGROUPSNVPROC pfnProxyQueryMaxSwapGroupsNV = NULL; |
890 | -PFNPROXYQUERYFRAMECOUNTNVPROC pfnProxyQueryFrameCountNV = NULL; |
891 | -PFNPROXYRESETFRAMECOUNTNVPROC pfnProxyResetFrameCountNV = NULL; |
892 | -PFNPROXYBINDVIDEOCAPTUREDEVICENVPROC pfnProxyBindVideoCaptureDeviceNV = NULL; |
893 | -PFNPROXYENUMERATEVIDEOCAPTUREDEVICESNVPROC pfnProxyEnumerateVideoCaptureDevicesNV = NULL; |
894 | -PFNPROXYLOCKVIDEOCAPTUREDEVICENVPROC pfnProxyLockVideoCaptureDeviceNV = NULL; |
895 | -PFNPROXYQUERYVIDEOCAPTUREDEVICENVPROC pfnProxyQueryVideoCaptureDeviceNV = NULL; |
896 | -PFNPROXYRELEASEVIDEOCAPTUREDEVICENVPROC pfnProxyReleaseVideoCaptureDeviceNV = NULL; |
897 | -PFNPROXYSWAPINTERVALEXTPROC pfnProxySwapIntervalEXT = NULL; |
898 | -PFNPROXYCOPYIMAGESUBDATANVPROC pfnProxyCopyImageSubDataNV = NULL; |
899 | -PFNPROXYSWAPINTERVALMESAPROC pfnProxySwapIntervalMESA = NULL; |
900 | -PFNPROXYGETSWAPINTERVALMESAPROC pfnProxyGetSwapIntervalMESA = NULL; |
901 | - |
902 | extern void *glProxyGetProcAddr(void *handle, const char *name); |
903 | -extern void *glProxyGetExtProcAddr(void *handle, const char *name); |
904 | |
905 | int glxProxyInit(void *handle) |
906 | { |
907 | @@ -200,95 +117,3 @@ |
908 | |
909 | return 0; |
910 | } |
911 | - |
912 | -int glxProxyExtInit(void *handle) |
913 | -{ |
914 | - if (NULL == handle) { |
915 | - return -1; |
916 | - } |
917 | - |
918 | - pfnProxyCreateContextAttribsARB = glProxyGetExtProcAddr(handle, "glXCreateContextAttribsARB"); |
919 | - pfnProxySwapIntervalSGI = glProxyGetExtProcAddr(handle, "glXSwapIntervalSGI"); |
920 | - pfnProxyGetVideoSyncSGI = glProxyGetExtProcAddr(handle, "glXGetVideoSyncSGI"); |
921 | - pfnProxyWaitVideoSyncSGI = glProxyGetExtProcAddr(handle, "glXWaitVideoSyncSGI"); |
922 | - pfnProxyMakeCurrentReadSGI = glProxyGetExtProcAddr(handle, "glXMakeCurrentReadSGI"); |
923 | - pfnProxyGetCurrentReadDrawableSGI = glProxyGetExtProcAddr(handle, "glXGetCurrentReadDrawableSGI"); |
924 | -#ifdef _VL_H |
925 | - pfnProxyCreateGLXVideoSourceSGIX = glProxyGetExtProcAddr(handle, "glXCreateGLXVideoSourceSGIX"); |
926 | - pfnProxyDestroyGLXVideoSourceSGIX = glProxyGetExtProcAddr(handle, "glXDestroyGLXVideoSourceSGIX"); |
927 | -#endif |
928 | - pfnProxyGetCurrentDisplayEXT = glProxyGetExtProcAddr(handle, "glXGetCurrentDisplayEXT"); |
929 | - pfnProxyQueryContextInfoEXT = glProxyGetExtProcAddr(handle, "glXQueryContextInfoEXT"); |
930 | - pfnProxyGetContextIDEXT = glProxyGetExtProcAddr(handle, "glXGetContextIDEXT"); |
931 | - pfnProxyImportContextEXT = glProxyGetExtProcAddr(handle, "glXImportContextEXT"); |
932 | - pfnProxyFreeContextEXT = glProxyGetExtProcAddr(handle, "glXFreeContextEXT"); |
933 | - pfnProxyGetFBConfigAttribSGIX = glProxyGetExtProcAddr(handle, "glXGetFBConfigAttribSGIX"); |
934 | - pfnProxyChooseFBConfigSGIX = glProxyGetExtProcAddr(handle, "glXChooseFBConfigSGIX"); |
935 | - pfnProxyCreateGLXPixmapWithConfigSGIX = glProxyGetExtProcAddr(handle, "glXCreateGLXPixmapWithConfigSGIX"); |
936 | - pfnProxyCreateContextWithConfigSGIX = glProxyGetExtProcAddr(handle, "glXCreateContextWithConfigSGIX"); |
937 | - pfnProxyGetVisualFromFBConfigSGIX = glProxyGetExtProcAddr(handle, "glXGetVisualFromFBConfigSGIX"); |
938 | - pfnProxyGetFBConfigFromVisualSGIX = glProxyGetExtProcAddr(handle, "glXGetFBConfigFromVisualSGIX"); |
939 | - pfnProxyCreateGLXPbufferSGIX = glProxyGetExtProcAddr(handle, "glXCreateGLXPbufferSGIX"); |
940 | - pfnProxyDestroyGLXPbufferSGIX = glProxyGetExtProcAddr(handle, "glXDestroyGLXPbufferSGIX"); |
941 | - pfnProxyQueryGLXPbufferSGIX = glProxyGetExtProcAddr(handle, "glXQueryGLXPbufferSGIX"); |
942 | - pfnProxySelectEventSGIX = glProxyGetExtProcAddr(handle, "glXSelectEventSGIX"); |
943 | - pfnProxyGetSelectedEventSGIX = glProxyGetExtProcAddr(handle, "glXGetSelectedEventSGIX"); |
944 | - pfnProxyCushionSGI = glProxyGetExtProcAddr(handle, "glXCushionSGI"); |
945 | - pfnProxyBindChannelToWindowSGIX = glProxyGetExtProcAddr(handle, "glXBindChannelToWindowSGIX"); |
946 | - pfnProxyChannelRectSGIX = glProxyGetExtProcAddr(handle, "glXChannelRectSGIX"); |
947 | - pfnProxyQueryChannelRectSGIX = glProxyGetExtProcAddr(handle, "glXQueryChannelRectSGIX"); |
948 | - pfnProxyQueryChannelDeltasSGIX = glProxyGetExtProcAddr(handle, "glXQueryChannelDeltasSGIX"); |
949 | - pfnProxyChannelRectSyncSGIX = glProxyGetExtProcAddr(handle, "glXChannelRectSyncSGIX"); |
950 | -#ifdef _DM_BUFFER_H |
951 | - pfnProxyAssociateDMPbufferSGIX = glProxyGetExtProcAddr(handle, "glXAssociateDMPbufferSGIX"); |
952 | -#endif |
953 | - pfnProxyJoinSwapGroupSGIX = glProxyGetExtProcAddr(handle, "glXJoinSwapGroupSGIX"); |
954 | - pfnProxyBindSwapBarrierSGIX = glProxyGetExtProcAddr(handle, "glXBindSwapBarrierSGIX"); |
955 | - pfnProxyQueryMaxSwapBarriersSGIX = glProxyGetExtProcAddr(handle, "glXQueryMaxSwapBarriersSGIX"); |
956 | - pfnProxyGetTransparentIndexSUN = glProxyGetExtProcAddr(handle, "glXGetTransparentIndexSUN"); |
957 | - pfnProxyCopySubBufferMESA = glProxyGetExtProcAddr(handle, "glXCopySubBufferMESA"); |
958 | - pfnProxyCreateGLXPixmapMESA = glProxyGetExtProcAddr(handle, "glXCreateGLXPixmapMESA"); |
959 | - pfnProxyReleaseBuffersMESA = glProxyGetExtProcAddr(handle, "glXReleaseBuffersMESA"); |
960 | - pfnProxySet3DfxModeMESA = glProxyGetExtProcAddr(handle, "glXSet3DfxModeMESA"); |
961 | - pfnProxyGetSyncValuesOML = glProxyGetExtProcAddr(handle, "glXGetSyncValuesOML"); |
962 | - pfnProxyGetMscRateOML = glProxyGetExtProcAddr(handle, "glXGetMscRateOML"); |
963 | - pfnProxySwapBuffersMscOML = glProxyGetExtProcAddr(handle, "glXSwapBuffersMscOML"); |
964 | - pfnProxyWaitForMscOML = glProxyGetExtProcAddr(handle, "glXWaitForMscOML"); |
965 | - pfnProxyWaitForSbcOML = glProxyGetExtProcAddr(handle, "glXWaitForSbcOML"); |
966 | - pfnProxyQueryHyperpipeNetworkSGIX = glProxyGetExtProcAddr(handle, "glXQueryHyperpipeNetworkSGIX"); |
967 | - pfnProxyHyperpipeConfigSGIX = glProxyGetExtProcAddr(handle, "glXHyperpipeConfigSGIX"); |
968 | - pfnProxyQueryHyperpipeConfigSGIX = glProxyGetExtProcAddr(handle, "glXQueryHyperpipeConfigSGIX"); |
969 | - pfnProxyDestroyHyperpipeConfigSGIX = glProxyGetExtProcAddr(handle, "glXDestroyHyperpipeConfigSGIX"); |
970 | - pfnProxyBindHyperpipeSGIX = glProxyGetExtProcAddr(handle, "glXBindHyperpipeSGIX"); |
971 | - pfnProxyQueryHyperpipeBestAttribSGIX = glProxyGetExtProcAddr(handle, "glXQueryHyperpipeBestAttribSGIX"); |
972 | - pfnProxyHyperpipeAttribSGIX = glProxyGetExtProcAddr(handle, "glXHyperpipeAttribSGIX"); |
973 | - pfnProxyQueryHyperpipeAttribSGIX = glProxyGetExtProcAddr(handle, "glXQueryHyperpipeAttribSGIX"); |
974 | - pfnProxyGetAGPOffsetMESA = glProxyGetExtProcAddr(handle, "glXGetAGPOffsetMESA"); |
975 | - pfnProxyBindTexImageEXT = glProxyGetExtProcAddr(handle, "glXBindTexImageEXT"); |
976 | - pfnProxyReleaseTexImageEXT = glProxyGetExtProcAddr(handle, "glXReleaseTexImageEXT"); |
977 | - pfnProxyEnumerateVideoDevicesNV = glProxyGetExtProcAddr(handle, "glXEnumerateVideoDevicesNV"); |
978 | - pfnProxyBindVideoDeviceNV = glProxyGetExtProcAddr(handle, "glXBindVideoDeviceNV"); |
979 | - pfnProxyGetVideoDeviceNV = glProxyGetExtProcAddr(handle, "glXGetVideoDeviceNV"); |
980 | - pfnProxyReleaseVideoDeviceNV = glProxyGetExtProcAddr(handle, "glXReleaseVideoDeviceNV"); |
981 | - pfnProxyBindVideoImageNV = glProxyGetExtProcAddr(handle, "glXBindVideoImageNV"); |
982 | - pfnProxyReleaseVideoImageNV = glProxyGetExtProcAddr(handle, "glXReleaseVideoImageNV"); |
983 | - pfnProxySendPbufferToVideoNV = glProxyGetExtProcAddr(handle, "glXSendPbufferToVideoNV"); |
984 | - pfnProxyGetVideoInfoNV = glProxyGetExtProcAddr(handle, "glXGetVideoInfoNV"); |
985 | - pfnProxyJoinSwapGroupNV = glProxyGetExtProcAddr(handle, "glXJoinSwapGroupNV"); |
986 | - pfnProxyBindSwapBarrierNV = glProxyGetExtProcAddr(handle, "glXBindSwapBarrierNV"); |
987 | - pfnProxyQuerySwapGroupNV = glProxyGetExtProcAddr(handle, "glXQuerySwapGroupNV"); |
988 | - pfnProxyQueryMaxSwapGroupsNV = glProxyGetExtProcAddr(handle, "glXQueryMaxSwapGroupsNV"); |
989 | - pfnProxyQueryFrameCountNV = glProxyGetExtProcAddr(handle, "glXQueryFrameCountNV"); |
990 | - pfnProxyResetFrameCountNV = glProxyGetExtProcAddr(handle, "glXResetFrameCountNV"); |
991 | - pfnProxyBindVideoCaptureDeviceNV = glProxyGetExtProcAddr(handle, "glXBindVideoCaptureDeviceNV"); |
992 | - pfnProxyEnumerateVideoCaptureDevicesNV = glProxyGetExtProcAddr(handle, "glXEnumerateVideoCaptureDevicesNV"); |
993 | - pfnProxyLockVideoCaptureDeviceNV = glProxyGetExtProcAddr(handle, "glXLockVideoCaptureDeviceNV"); |
994 | - pfnProxyQueryVideoCaptureDeviceNV = glProxyGetExtProcAddr(handle, "glXQueryVideoCaptureDeviceNV"); |
995 | - pfnProxyReleaseVideoCaptureDeviceNV = glProxyGetExtProcAddr(handle, "glXReleaseVideoCaptureDeviceNV"); |
996 | - pfnProxySwapIntervalEXT = glProxyGetExtProcAddr(handle, "glXSwapIntervalEXT"); |
997 | - pfnProxyCopyImageSubDataNV = glProxyGetExtProcAddr(handle, "glXCopyImageSubDataNV"); |
998 | - pfnProxySwapIntervalMESA = glProxyGetExtProcAddr(handle, "glXSwapIntervalMESA"); |
999 | - pfnProxyGetSwapIntervalMESA = glProxyGetExtProcAddr(handle, "glXGetSwapIntervalMESA"); |
1000 | - |
1001 | - return 0; |
1002 | -} |
1003 | |
1004 | === modified file 'tests/tfp/egl_tfp.c' |
1005 | --- tests/tfp/egl_tfp.c 2011-05-04 07:10:32 +0000 |
1006 | +++ tests/tfp/egl_tfp.c 2011-10-19 11:31:30 +0000 |
1007 | @@ -103,6 +103,8 @@ |
1008 | PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR; |
1009 | PFNEGLDESTROYIMAGEKHRPROC eglDestroyImageKHR; |
1010 | |
1011 | + PFNPROXYEGLIMAGETARGETTEXTURE2DOESPROC glEGLImageTargetTexture2DOES; |
1012 | + |
1013 | /* Shaders */ |
1014 | GLfloat projection_matrix[16]; |
1015 | GLfloat model_view_matrix[16]; |
1016 | @@ -253,8 +255,8 @@ |
1017 | * must be re-attached. |
1018 | */ |
1019 | if (data->options.use_egl_image) { |
1020 | - glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, |
1021 | - (GLeglImageOES) data->img); |
1022 | + data->glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, |
1023 | + (GLeglImageOES) data->img); |
1024 | } |
1025 | else { |
1026 | /* Normal texture data upload */ |
1027 | @@ -495,12 +497,19 @@ |
1028 | |
1029 | exts = eglQueryString(data->dpy, EGL_EXTENSIONS); |
1030 | printf("EGL extensions: %s\n", exts); |
1031 | + |
1032 | + data->glEGLImageTargetTexture2DOES = |
1033 | + (PFNPROXYEGLIMAGETARGETTEXTURE2DOESPROC) glProxyGetExtProcAddr("GL_OES_EGL_image", "glEGLImageTargetTexture2DOES"); |
1034 | + if (!exts || !data->glEGLImageTargetTexture2DOES) { |
1035 | + printf("EGL does not support GL_OES_EGL_image\n"); |
1036 | + return False; |
1037 | + } |
1038 | + |
1039 | data->eglCreateImageKHR = |
1040 | - (PFNEGLCREATEIMAGEKHRPROC) eglGetProcAddress("eglCreateImageKHR"); |
1041 | + (PFNEGLCREATEIMAGEKHRPROC) glProxyGetExtProcAddr("EGL_KHR_image_pixmap", "eglCreateImageKHR"); |
1042 | data->eglDestroyImageKHR = |
1043 | - (PFNEGLDESTROYIMAGEKHRPROC) eglGetProcAddress("eglDestroyImageKHR"); |
1044 | - if (!exts || !strstr(exts, "EGL_KHR_image_pixmap") || |
1045 | - !data->eglCreateImageKHR || !data->eglDestroyImageKHR) { |
1046 | + (PFNEGLDESTROYIMAGEKHRPROC) glProxyGetExtProcAddr("EGL_KHR_image_pixmap", "eglDestroyImageKHR"); |
1047 | + if (!exts || !data->eglCreateImageKHR || !data->eglDestroyImageKHR) { |
1048 | printf("EGL does not support EGL_KHR_image_pixmap\n"); |
1049 | return False; |
1050 | } |
1051 | |
1052 | === modified file 'tests/tfp/glx_tfp.c' |
1053 | --- tests/tfp/glx_tfp.c 2011-01-05 15:48:46 +0000 |
1054 | +++ tests/tfp/glx_tfp.c 2011-10-19 11:31:30 +0000 |
1055 | @@ -76,6 +76,9 @@ |
1056 | |
1057 | static float top, bottom; |
1058 | |
1059 | +PFNPROXYBINDTEXIMAGEEXTPROC glXBindTexImageEXT_ = NULL; |
1060 | +PFNPROXYRELEASETEXIMAGEEXTPROC glXReleaseTexImageEXT_ = NULL; |
1061 | + |
1062 | static Display * |
1063 | OpenDisplay(void) |
1064 | { |
1065 | @@ -91,13 +94,15 @@ |
1066 | |
1067 | screen = DefaultScreen(dpy); |
1068 | ext = glXQueryExtensionsString(dpy, screen); |
1069 | - if (!strstr(ext, "GLX_EXT_texture_from_pixmap")) { |
1070 | - fprintf(stderr, "GLX_EXT_texture_from_pixmap not supported.\n"); |
1071 | - exit(1); |
1072 | - } |
1073 | - |
1074 | - if (!glXBindTexImageEXT || !glXReleaseTexImageEXT) { |
1075 | - fprintf(stderr, "glXGetProcAddress failed!\n"); |
1076 | + printf("GLX extensions: %s\n", ext); |
1077 | + |
1078 | + glXBindTexImageEXT_ = (PFNPROXYBINDTEXIMAGEEXTPROC) |
1079 | + glProxyGetExtProcAddr("GLX_EXT_texture_from_pixmap", "glXBindTexImageEXT"); |
1080 | + glXReleaseTexImageEXT_ = (PFNPROXYRELEASETEXIMAGEEXTPROC) |
1081 | + glProxyGetExtProcAddr("GLX_EXT_texture_from_pixmap", "glXReleaseTexImageEXT"); |
1082 | + |
1083 | + if (!glXBindTexImageEXT_ || !glXReleaseTexImageEXT_) { |
1084 | + fprintf(stderr, "glProxyGetProcAddress failed!\n"); |
1085 | exit(1); |
1086 | } |
1087 | |
1088 | @@ -312,14 +317,14 @@ |
1089 | glGenTextures(1, &texture); |
1090 | glBindTexture(GL_TEXTURE_2D, texture); |
1091 | |
1092 | - glXBindTexImageEXT(dpy, gp, GLX_FRONT_LEFT_EXT, NULL); |
1093 | + glXBindTexImageEXT_(dpy, gp, GLX_FRONT_LEFT_EXT, NULL); |
1094 | |
1095 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
1096 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
1097 | |
1098 | glEnable(GL_TEXTURE_2D); |
1099 | /* |
1100 | - glXReleaseTexImageEXT(display, glxpixmap, GLX_FRONT_LEFT_EXT); |
1101 | + glXReleaseTexImageEXT_(display, glxpixmap, GLX_FRONT_LEFT_EXT); |
1102 | */ |
1103 | } |
1104 |
> 472 + static char const *gl_extensions = "";
It's not safe to cache gl_extensions in this manner, as the extensions are context-dependent. For example, glProxyGetExtPr ocAddr( ) could be called again after a user has changed GL context or by two different threads having different GL contexts.
I would argue that we don't need to cache the extension strings anyway as 1. getting the extension string is fast enough and 2. extension checking isn't usually in a performance- critical path.
> 501 + if (!strstr( backend_ extensions, extension) && gl_extensions, extension))
> 502 + !strstr(
> 503 + return NULL;
There are extension names that are prefixes of other extension names (eg EGL_KHR_image and EGL_KHR_ image_base) , so a simple strstr() check is not enough. You can check cairo-gl-info.c in the cairo sources for a more robust implementation of an extension check.
By the way, this complication is the reason glGetString( GL_EXTENSIONS) was deprecated in GL 3.0 (and removed in GL 3.1) in favor of glGetStringi( GL_EXTENSIONS, i).