156513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall/*
256513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* Copyright (C) 2011 The Android Open Source Project
356513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall*
456513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* Licensed under the Apache License, Version 2.0 (the "License");
556513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* you may not use this file except in compliance with the License.
656513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* You may obtain a copy of the License at
756513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall*
856513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* http://www.apache.org/licenses/LICENSE-2.0
956513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall*
1056513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* Unless required by applicable law or agreed to in writing, software
1156513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* distributed under the License is distributed on an "AS IS" BASIS,
1256513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1356513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* See the License for the specific language governing permissions and
1456513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall* limitations under the License.
1556513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall*/
1656513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall#include <stdio.h>
1756513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall#include "egl_dispatch.h"
1856513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall#include <dlfcn.h>
1956513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall
2056513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hallegl_dispatch *create_egl_dispatch(void *gles_android)
2156513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall{
2256513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall        egl_dispatch *disp = new egl_dispatch;
2356513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall
2456513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    void *ptr;
2556513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetError"); disp->set_eglGetError((eglGetError_t)ptr);
2656513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetDisplay"); disp->set_eglGetDisplay((eglGetDisplay_t)ptr);
2756513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglInitialize"); disp->set_eglInitialize((eglInitialize_t)ptr);
2856513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglTerminate"); disp->set_eglTerminate((eglTerminate_t)ptr);
2956513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglQueryString"); disp->set_eglQueryString((eglQueryString_t)ptr);
3056513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetConfigs"); disp->set_eglGetConfigs((eglGetConfigs_t)ptr);
3156513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglChooseConfig"); disp->set_eglChooseConfig((eglChooseConfig_t)ptr);
3256513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetConfigAttrib"); disp->set_eglGetConfigAttrib((eglGetConfigAttrib_t)ptr);
3356513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglCreateWindowSurface"); disp->set_eglCreateWindowSurface((eglCreateWindowSurface_t)ptr);
3456513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglCreatePbufferSurface"); disp->set_eglCreatePbufferSurface((eglCreatePbufferSurface_t)ptr);
3556513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglCreatePixmapSurface"); disp->set_eglCreatePixmapSurface((eglCreatePixmapSurface_t)ptr);
3656513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglDestroySurface"); disp->set_eglDestroySurface((eglDestroySurface_t)ptr);
3756513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglQuerySurface"); disp->set_eglQuerySurface((eglQuerySurface_t)ptr);
3856513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglBindAPI"); disp->set_eglBindAPI((eglBindAPI_t)ptr);
3956513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglQueryAPI"); disp->set_eglQueryAPI((eglQueryAPI_t)ptr);
4056513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglWaitClient"); disp->set_eglWaitClient((eglWaitClient_t)ptr);
4156513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglReleaseThread"); disp->set_eglReleaseThread((eglReleaseThread_t)ptr);
4256513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglCreatePbufferFromClientBuffer"); disp->set_eglCreatePbufferFromClientBuffer((eglCreatePbufferFromClientBuffer_t)ptr);
4356513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglSurfaceAttrib"); disp->set_eglSurfaceAttrib((eglSurfaceAttrib_t)ptr);
4456513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglBindTexImage"); disp->set_eglBindTexImage((eglBindTexImage_t)ptr);
4556513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglReleaseTexImage"); disp->set_eglReleaseTexImage((eglReleaseTexImage_t)ptr);
4656513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglSwapInterval"); disp->set_eglSwapInterval((eglSwapInterval_t)ptr);
4756513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglCreateContext"); disp->set_eglCreateContext((eglCreateContext_t)ptr);
4856513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglDestroyContext"); disp->set_eglDestroyContext((eglDestroyContext_t)ptr);
4956513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglMakeCurrent"); disp->set_eglMakeCurrent((eglMakeCurrent_t)ptr);
5056513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetCurrentContext"); disp->set_eglGetCurrentContext((eglGetCurrentContext_t)ptr);
5156513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetCurrentSurface"); disp->set_eglGetCurrentSurface((eglGetCurrentSurface_t)ptr);
5256513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetCurrentDisplay"); disp->set_eglGetCurrentDisplay((eglGetCurrentDisplay_t)ptr);
5356513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglQueryContext"); disp->set_eglQueryContext((eglQueryContext_t)ptr);
5456513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglWaitGL"); disp->set_eglWaitGL((eglWaitGL_t)ptr);
5556513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglWaitNative"); disp->set_eglWaitNative((eglWaitNative_t)ptr);
5656513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglSwapBuffers"); disp->set_eglSwapBuffers((eglSwapBuffers_t)ptr);
5756513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglCopyBuffers"); disp->set_eglCopyBuffers((eglCopyBuffers_t)ptr);
5856513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetProcAddress"); disp->set_eglGetProcAddress((eglGetProcAddress_t)ptr);
5956513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglLockSurfaceKHR"); disp->set_eglLockSurfaceKHR((eglLockSurfaceKHR_t)ptr);
6056513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglUnlockSurfaceKHR"); disp->set_eglUnlockSurfaceKHR((eglUnlockSurfaceKHR_t)ptr);
6156513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglCreateImageKHR"); disp->set_eglCreateImageKHR((eglCreateImageKHR_t)ptr);
6256513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglDestroyImageKHR"); disp->set_eglDestroyImageKHR((eglDestroyImageKHR_t)ptr);
6356513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglCreateSyncKHR"); disp->set_eglCreateSyncKHR((eglCreateSyncKHR_t)ptr);
6456513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglDestroySyncKHR"); disp->set_eglDestroySyncKHR((eglDestroySyncKHR_t)ptr);
6556513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglClientWaitSyncKHR"); disp->set_eglClientWaitSyncKHR((eglClientWaitSyncKHR_t)ptr);
6656513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglSignalSyncKHR"); disp->set_eglSignalSyncKHR((eglSignalSyncKHR_t)ptr);
6756513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglGetSyncAttribKHR"); disp->set_eglGetSyncAttribKHR((eglGetSyncAttribKHR_t)ptr);
6856513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall    ptr = dlsym(gles_android,"eglSetSwapRectangleANDROID"); disp->set_eglSetSwapRectangleANDROID((eglSetSwapRectangleANDROID_t)ptr);
6956513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall
7056513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall        return disp;
7156513f5ff4f3e851c5f0cb38dc8851d18616b3c0Jesse Hall}
72