/** * 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) { _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; }