print ' if (ctx != EGL_NO_CONTEXT) {'
print ' EGLint api = EGL_OPENGL_ES_API, version = 1;'
print ' gltrace::Context *tr = gltrace::getContext();'
- print ' __eglQueryContext(dpy, ctx, EGL_CONTEXT_CLIENT_TYPE, &api);'
- print ' __eglQueryContext(dpy, ctx, EGL_CONTEXT_CLIENT_VERSION, &version);'
+ print ' _eglQueryContext(dpy, ctx, EGL_CONTEXT_CLIENT_TYPE, &api);'
+ print ' _eglQueryContext(dpy, ctx, EGL_CONTEXT_CLIENT_VERSION, &version);'
print ' if (api == EGL_OPENGL_API)'
print ' tr->profile = gltrace::PROFILE_COMPAT;'
print ' else if (version == 1)'
/*
* Invoke the true dlopen() function.
*/
-static void *__dlopen(const char *filename, int flag)
+static void *_dlopen(const char *filename, int flag)
{
- typedef void * (*PFNDLOPEN)(const char *, int);
- static PFNDLOPEN dlopen_ptr = NULL;
+ typedef void * (*PFN_DLOPEN)(const char *, int);
+ static PFN_DLOPEN dlopen_ptr = NULL;
if (!dlopen_ptr) {
- dlopen_ptr = (PFNDLOPEN)dlsym(RTLD_NEXT, "dlopen");
+ dlopen_ptr = (PFN_DLOPEN)dlsym(RTLD_NEXT, "dlopen");
if (!dlopen_ptr) {
os::log("apitrace: error: dlsym(RTLD_NEXT, \"dlopen\") failed\n");
return NULL;
}
}
- void *handle = __dlopen(filename, flag);
+ void *handle = _dlopen(filename, flag);
if (intercept) {
// Get the file path for our shared object, and use it instead
static int dummy = 0xdeedbeef;
Dl_info info;
if (dladdr(&dummy, &info)) {
- handle = __dlopen(info.dli_fname, flag);
+ handle = _dlopen(info.dli_fname, flag);
} else {
os::log("apitrace: warning: dladdr() failed\n");
}
#endif /* !ANDROID */
+#if defined(ANDROID)
+
+/*
+ * Undocumented Android extensions used by Dalvik which have bound information
+ * passed to it, but is currently ignored, so probably unreliable.
+ *
+ * See:
+ * https://github.com/android/platform_frameworks_base/blob/master/opengl/libs/GLES_CM/gl.cpp
+ */
+
+extern "C" PUBLIC
+void APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer, GLsizei count) {
+ (void)count;
+ glColorPointer(size, type, stride, pointer);
+}
+
+extern "C" PUBLIC
+void APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, const GLvoid * pointer, GLsizei count) {
+ (void)count;
+ glNormalPointer(type, stride, pointer);
+}
+
+extern "C" PUBLIC
+void APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer, GLsizei count) {
+ (void)count;
+ glTexCoordPointer(size, type, stride, pointer);
+}
+
+extern "C" PUBLIC
+void APIENTRY glVertexPointerBounds(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer, GLsizei count) {
+ (void)count;
+ glVertexPointer(size, type, stride, pointer);
+}
+
+extern "C" PUBLIC
+void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count) {
+ (void)count;
+ glPointSizePointerOES(type, stride, pointer);
+}
+
+extern "C" PUBLIC
+void APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count) {
+ (void)count;
+ glMatrixIndexPointerOES(size, type, stride, pointer);
+}
+
+extern "C" PUBLIC
+void APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer, GLsizei count) {
+ (void)count;
+ glWeightPointerOES(size, type, stride, pointer);
+}
+
+/*
+ * There is also a glVertexAttribPointerBounds in
+ * https://github.com/android/platform_frameworks_base/blob/master/opengl/tools/glgen/stubs/gles11/GLES20cHeader.cpp
+ * but is it not exported.
+ */
+
+#endif /* ANDROID */
+
'''