GL/Context: Prefer EGL over GLX on ARM
This commit is contained in:
parent
6db90e8116
commit
30556cb40a
|
@ -64,9 +64,12 @@ static void DisableBrokenExtensions(const char* gl_vendor, const char* gl_render
|
||||||
// GL_{EXT,OES}_copy_image seem to be implemented on the CPU in the Mali drivers...
|
// GL_{EXT,OES}_copy_image seem to be implemented on the CPU in the Mali drivers...
|
||||||
// Older drivers don't implement timer queries correctly either.
|
// Older drivers don't implement timer queries correctly either.
|
||||||
int gl_major_version, gl_minor_version, unused_version, major_version, patch_version;
|
int gl_major_version, gl_minor_version, unused_version, major_version, patch_version;
|
||||||
if (std::sscanf(gl_version, "OpenGL ES %d.%d v%d.r%dp%d", &gl_major_version, &gl_minor_version, &unused_version,
|
if ((std::sscanf(gl_version, "OpenGL ES %d.%d v%d.r%dp%d", &gl_major_version, &gl_minor_version, &unused_version,
|
||||||
&major_version, &patch_version) == 5 &&
|
&major_version, &patch_version) == 5 &&
|
||||||
gl_major_version >= 3 && gl_minor_version >= 2 && major_version >= 32)
|
gl_major_version >= 3 && gl_minor_version >= 2 && major_version >= 32) ||
|
||||||
|
(std::sscanf(gl_version, "OpenGL ES %d.%d v%d.g%dp%d", &gl_major_version, &gl_minor_version, &unused_version,
|
||||||
|
&major_version, &patch_version) == 5 &&
|
||||||
|
gl_major_version >= 3 && gl_minor_version >= 2 && major_version > 0))
|
||||||
{
|
{
|
||||||
// r32p0 and beyond seem okay.
|
// r32p0 and beyond seem okay.
|
||||||
Log_VerbosePrintf("Keeping copy_image for driver version '%s'", gl_version);
|
Log_VerbosePrintf("Keeping copy_image for driver version '%s'", gl_version);
|
||||||
|
@ -134,11 +137,17 @@ std::unique_ptr<GL::Context> Context::Create(const WindowInfo& wi, const Version
|
||||||
if (wi.type == WindowInfo::Type::X11)
|
if (wi.type == WindowInfo::Type::X11)
|
||||||
{
|
{
|
||||||
#ifdef USE_EGL
|
#ifdef USE_EGL
|
||||||
|
// Always prefer EGL when running on ARM. Mali drivers don't support GLX,
|
||||||
|
// and anything using Mesa will support EGL anyway.
|
||||||
|
#if defined(__arm__) || defined(__aarch64__)
|
||||||
|
context = ContextEGLX11::Create(wi, versions_to_try, num_versions_to_try);
|
||||||
|
#else
|
||||||
const char* use_egl_x11 = std::getenv("USE_EGL_X11");
|
const char* use_egl_x11 = std::getenv("USE_EGL_X11");
|
||||||
if (use_egl_x11 && std::strcmp(use_egl_x11, "1") == 0)
|
if (use_egl_x11 && std::strcmp(use_egl_x11, "1") == 0)
|
||||||
context = ContextEGLX11::Create(wi, versions_to_try, num_versions_to_try);
|
context = ContextEGLX11::Create(wi, versions_to_try, num_versions_to_try);
|
||||||
else
|
else
|
||||||
context = ContextGLX::Create(wi, versions_to_try, num_versions_to_try);
|
context = ContextGLX::Create(wi, versions_to_try, num_versions_to_try);
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
context = ContextGLX::Create(wi, versions_to_try, num_versions_to_try);
|
context = ContextGLX::Create(wi, versions_to_try, num_versions_to_try);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue