summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/Render.cpp
diff options
context:
space:
mode:
authorMatthew Parlane <parlane@gmail.com>2014-04-14 19:20:04 +1200
committerMatthew Parlane <parlane@gmail.com>2014-04-14 19:20:04 +1200
commit4e0b7260b66df274b4a109eb925d0f5df79140e2 (patch)
tree8168a22c213d3cb8353c3037add4038c4cd52a69 /Source/Core/VideoBackends/OGL/Render.cpp
parent60202cff1580ab620c85173dbda2fb2bfc8df973 (diff)
parenta9fa49f34d1192be3cc09473e99989283bb43fcc (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.cpp23
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:
{