@@ -73,6 +73,7 @@ std::string GetGLDriverVendorName( glDriverVendor_t driverVendor )
7373 " Mesa" ,
7474 " Nvidia" ,
7575 " Moore Threads" ,
76+ " GL4ES" ,
7677 " OutOfRange" ,
7778 };
7879
@@ -89,6 +90,16 @@ std::string GetGLDriverVendorName( glDriverVendor_t driverVendor )
8990 return driverVendorNames[ index ];
9091}
9192
93+ static std::string StripPrefix ( const std::string &prefix, const std::string &string )
94+ {
95+ if ( Str::IsPrefix ( prefix, string ) )
96+ {
97+ return string.substr ( prefix.length () );
98+ }
99+
100+ return string;
101+ }
102+
92103void DetectGLVendors (
93104 const std::string& vendorString,
94105 const std::string& versionString,
@@ -309,4 +320,39 @@ void DetectGLVendors(
309320 hardwareVendor = glHardwareVendor_t::INTEL ;
310321 return ;
311322 }
323+
324+ // Newer GL4ES strings disclosing the underlying technology.
325+ if ( Str::IsPrefix ( " GL4ES wrapping " , vendorString ) )
326+ {
327+ std::string subVendorString = StripPrefix ( " GL4ES wrapping " , vendorString );
328+ std::string subRendererString = StripPrefix ( " GL4ES using " , rendererString );
329+ DetectGLVendors ( subVendorString, versionString, subRendererString, hardwareVendor, driverVendor );
330+ driverVendor = glDriverVendor_t::GL4ES ;
331+ }
332+
333+ /* Older GL4ES string not disclosing the underlying technology,
334+ also had “ptitSeb” as vendorString. */
335+ if ( rendererString == " GL4ES wrapper" )
336+ {
337+ driverVendor = glDriverVendor_t::GL4ES ;
338+ // Older GL4ES doesn't disclose the underlying hardware.
339+ if ( hardwareVendor == glHardwareVendor_t::UNKNOWN )
340+ {
341+ hardwareVendor = glHardwareVendor_t::TRANSLATION ;
342+ }
343+ return ;
344+ }
345+
346+ /* GL4ES always use such kind of version string:
347+ > 2.1 gl4es wrapper 1.1.7
348+ And this is unlikely to change. */
349+ if ( versionString.find ( " gl4es wrapper" ) != std::string::npos )
350+ {
351+ driverVendor = glDriverVendor_t::GL4ES ;
352+ if ( hardwareVendor == glHardwareVendor_t::UNKNOWN )
353+ {
354+ hardwareVendor = glHardwareVendor_t::TRANSLATION ;
355+ }
356+ return ;
357+ }
312358}
0 commit comments