Avoid calling glGetString(GL_EXTENSIONS) on core profiles

Change-Id: I75c5cd61ddaad91187f65c494f75da720934936d
Reviewed-on: https://skia-review.googlesource.com/118683
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/gl/GrGLContext.cpp b/src/gpu/gl/GrGLContext.cpp
index 2ae4710..ffbae86 100644
--- a/src/gpu/gl/GrGLContext.cpp
+++ b/src/gpu/gl/GrGLContext.cpp
@@ -25,10 +25,6 @@
     GR_GL_CALL_RET(interface.get(), rendererUByte, GetString(GR_GL_RENDERER));
     const char* renderer = reinterpret_cast<const char*>(rendererUByte);
 
-    const GrGLubyte* extensionsUByte;
-    GR_GL_CALL_RET(interface.get(), extensionsUByte, GetString(GR_GL_EXTENSIONS));
-    const char* extensions = reinterpret_cast<const char*>(extensionsUByte);
-
     ConstructorArgs args;
     args.fGLVersion = GrGLGetVersionFromString(ver);
     if (GR_GL_INVALID_VER == args.fGLVersion) {
@@ -41,7 +37,7 @@
 
     args.fVendor = GrGLGetVendor(interface.get());
 
-    args.fRenderer = GrGLGetRendererFromStrings(renderer, extensions);
+    args.fRenderer = GrGLGetRendererFromStrings(renderer, interface->fExtensions);
 
     GrGLGetANGLEInfoFromString(renderer, &args.fANGLEBackend, &args.fANGLEVendor,
                                &args.fANGLERenderer);
diff --git a/src/gpu/gl/GrGLUtil.cpp b/src/gpu/gl/GrGLUtil.cpp
index 16b3de5..54bf0d3 100644
--- a/src/gpu/gl/GrGLUtil.cpp
+++ b/src/gpu/gl/GrGLUtil.cpp
@@ -292,15 +292,15 @@
     return 0 == strncmp(rendererString, kHeader, kHeaderLength);
 }
 
-GrGLRenderer GrGLGetRendererFromStrings(const char* rendererString, const char* extensionString) {
+GrGLRenderer GrGLGetRendererFromStrings(const char* rendererString,
+                                        const GrGLExtensions& extensions) {
     if (rendererString) {
         static const char kTegraStr[] = "NVIDIA Tegra";
         if (0 == strncmp(rendererString, kTegraStr, SK_ARRAY_COUNT(kTegraStr) - 1)) {
             // Tegra strings are not very descriptive. We distinguish between the modern and legacy
             // architectures by the presence of NV_path_rendering.
-            return (extensionString && strstr(extensionString, "GL_NV_path_rendering"))
-                           ? kTegra_GrGLRenderer
-                           : kTegra_PreK1_GrGLRenderer;
+            return extensions.has("GL_NV_path_rendering") ? kTegra_GrGLRenderer
+                                                          : kTegra_PreK1_GrGLRenderer;
         }
         int lastDigit;
         int n = sscanf(rendererString, "PowerVR SGX 54%d", &lastDigit);
@@ -476,10 +476,7 @@
     const GrGLubyte* rendererString;
     GR_GL_CALL_RET(gl, rendererString, GetString(GR_GL_RENDERER));
 
-    const GrGLubyte* extensionString;
-    GR_GL_CALL_RET(gl, extensionString, GetString(GR_GL_EXTENSIONS));
-
-    return GrGLGetRendererFromStrings((const char*) rendererString, (const char*) extensionString);
+    return GrGLGetRendererFromStrings((const char*)rendererString, gl->fExtensions);
 }
 
 GrGLenum GrToGLStencilFunc(GrStencilTest test) {
diff --git a/src/gpu/gl/GrGLUtil.h b/src/gpu/gl/GrGLUtil.h
index 212d0da..5280834 100644
--- a/src/gpu/gl/GrGLUtil.h
+++ b/src/gpu/gl/GrGLUtil.h
@@ -162,7 +162,7 @@
 GrGLStandard GrGLGetStandardInUseFromString(const char* versionString);
 GrGLSLVersion GrGLGetGLSLVersionFromString(const char* versionString);
 GrGLVendor GrGLGetVendorFromString(const char* vendorString);
-GrGLRenderer GrGLGetRendererFromStrings(const char* rendererString, const char* extensionString);
+GrGLRenderer GrGLGetRendererFromStrings(const char* rendererString, const GrGLExtensions&);
 void GrGLGetANGLEInfoFromString(const char* rendererString, GrGLANGLEBackend*,
                                 GrGLANGLEVendor*, GrGLANGLERenderer*);