| Index: src/gpu/gl/GrGLUtil.cpp | 
| =================================================================== | 
| --- src/gpu/gl/GrGLUtil.cpp	(revision 9286) | 
| +++ src/gpu/gl/GrGLUtil.cpp	(working copy) | 
| @@ -48,6 +48,37 @@ | 
| } | 
| } | 
|  | 
| +namespace { | 
| +bool get_gl_version_for_mesa(const int mesaMajorVersion, | 
| +                             int* major, | 
| +                             int* minor) { | 
| +    switch (mesaMajorVersion) { | 
| +        case 2: | 
| +        case 3: | 
| +        case 4: | 
| +        case 5: | 
| +        case 6: | 
| +            *major = 1; | 
| +            *minor = mesaMajorVersion - 1; | 
| +            return true; | 
| +        case 7: | 
| +            *major = 2; | 
| +            *minor = 1; | 
| +            return true; | 
| +        case 8: | 
| +            *major = 3; | 
| +            *minor = 0; | 
| +            return true; | 
| +        case 9: | 
| +            *major = 3; | 
| +            *minor = 1; | 
| +            return true; | 
| +        default: | 
| +            return false; | 
| +    } | 
| +} | 
| +} | 
| + | 
| /////////////////////////////////////////////////////////////////////////////// | 
|  | 
| #if GR_GL_LOG_CALLS | 
| @@ -99,7 +130,19 @@ | 
|  | 
| int major, minor; | 
|  | 
| -    int n = sscanf(versionString, "%d.%d", &major, &minor); | 
| +    // check for mesa | 
| +    int mesaMajor, mesaMinor; | 
| +    int n = sscanf(versionString, "%d.%d Mesa %d.%d", &major, &minor, | 
| +                                                     &mesaMajor, &mesaMinor); | 
| +    if (4 == n) { | 
| +        if (get_gl_version_for_mesa(mesaMajor, &major, &minor)) { | 
| +            return GR_GL_VER(major, minor); | 
| +        } else { | 
| +            return 0; | 
| +        } | 
| +    } | 
| + | 
| +    n = sscanf(versionString, "%d.%d", &major, &minor); | 
| if (2 == n) { | 
| return GR_GL_VER(major, minor); | 
| } | 
|  |