Browse Source

REVIEWED: `eglGetPlatformDisplay()` usage

master
Ray 8 hours ago
parent
commit
66755da4c8
1 changed files with 21 additions and 1 deletions
  1. +21
    -1
      src/platforms/rcore_android.c

+ 21
- 1
src/platforms/rcore_android.c View File

@ -919,7 +919,27 @@ static int InitGraphicsDevice(void)
EGLint numConfigs = 0; EGLint numConfigs = 0;
// Get an EGL device connection // Get an EGL device connection
platform.device = eglGetDisplay(EGL_DEFAULT_DISPLAY);
// NOTE: eglGetPlatformDisplay() is preferred over eglGetDisplay() legacy call
platform.device = EGL_NO_DISPLAY;
#if defined(EGL_VERSION_1_5)
platform.device = eglGetPlatformDisplay(EGL_PLATFORM_GBM_KHR, platform.gbmDevice, NULL);
#else
// Check if extension is available for eglGetPlatformDisplayEXT()
// NOTE: Better compatibility with some drivers (e.g. Mali Midgard)
const char *eglClientExtensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
if (eglClientExtensions != NULL)
{
if (strstr(eglClientExtensions, "EGL_EXT_platform_base") != NULL)
{
PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC)eglGetProcAddress("eglGetPlatformDisplayEXT");
if (eglGetPlatformDisplayEXT != NULL) platform.device = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_KHR, platform.gbmDevice, NULL);
}
}
// In case extension not found or display could not be retrieved, try useing legacy version
if (platform.device == EGL_NO_DISPLAY) platform.device = eglGetDisplay(EGL_DEFAULT_DISPLAY);
#endif
if (platform.device == EGL_NO_DISPLAY) if (platform.device == EGL_NO_DISPLAY)
{ {
TRACELOG(LOG_WARNING, "DISPLAY: Failed to initialize EGL device"); TRACELOG(LOG_WARNING, "DISPLAY: Failed to initialize EGL device");

Loading…
Cancel
Save