diff options
| author | Matthew Parlane <parlane@gmail.com> | 2014-04-14 19:20:04 +1200 |
|---|---|---|
| committer | Matthew Parlane <parlane@gmail.com> | 2014-04-14 19:20:04 +1200 |
| commit | 4e0b7260b66df274b4a109eb925d0f5df79140e2 (patch) | |
| tree | 8168a22c213d3cb8353c3037add4038c4cd52a69 /Source/Core/VideoBackends/OGL/Render.cpp | |
| parent | 60202cff1580ab620c85173dbda2fb2bfc8df973 (diff) | |
| parent | a9fa49f34d1192be3cc09473e99989283bb43fcc (diff) | |
Merge pull request #263 from Sonicadvance1/DetermineMaliVersion
Add Mali driver version check and support of checking for Mali-T7xx
Diffstat (limited to 'Source/Core/VideoBackends/OGL/Render.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 2b7a081fb3..e98c2b8b7a 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -290,10 +290,29 @@ void InitDriverInfo() } break; case DriverDetails::VENDOR_ARM: - if (std::string::npos != srenderer.find("Mali-T6")) - driver = DriverDetails::DRIVER_ARM_T6XX; + // Currently the Mali-T line has two families in it. + // Mali-T6xx and Mali-T7xx + // These two families are similar enough that they share bugs in their drivers. + if (std::string::npos != srenderer.find("Mali-T")) + { + driver = DriverDetails::DRIVER_ARM_TXXX; + // Mali drivers provide no way to explicitly find out what video driver is running. + // This is similar to how we can't find the Nvidia driver version in Windows. + // Good thing is that ARM introduces a new video driver about once every two years so we can + // find the driver version by the features it exposes. + // r2p0 - No OpenGL ES 3.0 support (We don't support this) + // r3p0 - OpenGL ES 3.0 support + // r4p0 - Supports 'GL_EXT_shader_pixel_local_storage' extension. + + if (GLExtensions::Supports("GL_EXT_shader_pixel_local_storage")) + version = 400; + else + version = 300; + } else if (std::string::npos != srenderer.find("Mali-4")) + { driver = DriverDetails::DRIVER_ARM_4XX; + } break; case DriverDetails::VENDOR_MESA: { |
