#include <EGL/egl.h>
+#include "glwrap.h"
+#include "eglwrap.h"
+
bool fips_dispatch_initialized;
fips_api_t fips_dispatch_api;
fips_dispatch_initialized = true;
}
+typedef void (*generic_function_pointer)(void);
+
void *
fips_dispatch_lookup (const char *name)
{
- if (fips_dispatch_api == FIPS_API_GLX)
- return glXGetProcAddressARB ((const GLubyte *)name);
- else
- return eglGetProcAddress (name);
+ static PFNGLXGETPROCADDRESSPROC glx_gpa = NULL;
+ static generic_function_pointer (*egl_gpa)(const char *name) = NULL;
+
+ if (fips_dispatch_api == FIPS_API_GLX) {
+ if (glx_gpa == NULL)
+ glx_gpa = glwrap_lookup ("glXGetProcAddressARB");
+ return glx_gpa ((const GLubyte *)name);
+ } else {
+ if (egl_gpa == NULL)
+ egl_gpa = eglwrap_lookup ("eglGetProcAddress");
+ return egl_gpa (name);
+ }
}