From 5a9abd55a19fb72a1217502c446865b9f13b3a1c Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sat, 6 Feb 2021 19:10:25 +1000 Subject: [PATCH] GL/Context: Disable GL_{EXT,OES}_copy_image on Mali It is **very** slow because it seems to be implemented on the CPU... --- src/common/gl/context.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/common/gl/context.cpp b/src/common/gl/context.cpp index f02879df8..2d84092c9 100644 --- a/src/common/gl/context.cpp +++ b/src/common/gl/context.cpp @@ -52,6 +52,17 @@ static bool ShouldPreferESContext() #endif } +static void DisableBrokenExtensions(const char* gl_vendor, const char* gl_renderer) +{ + if (std::strstr(gl_vendor, "ARM") && std::strstr(gl_renderer, "Mali")) + { + // GL_{EXT,OES}_copy_image seem to be implemented on the CPU in the Mali drivers... + Log_VerbosePrintf("Mali driver detected, disabling GL_{EXT,OES}_copy_image"); + GLAD_GL_EXT_copy_image = 0; + GLAD_GL_OES_copy_image = 0; + } +} + Context::Context(const WindowInfo& wi) : m_wi(wi) {} Context::~Context() = default; @@ -149,6 +160,8 @@ std::unique_ptr Context::Create(const WindowInfo& wi, const Version Log_InfoPrintf("GL_VERSION: %s", gl_version); Log_InfoPrintf("GL_SHADING_LANGUAGE_VERSION: %s", gl_shading_language_version); + DisableBrokenExtensions(gl_vendor, gl_renderer); + return context; }