28 const char* extensions = ::eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
31 FML_LOG(ERROR) <<
"Could not query EGL extensions.";
32 return EGL_NO_DISPLAY;
35 if (!
HasExtension(extensions,
"EGL_EXT_platform_base")) {
36 FML_LOG(ERROR) <<
"EGL_EXT_platform_base extension not available";
37 return EGL_NO_DISPLAY;
40 if (!
HasExtension(extensions,
"EGL_ANGLE_platform_angle_vulkan")) {
41 FML_LOG(ERROR) <<
"EGL_ANGLE_platform_angle_vulkan extension not available";
42 return EGL_NO_DISPLAY;
46 "EGL_ANGLE_platform_angle_device_type_swiftshader")) {
47 FML_LOG(ERROR) <<
"EGL_ANGLE_platform_angle_device_type_swiftshader "
48 "extension not available";
49 return EGL_NO_DISPLAY;
52 PFNEGLGETPLATFORMDISPLAYEXTPROC egl_get_platform_display_EXT =
53 reinterpret_cast<PFNEGLGETPLATFORMDISPLAYEXTPROC
>(
54 eglGetProcAddress(
"eglGetPlatformDisplayEXT"));
56 if (!egl_get_platform_display_EXT) {
57 FML_LOG(ERROR) <<
"eglGetPlatformDisplayEXT not available.";
58 return EGL_NO_DISPLAY;
61 const EGLint display_config[] = {
62 EGL_PLATFORM_ANGLE_TYPE_ANGLE,
63 EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE,
64 EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE,
65 EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE,
66 EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE,
67 EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE,
71 return egl_get_platform_display_EXT(
72 EGL_PLATFORM_ANGLE_ANGLE,
73 reinterpret_cast<EGLNativeDisplayType*
>(EGL_DEFAULT_DISPLAY),