1d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com 2d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com/* 3d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com * Copyright 2012 Google Inc. 4d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com * 5d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com * Use of this source code is governed by a BSD-style license that can be 6d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com * found in the LICENSE file. 7d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com */ 8d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com 9d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com 10d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#include "gl/GrGLInterface.h" 11a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon#include "gl/GrGLAssembleInterface.h" 12d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com 13a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon#define WIN32_LEAN_AND_MEAN 14a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon#include <windows.h> 15d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#include "EGL/egl.h" 16d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com 17a721c8167222a0b2b442a00052104b2a78ab93e5bsalomonstatic GrGLFuncPtr angle_get_gl_proc(void* ctx, const char name[]) { 18a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon GrGLFuncPtr proc = (GrGLFuncPtr) GetProcAddress((HMODULE)ctx, name); 1949f085dddff10473b6ebf832a974288300224e60bsalomon if (proc) { 20a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon return proc; 21a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon } 22a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon return eglGetProcAddress(name); 23a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon} 24d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com 25d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.comconst GrGLInterface* GrGLCreateANGLEInterface() { 26d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com 27d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com static HMODULE ghANGLELib = NULL; 28fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 29d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com if (NULL == ghANGLELib) { 30d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com // We load the ANGLE library and never let it go 31d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com ghANGLELib = LoadLibrary("libGLESv2.dll"); 32d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com } 33d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com if (NULL == ghANGLELib) { 34d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com // We can't setup the interface correctly w/o the DLL 35d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com return NULL; 36d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com } 37d5c8fe6f344e1b141390c733017656f6fb3f5f63robertphillips@google.com 38a721c8167222a0b2b442a00052104b2a78ab93e5bsalomon return GrGLAssembleGLESInterface(ghANGLELib, angle_get_gl_proc); 39bda03db28935eef7f9a3aae05fdedca57cd984adrmistry@google.com} 40