/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 *
 * Generated from Khronos EGL API description (egl.xml) revision 3338ed0db494d6a4db7f76627b38f0b1892db096.
 */
dst->clientWaitSyncKHR				= (eglClientWaitSyncKHRFunc)				loader->get("eglClientWaitSyncKHR");
dst->createImageKHR					= (eglCreateImageKHRFunc)					loader->get("eglCreateImageKHR");
dst->createPlatformPixmapSurfaceEXT	= (eglCreatePlatformPixmapSurfaceEXTFunc)	loader->get("eglCreatePlatformPixmapSurfaceEXT");
dst->createPlatformWindowSurfaceEXT	= (eglCreatePlatformWindowSurfaceEXTFunc)	loader->get("eglCreatePlatformWindowSurfaceEXT");
dst->createSyncKHR					= (eglCreateSyncKHRFunc)					loader->get("eglCreateSyncKHR");
dst->destroyImageKHR				= (eglDestroyImageKHRFunc)					loader->get("eglDestroyImageKHR");
dst->destroySyncKHR					= (eglDestroySyncKHRFunc)					loader->get("eglDestroySyncKHR");
dst->getPlatformDisplayEXT			= (eglGetPlatformDisplayEXTFunc)			loader->get("eglGetPlatformDisplayEXT");
dst->getSyncAttribKHR				= (eglGetSyncAttribKHRFunc)					loader->get("eglGetSyncAttribKHR");
dst->lockSurfaceKHR					= (eglLockSurfaceKHRFunc)					loader->get("eglLockSurfaceKHR");
dst->setDamageRegionKHR				= (eglSetDamageRegionKHRFunc)				loader->get("eglSetDamageRegionKHR");
dst->signalSyncKHR					= (eglSignalSyncKHRFunc)					loader->get("eglSignalSyncKHR");
dst->swapBuffersWithDamageKHR		= (eglSwapBuffersWithDamageKHRFunc)			loader->get("eglSwapBuffersWithDamageKHR");
dst->unlockSurfaceKHR				= (eglUnlockSurfaceKHRFunc)					loader->get("eglUnlockSurfaceKHR");
dst->waitSyncKHR					= (eglWaitSyncKHRFunc)						loader->get("eglWaitSyncKHR");
