Merge pull request #2917 from Sonicadvance1/android_fix_sgs6
[Android] Workaround Mali driver issue on the Samsung Galaxy S6.
This commit is contained in:
commit
a16669231a
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/GLInterface/EGL.h"
|
#include "VideoBackends/OGL/GLInterface/EGL.h"
|
||||||
|
#include "VideoCommon/DriverDetails.h"
|
||||||
#include "VideoCommon/RenderBase.h"
|
#include "VideoCommon/RenderBase.h"
|
||||||
|
|
||||||
// Show the current FPS
|
// Show the current FPS
|
||||||
|
@ -13,7 +14,8 @@ void cInterfaceEGL::Swap()
|
||||||
}
|
}
|
||||||
void cInterfaceEGL::SwapInterval(int Interval)
|
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)
|
void* cInterfaceEGL::GetFuncAddress(const std::string& name)
|
||||||
|
|
|
@ -54,6 +54,7 @@ namespace DriverDetails
|
||||||
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM, -1, BUG_BROKENIVECSHIFTS, -1.0, 46.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM, -1, BUG_BROKENIVECSHIFTS, -1.0, 46.0, true},
|
||||||
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM, -1, BUG_BROKENGLES31, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM, -1, BUG_BROKENGLES31, -1.0, -1.0, true},
|
||||||
{OS_ALL, VENDOR_ARM, DRIVER_ARM, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_ARM, DRIVER_ARM, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
||||||
|
{OS_ALL, VENDOR_ARM, DRIVER_ARM, -1, BUG_BROKENVSYNC, -1.0, -1.0, true},
|
||||||
{OS_ALL, VENDOR_IMGTEC, DRIVER_IMGTEC, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_IMGTEC, DRIVER_IMGTEC, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
||||||
{OS_ALL, VENDOR_MESA, DRIVER_NOUVEAU, -1, BUG_BROKENUBO, 900, 916, true},
|
{OS_ALL, VENDOR_MESA, DRIVER_NOUVEAU, -1, BUG_BROKENUBO, 900, 916, true},
|
||||||
{OS_ALL, VENDOR_MESA, DRIVER_R600, -1, BUG_BROKENUBO, 900, 913, true},
|
{OS_ALL, VENDOR_MESA, DRIVER_R600, -1, BUG_BROKENUBO, 900, 913, true},
|
||||||
|
|
|
@ -248,6 +248,17 @@ namespace DriverDetails
|
||||||
// This isn't fully researched, but at the very least Qualcomm doesn't implement Geometry shader features fully.
|
// This isn't fully researched, but at the very least Qualcomm doesn't implement Geometry shader features fully.
|
||||||
// Until each bug is fully investigated, just disable GLES 3.1 entirely on these devices.
|
// Until each bug is fully investigated, just disable GLES 3.1 entirely on these devices.
|
||||||
BUG_BROKENGLES31,
|
BUG_BROKENGLES31,
|
||||||
|
|
||||||
|
// Bug: ARM Mali managed to break disabling vsync
|
||||||
|
// Affected Devices: Mali
|
||||||
|
// Started Version: r5p0-rev2
|
||||||
|
// Ended Version: -1
|
||||||
|
// If we disable vsync with eglSwapInterval(dpy, 0) then the screen will stop showing new updates after a handful of swaps.
|
||||||
|
// This was noticed on a Samsung Galaxy S6 with its Android 5.1.1 update.
|
||||||
|
// The default Android 5.0 image didn't encounter this issue.
|
||||||
|
// We can't actually detect what the driver version is on Android, so until the driver version lands that displays the version in
|
||||||
|
// the GL_VERSION string, we will have to force vsync to be enabled at all times.
|
||||||
|
BUG_BROKENVSYNC,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Initializes our internal vendor, device family, and driver version
|
// Initializes our internal vendor, device family, and driver version
|
||||||
|
|
Loading…
Reference in New Issue