diff --git a/gpu/include/GrGLInterface.h b/gpu/include/GrGLInterface.h
index 1a3dade..5802ec4 100644
--- a/gpu/include/GrGLInterface.h
+++ b/gpu/include/GrGLInterface.h
@@ -205,6 +205,10 @@
     typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLBindFragDataLocationIndexedProc)(GrGLuint program, GrGLuint colorNumber, GrGLuint index, const GrGLchar * name);
 }  // extern "C"
 
+enum GrGLBug {
+    kProbe_GrGLBug = -1
+};
+
 /*
  * The following interface exports the OpenGL entry points used by the system.
  * Use of OpenGL calls is disallowed.  All calls should be invoked through
@@ -222,12 +226,12 @@
     GrGLBinding fBindingsExported;
 
     /// Does this GL support NPOT textures on FBOs?
-    /// boolean value, or -1 to probe (slowly) at context creation.
+    /// boolean value, or kProbe_GrGLBug to probe (slowly) at context creation.
     int fNPOTRenderTargetSupport;
 
     /// Some GL implementations (PowerVR SGX devices like the iPhone 4)
     /// have restrictions on the size of small render targets.
-    /// -1 to probe (slowly) at context creation.
+    /// kProbe_GrGLBug to probe (slowly) at context creation.
     int fMinRenderTargetHeight;
     int fMinRenderTargetWidth;
 
diff --git a/gpu/src/GrGpuGL.cpp b/gpu/src/GrGpuGL.cpp
index 177ddb1..973e1e4 100644
--- a/gpu/src/GrGpuGL.cpp
+++ b/gpu/src/GrGpuGL.cpp
@@ -471,10 +471,11 @@
     // TODO: Make these a preprocess that generate some compile time constants.
     // TODO: probe once at startup, rather than once per context creation.
 
-    fNPOTRenderTargetSupport = GrGLGetGLInterface()->fNPOTRenderTargetSupport;
-    if (fNPOTRenderTargetSupport < 0) {
+    if (GrGLGetGLInterface()->fNPOTRenderTargetSupport < 0) {
         fNPOTRenderTargetSupport =
             probe_for_npot_render_target_support(fNPOTTextureSupport);
+    } else {
+        fNPOTRenderTargetSupport = GrGLGetGLInterface()->fNPOTRenderTargetSupport;
     }
 
     if (gPrintStartupSpew) {
diff --git a/gpu/src/android/GrGLDefaultInterface_android.cpp b/gpu/src/android/GrGLDefaultInterface_android.cpp
index 38e7708..54bc2f6 100644
--- a/gpu/src/android/GrGLDefaultInterface_android.cpp
+++ b/gpu/src/android/GrGLDefaultInterface_android.cpp
@@ -19,9 +19,9 @@
 void GrGLSetDefaultGLInterface() {
   static GrGLInterface cmd_buffer_interface = {
     kES2_GrGLBinding,
-    -1,  // fNPOTRenderTargetSupport
-    -1,  // fMinRenderTargetHeight
-    -1,  // fMinRenderTargetWidth
+    kProbe_GrGLBug,  // fNPOTRenderTargetSupport
+    kProbe_GrGLBug,  // fMinRenderTargetHeight
+    kProbe_GrGLBug,  // fMinRenderTargetWidth
     glActiveTexture,
     glAttachShader,
     glBindAttribLocation,
diff --git a/gpu/src/mac/GrGLDefaultInterface_mac.cpp b/gpu/src/mac/GrGLDefaultInterface_mac.cpp
index a49f238..cfa528a 100644
--- a/gpu/src/mac/GrGLDefaultInterface_mac.cpp
+++ b/gpu/src/mac/GrGLDefaultInterface_mac.cpp
@@ -23,7 +23,7 @@
     static GrGLInterface gDefaultInterface;
     static bool gDefaultInterfaceInit;
     if (!gDefaultInterfaceInit) {
-        gDefaultInterface.fNPOTRenderTargetSupport = 1;
+        gDefaultInterface.fNPOTRenderTargetSupport = true;
         gDefaultInterface.fMinRenderTargetHeight = 1;
         gDefaultInterface.fMinRenderTargetWidth = 1;
 
diff --git a/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp b/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
index 6852eb7..bc75a2c 100644
--- a/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
+++ b/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
@@ -38,7 +38,7 @@
             // We must have array and element_array buffer objects.
             return;
         }
-        gDefaultInterface.fNPOTRenderTargetSupport = 1;
+        gDefaultInterface.fNPOTRenderTargetSupport = true;
         gDefaultInterface.fMinRenderTargetHeight = 1;
         gDefaultInterface.fMinRenderTargetWidth = 1;
 
diff --git a/gpu/src/unix/GrGLDefaultInterface_unix.cpp b/gpu/src/unix/GrGLDefaultInterface_unix.cpp
index f58b215..2e233e0 100644
--- a/gpu/src/unix/GrGLDefaultInterface_unix.cpp
+++ b/gpu/src/unix/GrGLDefaultInterface_unix.cpp
@@ -40,7 +40,7 @@
             return;
         }
 
-        gDefaultInterface.fNPOTRenderTargetSupport = 1;
+        gDefaultInterface.fNPOTRenderTargetSupport = true;
         gDefaultInterface.fMinRenderTargetHeight = 1;
         gDefaultInterface.fMinRenderTargetWidth = 1;
 
diff --git a/gpu/src/win/GrGLDefaultInterface_win.cpp b/gpu/src/win/GrGLDefaultInterface_win.cpp
index 7f680a67..9b40a94 100644
--- a/gpu/src/win/GrGLDefaultInterface_win.cpp
+++ b/gpu/src/win/GrGLDefaultInterface_win.cpp
@@ -45,7 +45,7 @@
                 return;
             }
 
-            gDefaultInterface.fNPOTRenderTargetSupport = 1;
+            gDefaultInterface.fNPOTRenderTargetSupport = true;
             gDefaultInterface.fMinRenderTargetHeight = 1;
             gDefaultInterface.fMinRenderTargetWidth = 1;
 
