1*38e8c45fSAndroid Build Coastguard Worker /* 2*38e8c45fSAndroid Build Coastguard Worker ** Copyright 2011, The Android Open Source Project 3*38e8c45fSAndroid Build Coastguard Worker ** 4*38e8c45fSAndroid Build Coastguard Worker ** Licensed under the Apache License, Version 2.0 (the "License"); 5*38e8c45fSAndroid Build Coastguard Worker ** you may not use this file except in compliance with the License. 6*38e8c45fSAndroid Build Coastguard Worker ** You may obtain a copy of the License at 7*38e8c45fSAndroid Build Coastguard Worker ** 8*38e8c45fSAndroid Build Coastguard Worker ** http://www.apache.org/licenses/LICENSE-2.0 9*38e8c45fSAndroid Build Coastguard Worker ** 10*38e8c45fSAndroid Build Coastguard Worker ** Unless required by applicable law or agreed to in writing, software 11*38e8c45fSAndroid Build Coastguard Worker ** distributed under the License is distributed on an "AS IS" BASIS, 12*38e8c45fSAndroid Build Coastguard Worker ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*38e8c45fSAndroid Build Coastguard Worker ** See the License for the specific language governing permissions and 14*38e8c45fSAndroid Build Coastguard Worker ** limitations under the License. 15*38e8c45fSAndroid Build Coastguard Worker */ 16*38e8c45fSAndroid Build Coastguard Worker 17*38e8c45fSAndroid Build Coastguard Worker #ifndef ANDROID_EGLDEFS_H 18*38e8c45fSAndroid Build Coastguard Worker #define ANDROID_EGLDEFS_H 19*38e8c45fSAndroid Build Coastguard Worker 20*38e8c45fSAndroid Build Coastguard Worker #include <log/log.h> 21*38e8c45fSAndroid Build Coastguard Worker 22*38e8c45fSAndroid Build Coastguard Worker #include "../hooks.h" 23*38e8c45fSAndroid Build Coastguard Worker #include "egl_platform_entries.h" 24*38e8c45fSAndroid Build Coastguard Worker 25*38e8c45fSAndroid Build Coastguard Worker #define VERSION_MAJOR 1 26*38e8c45fSAndroid Build Coastguard Worker #define VERSION_MINOR 4 27*38e8c45fSAndroid Build Coastguard Worker #define EGL_MAKE_VERSION(major, minor, patch) (((major) << 22) | ((minor) << 12) | (patch)) 28*38e8c45fSAndroid Build Coastguard Worker 29*38e8c45fSAndroid Build Coastguard Worker namespace android { 30*38e8c45fSAndroid Build Coastguard Worker 31*38e8c45fSAndroid Build Coastguard Worker // EGLDisplay are global, not attached to a given thread 32*38e8c45fSAndroid Build Coastguard Worker const unsigned int NUM_DISPLAYS = 1; 33*38e8c45fSAndroid Build Coastguard Worker 34*38e8c45fSAndroid Build Coastguard Worker extern const char* const platform_names[]; 35*38e8c45fSAndroid Build Coastguard Worker 36*38e8c45fSAndroid Build Coastguard Worker struct egl_connection_t { 37*38e8c45fSAndroid Build Coastguard Worker enum { GLESv1_INDEX = 0, GLESv2_INDEX = 1 }; 38*38e8c45fSAndroid Build Coastguard Worker egl_connection_tegl_connection_t39*38e8c45fSAndroid Build Coastguard Worker inline egl_connection_t() 40*38e8c45fSAndroid Build Coastguard Worker : dso(nullptr), 41*38e8c45fSAndroid Build Coastguard Worker libEgl(nullptr), 42*38e8c45fSAndroid Build Coastguard Worker libGles1(nullptr), 43*38e8c45fSAndroid Build Coastguard Worker libGles2(nullptr), 44*38e8c45fSAndroid Build Coastguard Worker systemDriverUnloaded(false), 45*38e8c45fSAndroid Build Coastguard Worker angleLoaded(false), 46*38e8c45fSAndroid Build Coastguard Worker angleGetDisplayPlatformFunc(nullptr), 47*38e8c45fSAndroid Build Coastguard Worker angleResetDisplayPlatformFunc(nullptr) { 48*38e8c45fSAndroid Build Coastguard Worker const char* const* entries = platform_names; 49*38e8c45fSAndroid Build Coastguard Worker EGLFuncPointer* curr = reinterpret_cast<EGLFuncPointer*>(&platform); 50*38e8c45fSAndroid Build Coastguard Worker while (*entries) { 51*38e8c45fSAndroid Build Coastguard Worker const char* name = *entries; 52*38e8c45fSAndroid Build Coastguard Worker EGLFuncPointer f = FindPlatformImplAddr(name); 53*38e8c45fSAndroid Build Coastguard Worker 54*38e8c45fSAndroid Build Coastguard Worker if (f == nullptr) { 55*38e8c45fSAndroid Build Coastguard Worker // If no entry found, update the lookup table: sPlatformImplMap 56*38e8c45fSAndroid Build Coastguard Worker ALOGE("No entry found in platform lookup table for %s", name); 57*38e8c45fSAndroid Build Coastguard Worker } 58*38e8c45fSAndroid Build Coastguard Worker 59*38e8c45fSAndroid Build Coastguard Worker *curr++ = f; 60*38e8c45fSAndroid Build Coastguard Worker entries++; 61*38e8c45fSAndroid Build Coastguard Worker } 62*38e8c45fSAndroid Build Coastguard Worker } 63*38e8c45fSAndroid Build Coastguard Worker 64*38e8c45fSAndroid Build Coastguard Worker void* dso; 65*38e8c45fSAndroid Build Coastguard Worker gl_hooks_t* hooks[2]; 66*38e8c45fSAndroid Build Coastguard Worker EGLint major; 67*38e8c45fSAndroid Build Coastguard Worker EGLint minor; 68*38e8c45fSAndroid Build Coastguard Worker EGLint driverVersion; 69*38e8c45fSAndroid Build Coastguard Worker egl_t egl; 70*38e8c45fSAndroid Build Coastguard Worker 71*38e8c45fSAndroid Build Coastguard Worker // Functions implemented or redirected by platform libraries 72*38e8c45fSAndroid Build Coastguard Worker platform_impl_t platform; 73*38e8c45fSAndroid Build Coastguard Worker 74*38e8c45fSAndroid Build Coastguard Worker void* libEgl; 75*38e8c45fSAndroid Build Coastguard Worker void* libGles1; 76*38e8c45fSAndroid Build Coastguard Worker void* libGles2; 77*38e8c45fSAndroid Build Coastguard Worker 78*38e8c45fSAndroid Build Coastguard Worker bool systemDriverUnloaded; 79*38e8c45fSAndroid Build Coastguard Worker bool angleLoaded; // Was ANGLE successfully loaded 80*38e8c45fSAndroid Build Coastguard Worker 81*38e8c45fSAndroid Build Coastguard Worker void* angleGetDisplayPlatformFunc; 82*38e8c45fSAndroid Build Coastguard Worker void* angleResetDisplayPlatformFunc; 83*38e8c45fSAndroid Build Coastguard Worker }; 84*38e8c45fSAndroid Build Coastguard Worker 85*38e8c45fSAndroid Build Coastguard Worker extern gl_hooks_t gHooks[2]; 86*38e8c45fSAndroid Build Coastguard Worker extern gl_hooks_t gHooksNoContext; 87*38e8c45fSAndroid Build Coastguard Worker extern pthread_key_t gGLWrapperKey; 88*38e8c45fSAndroid Build Coastguard Worker extern "C" void gl_unimplemented(); 89*38e8c45fSAndroid Build Coastguard Worker extern "C" void gl_noop(); 90*38e8c45fSAndroid Build Coastguard Worker extern const char* const gl_names[]; 91*38e8c45fSAndroid Build Coastguard Worker extern const char* const gl_names_1[]; 92*38e8c45fSAndroid Build Coastguard Worker extern const char* const egl_names[]; 93*38e8c45fSAndroid Build Coastguard Worker extern egl_connection_t gEGLImpl; 94*38e8c45fSAndroid Build Coastguard Worker 95*38e8c45fSAndroid Build Coastguard Worker }; // namespace android 96*38e8c45fSAndroid Build Coastguard Worker 97*38e8c45fSAndroid Build Coastguard Worker #endif /* ANDROID_EGLDEFS_H */ 98