/** * Return pointer to the named function. If the function name isn't found * in the name of static functions, try generating a new API entrypoint on * the fly with assembly language. */ _glapi_proc _glapi_get_proc_address(const char *funcName) { _glapi_proc func; struct _glapi_function * entry; init_glapi_relocs_once(); #ifdef MANGLE /* skip the prefix on the name */ if (funcName[1] != 'g' || funcName[2] != 'l') return NULL; #else if (funcName[0] != 'g' || funcName[1] != 'l') return NULL; #endif /* search extension functions first */ func = get_extension_proc_address(funcName); if (func) return func; /* search static functions */ func = get_static_proc_address(funcName); if (func) return func; /* generate entrypoint, dispatch offset must be filled in by the driver */ entry = add_function_name(funcName); if (entry == NULL) return NULL; return entry->dispatch_stub; }
/** * Return pointer to the named function. If the function name isn't found * in the name of static functions, try generating a new API entrypoint on * the fly with assembly language. */ _glapi_proc _glapi_get_proc_address(const char *funcName) { struct _glapi_function * entry; GLuint i; #ifdef MANGLE if (funcName[0] != 'm' || funcName[1] != 'g' || funcName[2] != 'l') return NULL; #else if (funcName[0] != 'g' || funcName[1] != 'l') return NULL; #endif /* search extension functions first */ for (i = 0; i < NumExtEntryPoints; i++) { if (strcmp(ExtEntryTable[i].name, funcName) == 0) { return ExtEntryTable[i].dispatch_stub; } } #if !defined( XFree86Server ) && !defined( XGLServer ) /* search static functions */ { const _glapi_proc func = get_static_proc_address(funcName); if (func) return func; } #endif /* !defined( XFree86Server ) */ entry = add_function_name(funcName); return (entry == NULL) ? NULL : entry->dispatch_stub; }
/** * Return pointer to the named function. If the function name isn't found * in the name of static functions, try generating a new API entrypoint on * the fly with assembly language. */ _glapi_proc _glapi_get_proc_address(const char *funcName) { _glapi_proc func; struct _glapi_function * entry; init_glapi_relocs_once(); #ifdef USE_MGL_NAMESPACE if (funcName && funcName[0] == 'm') funcName++; #endif if (!funcName || funcName[0] != 'g' || funcName[1] != 'l') return NULL; /* search extension functions first */ func = get_extension_proc_address(funcName); if (func) return func; /* search static functions */ func = get_static_proc_address(funcName); if (func) return func; /* generate entrypoint, dispatch offset must be filled in by the driver */ entry = add_function_name(funcName); if (entry == NULL) return NULL; return entry->dispatch_stub; }