[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.
This commit is contained in:
Ryan Houdek
2015-08-28 08:54:42 -05:00
parent d373dd372d
commit 01db003779
3 changed files with 15 additions and 1 deletions

View File

@ -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)