Merge lp:~marcoil/glproxy/extensions-cleanup into lp:glproxy

Proposed by Marc Ordinas i Llopis
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
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, glProxyGetExtProcAddr. Users need to pass the extension
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.

To post a comment you must log in.
Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

> 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, glProxyGetExtProcAddr() 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) &&
> 502 + !strstr(gl_extensions, extension))
> 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).

review: Needs Fixing
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.

Revision history for this message
Marc Ordinas i Llopis (marcoil) wrote :

Thanks, Alexandros! I removed the string caching and copied the check from cairo, please take a look.

Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

Looks good!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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

Subscribers

People subscribed via source and target branches