From 01db003779ff7240efa40842ac7d44e70a5edb0e Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Fri, 28 Aug 2015 08:54:42 -0500 Subject: [Android] Workaround Mali driver issue on the Samsung Galaxy S6. Samsung updated the video drivers on the SGS6 which introduced a bug when disabling vsync. Both the driver versions are r5p0, but the md5sums of the blob differ. To work around the issue, make sure to never disable vsync by calling eglSwapInterval. We can't actually determine the driver version on Android yet. So until the driver version lands that displays the driver version string in the GL_VERSION string we will need to keep this workaround enabled at all times, which is a bit annoying. Current mali drivers return the video driver version in one of the EGL strings you can query. The issue with that is that Android eats all of those strings, so we can't query it. --- Source/Core/VideoBackends/OGL/GLInterface/EGL.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Source/Core/VideoBackends/OGL/GLInterface/EGL.cpp') diff --git a/Source/Core/VideoBackends/OGL/GLInterface/EGL.cpp b/Source/Core/VideoBackends/OGL/GLInterface/EGL.cpp index 1adbfb06c6..6020be1eaa 100644 --- a/Source/Core/VideoBackends/OGL/GLInterface/EGL.cpp +++ b/Source/Core/VideoBackends/OGL/GLInterface/EGL.cpp @@ -4,6 +4,7 @@ #include "VideoBackends/OGL/GLInterfaceBase.h" #include "VideoBackends/OGL/GLInterface/EGL.h" +#include "VideoCommon/DriverDetails.h" #include "VideoCommon/RenderBase.h" // Show the current FPS @@ -13,7 +14,8 @@ void cInterfaceEGL::Swap() } void cInterfaceEGL::SwapInterval(int Interval) { - eglSwapInterval(egl_dpy, Interval); + if (!DriverDetails::HasBug(DriverDetails::BUG_BROKENVSYNC)) + eglSwapInterval(egl_dpy, Interval); } void* cInterfaceEGL::GetFuncAddress(const std::string& name) -- cgit v1.2.3