diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 4ad70be08a..76d55f97d1 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -292,9 +292,25 @@ void InitDriverInfo() break; case DriverDetails::VENDOR_ARM: if (std::string::npos != srenderer.find("Mali-T6")) + { driver = DriverDetails::DRIVER_ARM_T6XX; + // 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: {