diff --git a/gpu/include/GrGLInterface.h b/gpu/include/GrGLInterface.h
index 3fd4fd9..37ea3c4 100644
--- a/gpu/include/GrGLInterface.h
+++ b/gpu/include/GrGLInterface.h
@@ -45,14 +45,14 @@
  * passed to Create then the "default" GL interface is used. If the default is
  * also NULL GrContext creation will fail.
  *
- * The default interface is specified by calling GrGLSetDefaultInterface. If
- * this function hasn't been called or was last called with NULL then
- * GrGLInitializeDefaultGLInterface will be called to attempt to initialize it.
- * There are several implementations of this function provided. Each builds a
- * GrGLInterface for a specific platform and sets it as the default. There is
- * also an implementation that does nothing. You can link in any of the provided
- * implementations or your own implementation that sets up the GL function 
- * pointers for your specific platform.
+ * The default interface is returned by GrGLDefaultInterface. This function's
+ * implementation is platform-specifc. Several have been provided, along with an
+ * implementation that simply returns NULL. It is implementation-specific
+ * whether the same GrGLInterface is returned or whether a new one is created
+ * at each call. Some platforms may not be able to use a single GrGLInterface
+ * because extension function ptrs vary across contexts. Note that GrGLInterface
+ * is ref-counted. So if the same object is returned by multiple calls to 
+ * GrGLDefaultInterface, each should bump the ref count.
  *
  * By defining GR_GL_PER_GL_CALL_IFACE_CALLBACK to 1 the client can specify a
  * callback function that will be called prior to each GL function call. See
@@ -61,13 +61,7 @@
 
 struct GrGLInterface;
 
-GR_API const GrGLInterface* GrGLGetDefaultGLInterface();
-// returns param so that you can unref it
-GR_API const GrGLInterface* GrGLSetDefaultGLInterface(const GrGLInterface* gl_interface);
-
-// If this is implemented it must allocate a GrGLInterface on the heap because
-// GrGLInterface subclasses SkRefCnt.
-void GrGLInitializeDefaultGLInterface();
+const GrGLInterface* GrGLDefaultInterface();
 
 typedef unsigned int GrGLenum;
 typedef unsigned char GrGLboolean;
diff --git a/gpu/src/GrGLDefaultInterface_none.cpp b/gpu/src/GrGLDefaultInterface_none.cpp
index 9378907..b6308e3 100644
--- a/gpu/src/GrGLDefaultInterface_none.cpp
+++ b/gpu/src/GrGLDefaultInterface_none.cpp
@@ -7,5 +7,6 @@
  */
 
 
-void GrGLInitializeDefaultGLInterface() {
+const GrGLInterface* GrGLDefaultInterface() {
+    return NULL;
 }
diff --git a/gpu/src/GrGLInterface.cpp b/gpu/src/GrGLInterface.cpp
index 38770f1..4bbcfa5 100644
--- a/gpu/src/GrGLInterface.cpp
+++ b/gpu/src/GrGLInterface.cpp
@@ -19,8 +19,6 @@
 }
 #endif
 
-static SkAutoTUnref<const GrGLInterface> gDefaultGLInterface;
-
 void gl_version_from_string(int* major, int* minor,
                             const char* versionString) {
     if (NULL == versionString) {
@@ -89,19 +87,6 @@
     return false;
 }
 
-GR_API const GrGLInterface* GrGLSetDefaultGLInterface(const GrGLInterface* gl_interface) {
-    gl_interface->ref();
-    gDefaultGLInterface.reset(gl_interface);
-    return gl_interface;
-}
-
-GR_API const GrGLInterface* GrGLGetDefaultGLInterface() {
-    if (NULL == gDefaultGLInterface.get()) {
-        GrGLInitializeDefaultGLInterface();
-    }
-    return gDefaultGLInterface.get();
-}
-
 bool has_gl_extension(const GrGLInterface* gl, const char* ext) {
     const GrGLubyte* glstr;
     GR_GL_CALL_RET(gl, glstr, GetString(GR_GL_EXTENSIONS));
diff --git a/gpu/src/GrGpuFactory.cpp b/gpu/src/GrGpuFactory.cpp
index 071e67c..a7aa4d5 100644
--- a/gpu/src/GrGpuFactory.cpp
+++ b/gpu/src/GrGpuFactory.cpp
@@ -23,12 +23,17 @@
 GrGpu* GrGpu::Create(GrEngine engine, GrPlatform3DContext context3D) {
 
     const GrGLInterface* glInterface = NULL;
+    SkAutoTUnref<const GrGLInterface> glInterfaceUnref;
 
     if (kOpenGL_Shaders_GrEngine == engine ||
         kOpenGL_Fixed_GrEngine == engine) {
         glInterface = reinterpret_cast<const GrGLInterface*>(context3D);
         if (NULL == glInterface) {
-            glInterface = GrGLGetDefaultGLInterface();
+            glInterface = GrGLDefaultInterface();
+            // By calling GrGLDefaultInterface we've taken a ref on the
+            // returned object. We only want to hold that ref until after
+            // the GrGpu is constructed and has taken ownership.
+            glInterfaceUnref.reset(glInterface);
         }
         if (NULL == glInterface) {
 #if GR_DEBUG
diff --git a/gpu/src/android/GrGLDefaultInterface_android.cpp b/gpu/src/android/GrGLDefaultInterface_android.cpp
index 269de97..7de4bd1 100644
--- a/gpu/src/android/GrGLDefaultInterface_android.cpp
+++ b/gpu/src/android/GrGLDefaultInterface_android.cpp
@@ -13,104 +13,108 @@
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
 
-void GrGLInitializeDefaultGLInterface() {
-    GrGLInterface* glInterface = new GrGLInterface;
-
-    glInterface->fBindingsExported = kES2_GrGLBinding;
-    glInterface->fActiveTexture = glActiveTexture;
-    glInterface->fAttachShader = glAttachShader;
-    glInterface->fBindAttribLocation = glBindAttribLocation;
-    glInterface->fBindBuffer = glBindBuffer;
-    glInterface->fBindTexture = glBindTexture;
-    glInterface->fBlendColor = glBlendColor;
-    glInterface->fBlendFunc = glBlendFunc;
-    glInterface->fBufferData = glBufferData;
-    glInterface->fBufferSubData = glBufferSubData;
-    glInterface->fClear = glClear;
-    glInterface->fClearColor = glClearColor;
-    glInterface->fClearStencil = glClearStencil;
-    glInterface->fColorMask = glColorMask;
-    glInterface->fCompileShader = glCompileShader;
-    glInterface->fCompressedTexImage2D = glCompressedTexImage2D;
-    glInterface->fCreateProgram = glCreateProgram;
-    glInterface->fCreateShader = glCreateShader;
-    glInterface->fCullFace = glCullFace;
-    glInterface->fDeleteBuffers = glDeleteBuffers;
-    glInterface->fDeleteProgram = glDeleteProgram;
-    glInterface->fDeleteShader = glDeleteShader;
-    glInterface->fDeleteTextures = glDeleteTextures;
-    glInterface->fDepthMask = glDepthMask;
-    glInterface->fDisable = glDisable;
-    glInterface->fDisableVertexAttribArray = glDisableVertexAttribArray;
-    glInterface->fDrawArrays = glDrawArrays;
-    glInterface->fDrawElements = glDrawElements;
-    glInterface->fEnable = glEnable;
-    glInterface->fEnableVertexAttribArray = glEnableVertexAttribArray;
-    glInterface->fFrontFace = glFrontFace;
-    glInterface->fGenBuffers = glGenBuffers;
-    glInterface->fGenTextures = glGenTextures;
-    glInterface->fGetBufferParameteriv = glGetBufferParameteriv;
-    glInterface->fGetError = glGetError;
-    glInterface->fGetIntegerv = glGetIntegerv;
-    glInterface->fGetProgramInfoLog = glGetProgramInfoLog;
-    glInterface->fGetProgramiv = glGetProgramiv;
-    glInterface->fGetShaderInfoLog = glGetShaderInfoLog;
-    glInterface->fGetShaderiv = glGetShaderiv;
-    glInterface->fGetString = glGetString;
-    glInterface->fGetUniformLocation = glGetUniformLocation;
-    glInterface->fLineWidth = glLineWidth;
-    glInterface->fLinkProgram = glLinkProgram;
-    glInterface->fPixelStorei = glPixelStorei;
-    glInterface->fReadPixels = glReadPixels;
-    glInterface->fScissor = glScissor;
-    glInterface->fShaderSource = glShaderSource;
-    glInterface->fStencilFunc = glStencilFunc;
-    glInterface->fStencilFuncSeparate = glStencilFuncSeparate;
-    glInterface->fStencilMask = glStencilMask;
-    glInterface->fStencilMaskSeparate = glStencilMaskSeparate;
-    glInterface->fStencilOp = glStencilOp;
-    glInterface->fStencilOpSeparate = glStencilOpSeparate;
-    glInterface->fTexImage2D = glTexImage2D;
-    glInterface->fTexParameteri = glTexParameteri;
-    glInterface->fTexSubImage2D = glTexSubImage2D;
-    glInterface->fUniform1f = glUniform1f;
-    glInterface->fUniform1i = glUniform1i;
-    glInterface->fUniform1fv = glUniform1fv;
-    glInterface->fUniform1iv = glUniform1iv;
-    glInterface->fUniform2f = glUniform2f;
-    glInterface->fUniform2i = glUniform2i;
-    glInterface->fUniform2fv = glUniform2fv;
-    glInterface->fUniform2iv = glUniform2iv;
-    glInterface->fUniform3f = glUniform3f;
-    glInterface->fUniform3i = glUniform3i;
-    glInterface->fUniform3fv = glUniform3fv;
-    glInterface->fUniform3iv = glUniform3iv;
-    glInterface->fUniform4f = glUniform4f;
-    glInterface->fUniform4i = glUniform4i;
-    glInterface->fUniform4fv = glUniform4fv;
-    glInterface->fUniform4iv = glUniform4iv;
-    glInterface->fUniformMatrix2fv = glUniformMatrix2fv;
-    glInterface->fUniformMatrix3fv = glUniformMatrix3fv;
-    glInterface->fUniformMatrix4fv = glUniformMatrix4fv;
-    glInterface->fUseProgram = glUseProgram;
-    glInterface->fVertexAttrib4fv = glVertexAttrib4fv;
-    glInterface->fVertexAttribPointer = glVertexAttribPointer;
-    glInterface->fViewport = glViewport;
-    glInterface->fBindFramebuffer = glBindFramebuffer;
-    glInterface->fBindRenderbuffer = glBindRenderbuffer;
-    glInterface->fCheckFramebufferStatus = glCheckFramebufferStatus;
-    glInterface->fDeleteFramebuffers = glDeleteFramebuffers;
-    glInterface->fDeleteRenderbuffers = glDeleteRenderbuffers;
-    glInterface->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
-    glInterface->fFramebufferTexture2D = glFramebufferTexture2D;
-    glInterface->fGenFramebuffers = glGenFramebuffers;
-    glInterface->fGenRenderbuffers = glGenRenderbuffers;
-    glInterface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv;
-    glInterface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
-    glInterface->fRenderbufferStorage = glRenderbufferStorage;
-#if GL_OES_mapbuffer
-    glInterface->fMapBuffer = glMapBufferOES;
-    glInterface->fUnmapBuffer = glUnmapBufferOES;
-#endif
-    GrGLSetDefaultGLInterface(glInterface)->unref();
+const GrGLInterface* GrGLDefaultInterface() {
+    static SkAutoTUnref<GrGLInterface> glInterface;
+    if (!glInterface.get()) {
+        GrGLInteface* interface = new GrGLInterface;
+        glInterface.reset(interface);
+        interface->fBindingsExported = kES2_GrGLBinding;
+        interface->fActiveTexture = glActiveTexture;
+        interface->fAttachShader = glAttachShader;
+        interface->fBindAttribLocation = glBindAttribLocation;
+        interface->fBindBuffer = glBindBuffer;
+        interface->fBindTexture = glBindTexture;
+        interface->fBlendColor = glBlendColor;
+        interface->fBlendFunc = glBlendFunc;
+        interface->fBufferData = glBufferData;
+        interface->fBufferSubData = glBufferSubData;
+        interface->fClear = glClear;
+        interface->fClearColor = glClearColor;
+        interface->fClearStencil = glClearStencil;
+        interface->fColorMask = glColorMask;
+        interface->fCompileShader = glCompileShader;
+        interface->fCompressedTexImage2D = glCompressedTexImage2D;
+        interface->fCreateProgram = glCreateProgram;
+        interface->fCreateShader = glCreateShader;
+        interface->fCullFace = glCullFace;
+        interface->fDeleteBuffers = glDeleteBuffers;
+        interface->fDeleteProgram = glDeleteProgram;
+        interface->fDeleteShader = glDeleteShader;
+        interface->fDeleteTextures = glDeleteTextures;
+        interface->fDepthMask = glDepthMask;
+        interface->fDisable = glDisable;
+        interface->fDisableVertexAttribArray = glDisableVertexAttribArray;
+        interface->fDrawArrays = glDrawArrays;
+        interface->fDrawElements = glDrawElements;
+        interface->fEnable = glEnable;
+        interface->fEnableVertexAttribArray = glEnableVertexAttribArray;
+        interface->fFrontFace = glFrontFace;
+        interface->fGenBuffers = glGenBuffers;
+        interface->fGenTextures = glGenTextures;
+        interface->fGetBufferParameteriv = glGetBufferParameteriv;
+        interface->fGetError = glGetError;
+        interface->fGetIntegerv = glGetIntegerv;
+        interface->fGetProgramInfoLog = glGetProgramInfoLog;
+        interface->fGetProgramiv = glGetProgramiv;
+        interface->fGetShaderInfoLog = glGetShaderInfoLog;
+        interface->fGetShaderiv = glGetShaderiv;
+        interface->fGetString = glGetString;
+        interface->fGetUniformLocation = glGetUniformLocation;
+        interface->fLineWidth = glLineWidth;
+        interface->fLinkProgram = glLinkProgram;
+        interface->fPixelStorei = glPixelStorei;
+        interface->fReadPixels = glReadPixels;
+        interface->fScissor = glScissor;
+        interface->fShaderSource = glShaderSource;
+        interface->fStencilFunc = glStencilFunc;
+        interface->fStencilFuncSeparate = glStencilFuncSeparate;
+        interface->fStencilMask = glStencilMask;
+        interface->fStencilMaskSeparate = glStencilMaskSeparate;
+        interface->fStencilOp = glStencilOp;
+        interface->fStencilOpSeparate = glStencilOpSeparate;
+        interface->fTexImage2D = glTexImage2D;
+        interface->fTexParameteri = glTexParameteri;
+        interface->fTexSubImage2D = glTexSubImage2D;
+        interface->fUniform1f = glUniform1f;
+        interface->fUniform1i = glUniform1i;
+        interface->fUniform1fv = glUniform1fv;
+        interface->fUniform1iv = glUniform1iv;
+        interface->fUniform2f = glUniform2f;
+        interface->fUniform2i = glUniform2i;
+        interface->fUniform2fv = glUniform2fv;
+        interface->fUniform2iv = glUniform2iv;
+        interface->fUniform3f = glUniform3f;
+        interface->fUniform3i = glUniform3i;
+        interface->fUniform3fv = glUniform3fv;
+        interface->fUniform3iv = glUniform3iv;
+        interface->fUniform4f = glUniform4f;
+        interface->fUniform4i = glUniform4i;
+        interface->fUniform4fv = glUniform4fv;
+        interface->fUniform4iv = glUniform4iv;
+        interface->fUniformMatrix2fv = glUniformMatrix2fv;
+        interface->fUniformMatrix3fv = glUniformMatrix3fv;
+        interface->fUniformMatrix4fv = glUniformMatrix4fv;
+        interface->fUseProgram = glUseProgram;
+        interface->fVertexAttrib4fv = glVertexAttrib4fv;
+        interface->fVertexAttribPointer = glVertexAttribPointer;
+        interface->fViewport = glViewport;
+        interface->fBindFramebuffer = glBindFramebuffer;
+        interface->fBindRenderbuffer = glBindRenderbuffer;
+        interface->fCheckFramebufferStatus = glCheckFramebufferStatus;
+        interface->fDeleteFramebuffers = glDeleteFramebuffers;
+        interface->fDeleteRenderbuffers = glDeleteRenderbuffers;
+        interface->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
+        interface->fFramebufferTexture2D = glFramebufferTexture2D;
+        interface->fGenFramebuffers = glGenFramebuffers;
+        interface->fGenRenderbuffers = glGenRenderbuffers;
+        interface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv;
+        interface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
+        interface->fRenderbufferStorage = glRenderbufferStorage;
+    #if GL_OES_mapbuffer
+        interface->fMapBuffer = glMapBufferOES;
+        interface->fUnmapBuffer = glUnmapBufferOES;
+    #endif
+    }
+    glInterface.get()->ref();
+    return glInterface.get();
 }
diff --git a/gpu/src/ios/GrGLDefaultInterface_iOS.cpp b/gpu/src/ios/GrGLDefaultInterface_iOS.cpp
index 8755299..7be40db 100644
--- a/gpu/src/ios/GrGLDefaultInterface_iOS.cpp
+++ b/gpu/src/ios/GrGLDefaultInterface_iOS.cpp
@@ -15,135 +15,138 @@
 #import <OpenGLES/ES2/gl.h>
 #import <OpenGLES/ES2/glext.h>
 
-void GrGLInitializeDefaultGLInterface() {
-    GrGLInterface* defaultInterface = new GrGLInterface();
+const GrGLInterface* GrGLDefaultInterface() {
+    static SkAutoTUnref<GrGLInterface> glInterface;
+    if (!glInterface.get()) {
+        GrGLInteface* interface = new GrGLInterface;
+        glInterface.reset(interface);
 
-    defaultInterface->fNPOTRenderTargetSupport = kProbe_GrGLCapability;
-    defaultInterface->fMinRenderTargetHeight = kProbe_GrGLCapability;
-    defaultInterface->fMinRenderTargetWidth = kProbe_GrGLCapability;
-    defaultInterface->fActiveTexture = glActiveTexture;
-    defaultInterface->fAttachShader = glAttachShader;
-    defaultInterface->fBindAttribLocation = glBindAttribLocation;
-    defaultInterface->fBindBuffer = glBindBuffer;
-    defaultInterface->fBindTexture = glBindTexture;
-    defaultInterface->fBlendColor = glBlendColor;
-    defaultInterface->fBlendFunc = glBlendFunc;
-    defaultInterface->fBufferData = (GrGLBufferDataProc)glBufferData;
-    defaultInterface->fBufferSubData = (GrGLBufferSubDataProc)glBufferSubData;
-    defaultInterface->fClear = glClear;
-    defaultInterface->fClearColor = glClearColor;
-    defaultInterface->fClearStencil = glClearStencil;
-    defaultInterface->fClientActiveTexture = glClientActiveTexture;
-    defaultInterface->fColorMask = glColorMask;
-    defaultInterface->fColorPointer = glColorPointer;
-    defaultInterface->fColor4ub = glColor4ub;
-    defaultInterface->fCompileShader = glCompileShader;
-    defaultInterface->fCompressedTexImage2D = glCompressedTexImage2D;
-    defaultInterface->fCreateProgram = glCreateProgram;
-    defaultInterface->fCreateShader = glCreateShader;
-    defaultInterface->fCullFace = glCullFace;
-    defaultInterface->fDeleteBuffers = glDeleteBuffers;
-    defaultInterface->fDeleteProgram = glDeleteProgram;
-    defaultInterface->fDeleteShader = glDeleteShader;
-    defaultInterface->fDeleteTextures = glDeleteTextures;
-    defaultInterface->fDepthMask = glDepthMask;
-    defaultInterface->fDisable = glDisable;
-    defaultInterface->fDisableClientState = glDisableClientState;
-    defaultInterface->fDisableVertexAttribArray =
-    glDisableVertexAttribArray;
-    defaultInterface->fDrawArrays = glDrawArrays;
-    defaultInterface->fDrawBuffer = NULL;
-    defaultInterface->fDrawBuffers = NULL;
-    defaultInterface->fDrawElements = glDrawElements;
-    defaultInterface->fEnable = glEnable;
-    defaultInterface->fEnableClientState = glEnableClientState;
-    defaultInterface->fEnableVertexAttribArray = glEnableVertexAttribArray;
-    defaultInterface->fFrontFace = glFrontFace;
-    defaultInterface->fGenBuffers = glGenBuffers;
-    defaultInterface->fGetBufferParameteriv = glGetBufferParameteriv;
-    defaultInterface->fGetError = glGetError;
-    defaultInterface->fGetIntegerv = glGetIntegerv;
-    defaultInterface->fGetProgramInfoLog = glGetProgramInfoLog;
-    defaultInterface->fGetProgramiv = glGetProgramiv;
-    defaultInterface->fGetShaderInfoLog = glGetShaderInfoLog;
-    defaultInterface->fGetShaderiv = glGetShaderiv;
-    defaultInterface->fGetString = glGetString;
-    defaultInterface->fGenTextures = glGenTextures;
-    defaultInterface->fGetUniformLocation = glGetUniformLocation;
-    defaultInterface->fLineWidth = glLineWidth;
-    defaultInterface->fLinkProgram = glLinkProgram;
-    defaultInterface->fLoadMatrixf = glLoadMatrixf;
-    defaultInterface->fMatrixMode = glMatrixMode;
-    defaultInterface->fPointSize = glPointSize;
-    defaultInterface->fPixelStorei = glPixelStorei;
-    defaultInterface->fReadBuffer = NULL;
-    defaultInterface->fReadPixels = glReadPixels;
-    defaultInterface->fScissor = glScissor;
-    defaultInterface->fShadeModel = glShadeModel;
-    defaultInterface->fShaderSource = glShaderSource;
-    defaultInterface->fStencilFunc = glStencilFunc;
-    defaultInterface->fStencilFuncSeparate = glStencilFuncSeparate;
-    defaultInterface->fStencilMask = glStencilMask;
-    defaultInterface->fStencilMaskSeparate = glStencilMaskSeparate;
-    defaultInterface->fStencilOp = glStencilOp;
-    defaultInterface->fStencilOpSeparate = glStencilOpSeparate;
-    defaultInterface->fTexCoordPointer = glTexCoordPointer;
-    defaultInterface->fTexEnvi = glTexEnvi;
-    // mac uses GLenum for internalFormat param (non-standard)
-    // amounts to int vs. uint.
-    defaultInterface->fTexImage2D = (GrGLTexImage2DProc)glTexImage2D;
-    defaultInterface->fTexParameteri = glTexParameteri;
-    defaultInterface->fTexSubImage2D = glTexSubImage2D;
-    defaultInterface->fUniform1f = glUniform1f;
-    defaultInterface->fUniform1i = glUniform1i;
-    defaultInterface->fUniform1fv = glUniform1fv;
-    defaultInterface->fUniform1iv = glUniform1iv;
-    defaultInterface->fUniform2f = glUniform2f;
-    defaultInterface->fUniform2i = glUniform2i;
-    defaultInterface->fUniform2fv = glUniform2fv;
-    defaultInterface->fUniform2iv = glUniform2iv;
-    defaultInterface->fUniform3f = glUniform3f;
-    defaultInterface->fUniform3i = glUniform3i;
-    defaultInterface->fUniform3fv = glUniform3fv;
-    defaultInterface->fUniform3iv = glUniform3iv;
-    defaultInterface->fUniform4f = glUniform4f;
-    defaultInterface->fUniform4i = glUniform4i;
-    defaultInterface->fUniform4fv = glUniform4fv;
-    defaultInterface->fUniform4iv = glUniform4iv;
-    defaultInterface->fUniform4fv = glUniform4fv;
-    defaultInterface->fUniformMatrix2fv = glUniformMatrix2fv;
-    defaultInterface->fUniformMatrix3fv = glUniformMatrix3fv;
-    defaultInterface->fUniformMatrix4fv = glUniformMatrix4fv;
-    defaultInterface->fUseProgram = glUseProgram;
-    defaultInterface->fVertexAttrib4fv = glVertexAttrib4fv;
-    defaultInterface->fVertexAttribPointer = glVertexAttribPointer;
-    defaultInterface->fVertexPointer = glVertexPointer;
-    defaultInterface->fViewport = glViewport;
-    defaultInterface->fGenFramebuffers = glGenFramebuffers;
-    defaultInterface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv;
-    defaultInterface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
-    defaultInterface->fBindFramebuffer = glBindFramebuffer;
-    defaultInterface->fFramebufferTexture2D = glFramebufferTexture2D;
-    defaultInterface->fCheckFramebufferStatus = glCheckFramebufferStatus;
-    defaultInterface->fDeleteFramebuffers = glDeleteFramebuffers;
-    defaultInterface->fRenderbufferStorage = glRenderbufferStorage;
-    defaultInterface->fGenRenderbuffers = glGenRenderbuffers;
-    defaultInterface->fDeleteRenderbuffers = glDeleteRenderbuffers;
-    defaultInterface->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
-    defaultInterface->fBindRenderbuffer = glBindRenderbuffer;
+        interface->fNPOTRenderTargetSupport = kProbe_GrGLCapability;
+        interface->fMinRenderTargetHeight = kProbe_GrGLCapability;
+        interface->fMinRenderTargetWidth = kProbe_GrGLCapability;
+        interface->fActiveTexture = glActiveTexture;
+        interface->fAttachShader = glAttachShader;
+        interface->fBindAttribLocation = glBindAttribLocation;
+        interface->fBindBuffer = glBindBuffer;
+        interface->fBindTexture = glBindTexture;
+        interface->fBlendColor = glBlendColor;
+        interface->fBlendFunc = glBlendFunc;
+        interface->fBufferData = (GrGLBufferDataProc)glBufferData;
+        interface->fBufferSubData = (GrGLBufferSubDataProc)glBufferSubData;
+        interface->fClear = glClear;
+        interface->fClearColor = glClearColor;
+        interface->fClearStencil = glClearStencil;
+        interface->fClientActiveTexture = glClientActiveTexture;
+        interface->fColorMask = glColorMask;
+        interface->fColorPointer = glColorPointer;
+        interface->fColor4ub = glColor4ub;
+        interface->fCompileShader = glCompileShader;
+        interface->fCompressedTexImage2D = glCompressedTexImage2D;
+        interface->fCreateProgram = glCreateProgram;
+        interface->fCreateShader = glCreateShader;
+        interface->fCullFace = glCullFace;
+        interface->fDeleteBuffers = glDeleteBuffers;
+        interface->fDeleteProgram = glDeleteProgram;
+        interface->fDeleteShader = glDeleteShader;
+        interface->fDeleteTextures = glDeleteTextures;
+        interface->fDepthMask = glDepthMask;
+        interface->fDisable = glDisable;
+        interface->fDisableClientState = glDisableClientState;
+        interface->fDisableVertexAttribArray = glDisableVertexAttribArray;
+        interface->fDrawArrays = glDrawArrays;
+        interface->fDrawBuffer = NULL;
+        interface->fDrawBuffers = NULL;
+        interface->fDrawElements = glDrawElements;
+        interface->fEnable = glEnable;
+        interface->fEnableClientState = glEnableClientState;
+        interface->fEnableVertexAttribArray = glEnableVertexAttribArray;
+        interface->fFrontFace = glFrontFace;
+        interface->fGenBuffers = glGenBuffers;
+        interface->fGetBufferParameteriv = glGetBufferParameteriv;
+        interface->fGetError = glGetError;
+        interface->fGetIntegerv = glGetIntegerv;
+        interface->fGetProgramInfoLog = glGetProgramInfoLog;
+        interface->fGetProgramiv = glGetProgramiv;
+        interface->fGetShaderInfoLog = glGetShaderInfoLog;
+        interface->fGetShaderiv = glGetShaderiv;
+        interface->fGetString = glGetString;
+        interface->fGenTextures = glGenTextures;
+        interface->fGetUniformLocation = glGetUniformLocation;
+        interface->fLineWidth = glLineWidth;
+        interface->fLinkProgram = glLinkProgram;
+        interface->fLoadMatrixf = glLoadMatrixf;
+        interface->fMatrixMode = glMatrixMode;
+        interface->fPointSize = glPointSize;
+        interface->fPixelStorei = glPixelStorei;
+        interface->fReadBuffer = NULL;
+        interface->fReadPixels = glReadPixels;
+        interface->fScissor = glScissor;
+        interface->fShadeModel = glShadeModel;
+        interface->fShaderSource = glShaderSource;
+        interface->fStencilFunc = glStencilFunc;
+        interface->fStencilFuncSeparate = glStencilFuncSeparate;
+        interface->fStencilMask = glStencilMask;
+        interface->fStencilMaskSeparate = glStencilMaskSeparate;
+        interface->fStencilOp = glStencilOp;
+        interface->fStencilOpSeparate = glStencilOpSeparate;
+        interface->fTexCoordPointer = glTexCoordPointer;
+        interface->fTexEnvi = glTexEnvi;
+        // mac uses GLenum for internalFormat param (non-standard)
+        // amounts to int vs. uint.
+        interface->fTexImage2D = (GrGLTexImage2DProc)glTexImage2D;
+        interface->fTexParameteri = glTexParameteri;
+        interface->fTexSubImage2D = glTexSubImage2D;
+        interface->fUniform1f = glUniform1f;
+        interface->fUniform1i = glUniform1i;
+        interface->fUniform1fv = glUniform1fv;
+        interface->fUniform1iv = glUniform1iv;
+        interface->fUniform2f = glUniform2f;
+        interface->fUniform2i = glUniform2i;
+        interface->fUniform2fv = glUniform2fv;
+        interface->fUniform2iv = glUniform2iv;
+        interface->fUniform3f = glUniform3f;
+        interface->fUniform3i = glUniform3i;
+        interface->fUniform3fv = glUniform3fv;
+        interface->fUniform3iv = glUniform3iv;
+        interface->fUniform4f = glUniform4f;
+        interface->fUniform4i = glUniform4i;
+        interface->fUniform4fv = glUniform4fv;
+        interface->fUniform4iv = glUniform4iv;
+        interface->fUniform4fv = glUniform4fv;
+        interface->fUniformMatrix2fv = glUniformMatrix2fv;
+        interface->fUniformMatrix3fv = glUniformMatrix3fv;
+        interface->fUniformMatrix4fv = glUniformMatrix4fv;
+        interface->fUseProgram = glUseProgram;
+        interface->fVertexAttrib4fv = glVertexAttrib4fv;
+        interface->fVertexAttribPointer = glVertexAttribPointer;
+        interface->fVertexPointer = glVertexPointer;
+        interface->fViewport = glViewport;
+        interface->fGenFramebuffers = glGenFramebuffers;
+        interface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv;
+        interface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
+        interface->fBindFramebuffer = glBindFramebuffer;
+        interface->fFramebufferTexture2D = glFramebufferTexture2D;
+        interface->fCheckFramebufferStatus = glCheckFramebufferStatus;
+        interface->fDeleteFramebuffers = glDeleteFramebuffers;
+        interface->fRenderbufferStorage = glRenderbufferStorage;
+        interface->fGenRenderbuffers = glGenRenderbuffers;
+        interface->fDeleteRenderbuffers = glDeleteRenderbuffers;
+        interface->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
+        interface->fBindRenderbuffer = glBindRenderbuffer;
        
-#if GL_OES_mapbuffer
-    defaultInterface->fMapBuffer = glMapBufferOES;
-    defaultInterface->fUnmapBuffer = glUnmapBufferOES;
-#endif
+    #if GL_OES_mapbuffer
+        interface->fMapBuffer = glMapBufferOES;
+        interface->fUnmapBuffer = glUnmapBufferOES;
+    #endif
         
-#if GL_APPLE_framebuffer_multisample
-    defaultInterface->fRenderbufferStorageMultisample = glRenderbufferStorageMultisampleAPPLE;
-    defaultInterface->fResolveMultisampleFramebuffer = glResolveMultisampleFramebufferAPPLE;
-#endif
-    defaultInterface->fBindFragDataLocationIndexed = NULL;
+    #if GL_APPLE_framebuffer_multisample
+        interface->fRenderbufferStorageMultisample = glRenderbufferStorageMultisampleAPPLE;
+        interface->fResolveMultisampleFramebuffer = glResolveMultisampleFramebufferAPPLE;
+    #endif
+        interface->fBindFragDataLocationIndexed = NULL;
         
-    defaultInterface->fBindingsExported = (GrGLBinding)(kES2_GrGLBinding | kES1_GrGLBinding);
-
-    GrGLSetDefaultGLInterface(defaultInterface)->unref();
-}
\ No newline at end of file
+        interface->fBindingsExported = (GrGLBinding)(kES2_GrGLBinding | kES1_GrGLBinding);
+    }
+    glInterface.get()->ref();
+    return glInterface.get();
+}
diff --git a/gpu/src/mac/GrGLDefaultInterface_mac.cpp b/gpu/src/mac/GrGLDefaultInterface_mac.cpp
index 3901797..26931ff 100644
--- a/gpu/src/mac/GrGLDefaultInterface_mac.cpp
+++ b/gpu/src/mac/GrGLDefaultInterface_mac.cpp
@@ -12,152 +12,156 @@
 #include <OpenGL/gl.h>
 #include <OpenGL/glext.h>
 
-void GrGLInitializeDefaultGLInterface() {
-    GrGLInterface* defaultInterface = new GrGLInterface;
-    defaultInterface->fBindingsExported = kDesktop_GrGLBinding;
-    defaultInterface->fActiveTexture = glActiveTexture;
-    defaultInterface->fAttachShader = glAttachShader;
-    defaultInterface->fBindAttribLocation = glBindAttribLocation;
-    defaultInterface->fBindBuffer = glBindBuffer;
-    defaultInterface->fBindTexture = glBindTexture;
-    defaultInterface->fBlendColor = glBlendColor;
-    defaultInterface->fBlendFunc = glBlendFunc;
-    defaultInterface->fBufferData = glBufferData;
-    defaultInterface->fBufferSubData = glBufferSubData;
-    defaultInterface->fClear = glClear;
-    defaultInterface->fClearColor = glClearColor;
-    defaultInterface->fClearStencil = glClearStencil;
-    defaultInterface->fClientActiveTexture = glClientActiveTexture;
-    defaultInterface->fColorMask = glColorMask;
-    defaultInterface->fColorPointer = glColorPointer;
-    defaultInterface->fColor4ub = glColor4ub;
-    defaultInterface->fCompileShader = glCompileShader;
-    defaultInterface->fCompressedTexImage2D = glCompressedTexImage2D;
-    defaultInterface->fCreateProgram = glCreateProgram;
-    defaultInterface->fCreateShader = glCreateShader;
-    defaultInterface->fCullFace = glCullFace;
-    defaultInterface->fDeleteBuffers = glDeleteBuffers;
-    defaultInterface->fDeleteProgram = glDeleteProgram;
-    defaultInterface->fDeleteShader = glDeleteShader;
-    defaultInterface->fDeleteTextures = glDeleteTextures;
-    defaultInterface->fDepthMask = glDepthMask;
-    defaultInterface->fDisable = glDisable;
-    defaultInterface->fDisableClientState = glDisableClientState;
-    defaultInterface->fDisableVertexAttribArray = 
-                                        glDisableVertexAttribArray;
-    defaultInterface->fDrawArrays = glDrawArrays;
-    defaultInterface->fDrawBuffer = glDrawBuffer;
-    defaultInterface->fDrawBuffers = glDrawBuffers;
-    defaultInterface->fDrawElements = glDrawElements;
-    defaultInterface->fEnable = glEnable;
-    defaultInterface->fEnableClientState = glEnableClientState;
-    defaultInterface->fEnableVertexAttribArray = glEnableVertexAttribArray;
-    defaultInterface->fFrontFace = glFrontFace;
-    defaultInterface->fGenBuffers = glGenBuffers;
-    defaultInterface->fGetBufferParameteriv = glGetBufferParameteriv;
-    defaultInterface->fGetError = glGetError;
-    defaultInterface->fGetIntegerv = glGetIntegerv;
-    defaultInterface->fGetProgramInfoLog = glGetProgramInfoLog;
-    defaultInterface->fGetProgramiv = glGetProgramiv;
-    defaultInterface->fGetShaderInfoLog = glGetShaderInfoLog;
-    defaultInterface->fGetShaderiv = glGetShaderiv;
-    defaultInterface->fGetString = glGetString;
-    defaultInterface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
-    defaultInterface->fGenTextures = glGenTextures;
-    defaultInterface->fGetUniformLocation = glGetUniformLocation;
-    defaultInterface->fLineWidth = glLineWidth;
-    defaultInterface->fLinkProgram = glLinkProgram;
-    defaultInterface->fLoadMatrixf = glLoadMatrixf;
-    defaultInterface->fMapBuffer = glMapBuffer;
-    defaultInterface->fMatrixMode = glMatrixMode;
-    defaultInterface->fPointSize = glPointSize;
-    defaultInterface->fPixelStorei = glPixelStorei;
-    defaultInterface->fReadBuffer = glReadBuffer;
-    defaultInterface->fReadPixels = glReadPixels;
-    defaultInterface->fScissor = glScissor;
-    defaultInterface->fShadeModel = glShadeModel;
-    defaultInterface->fShaderSource = glShaderSource;
-    defaultInterface->fStencilFunc = glStencilFunc;
-    defaultInterface->fStencilFuncSeparate = glStencilFuncSeparate;
-    defaultInterface->fStencilMask = glStencilMask;
-    defaultInterface->fStencilMaskSeparate = glStencilMaskSeparate;
-    defaultInterface->fStencilOp = glStencilOp;
-    defaultInterface->fStencilOpSeparate = glStencilOpSeparate;
-    defaultInterface->fTexCoordPointer = glTexCoordPointer;
-    defaultInterface->fTexEnvi = glTexEnvi;
-    // mac uses GLenum for internalFormat param (non-standard)
-    // amounts to int vs. uint.
-    defaultInterface->fTexImage2D = (GrGLTexImage2DProc)glTexImage2D;
-    defaultInterface->fTexParameteri = glTexParameteri;
-    defaultInterface->fTexSubImage2D = glTexSubImage2D;
-    defaultInterface->fUniform1f = glUniform1f;
-    defaultInterface->fUniform1i = glUniform1i;
-    defaultInterface->fUniform1fv = glUniform1fv;
-    defaultInterface->fUniform1iv = glUniform1iv;
-    defaultInterface->fUniform2f = glUniform2f;
-    defaultInterface->fUniform2i = glUniform2i;
-    defaultInterface->fUniform2fv = glUniform2fv;
-    defaultInterface->fUniform2iv = glUniform2iv;
-    defaultInterface->fUniform3f = glUniform3f;
-    defaultInterface->fUniform3i = glUniform3i;
-    defaultInterface->fUniform3fv = glUniform3fv;
-    defaultInterface->fUniform3iv = glUniform3iv;
-    defaultInterface->fUniform4f = glUniform4f;
-    defaultInterface->fUniform4i = glUniform4i;
-    defaultInterface->fUniform4fv = glUniform4fv;
-    defaultInterface->fUniform4iv = glUniform4iv;
-    defaultInterface->fUniform4fv = glUniform4fv;
-    defaultInterface->fUniformMatrix2fv = glUniformMatrix2fv;
-    defaultInterface->fUniformMatrix3fv = glUniformMatrix3fv;
-    defaultInterface->fUniformMatrix4fv = glUniformMatrix4fv;
-    defaultInterface->fUnmapBuffer = glUnmapBuffer;
-    defaultInterface->fUseProgram = glUseProgram;
-    defaultInterface->fVertexAttrib4fv = glVertexAttrib4fv;
-    defaultInterface->fVertexAttribPointer = glVertexAttribPointer;
-    defaultInterface->fVertexPointer = glVertexPointer;
-    defaultInterface->fViewport = glViewport;
+const GrGLInterface* GrGLDefaultInterface() {
+    static SkAutoTUnref<GrGLInterface> glInterface;
+    if (!glInterface.get()) {
+        GrGLInterface* interface = new GrGLInterface;
+        glInterface.reset(interface);
+        interface->fBindingsExported = kDesktop_GrGLBinding;
+        interface->fActiveTexture = glActiveTexture;
+        interface->fAttachShader = glAttachShader;
+        interface->fBindAttribLocation = glBindAttribLocation;
+        interface->fBindBuffer = glBindBuffer;
+        interface->fBindTexture = glBindTexture;
+        interface->fBlendColor = glBlendColor;
+        interface->fBlendFunc = glBlendFunc;
+        interface->fBufferData = glBufferData;
+        interface->fBufferSubData = glBufferSubData;
+        interface->fClear = glClear;
+        interface->fClearColor = glClearColor;
+        interface->fClearStencil = glClearStencil;
+        interface->fClientActiveTexture = glClientActiveTexture;
+        interface->fColorMask = glColorMask;
+        interface->fColorPointer = glColorPointer;
+        interface->fColor4ub = glColor4ub;
+        interface->fCompileShader = glCompileShader;
+        interface->fCompressedTexImage2D = glCompressedTexImage2D;
+        interface->fCreateProgram = glCreateProgram;
+        interface->fCreateShader = glCreateShader;
+        interface->fCullFace = glCullFace;
+        interface->fDeleteBuffers = glDeleteBuffers;
+        interface->fDeleteProgram = glDeleteProgram;
+        interface->fDeleteShader = glDeleteShader;
+        interface->fDeleteTextures = glDeleteTextures;
+        interface->fDepthMask = glDepthMask;
+        interface->fDisable = glDisable;
+        interface->fDisableClientState = glDisableClientState;
+        interface->fDisableVertexAttribArray = 
+                                            glDisableVertexAttribArray;
+        interface->fDrawArrays = glDrawArrays;
+        interface->fDrawBuffer = glDrawBuffer;
+        interface->fDrawBuffers = glDrawBuffers;
+        interface->fDrawElements = glDrawElements;
+        interface->fEnable = glEnable;
+        interface->fEnableClientState = glEnableClientState;
+        interface->fEnableVertexAttribArray = glEnableVertexAttribArray;
+        interface->fFrontFace = glFrontFace;
+        interface->fGenBuffers = glGenBuffers;
+        interface->fGetBufferParameteriv = glGetBufferParameteriv;
+        interface->fGetError = glGetError;
+        interface->fGetIntegerv = glGetIntegerv;
+        interface->fGetProgramInfoLog = glGetProgramInfoLog;
+        interface->fGetProgramiv = glGetProgramiv;
+        interface->fGetShaderInfoLog = glGetShaderInfoLog;
+        interface->fGetShaderiv = glGetShaderiv;
+        interface->fGetString = glGetString;
+        interface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
+        interface->fGenTextures = glGenTextures;
+        interface->fGetUniformLocation = glGetUniformLocation;
+        interface->fLineWidth = glLineWidth;
+        interface->fLinkProgram = glLinkProgram;
+        interface->fLoadMatrixf = glLoadMatrixf;
+        interface->fMapBuffer = glMapBuffer;
+        interface->fMatrixMode = glMatrixMode;
+        interface->fPointSize = glPointSize;
+        interface->fPixelStorei = glPixelStorei;
+        interface->fReadBuffer = glReadBuffer;
+        interface->fReadPixels = glReadPixels;
+        interface->fScissor = glScissor;
+        interface->fShadeModel = glShadeModel;
+        interface->fShaderSource = glShaderSource;
+        interface->fStencilFunc = glStencilFunc;
+        interface->fStencilFuncSeparate = glStencilFuncSeparate;
+        interface->fStencilMask = glStencilMask;
+        interface->fStencilMaskSeparate = glStencilMaskSeparate;
+        interface->fStencilOp = glStencilOp;
+        interface->fStencilOpSeparate = glStencilOpSeparate;
+        interface->fTexCoordPointer = glTexCoordPointer;
+        interface->fTexEnvi = glTexEnvi;
+        // mac uses GLenum for internalFormat param (non-standard)
+        // amounts to int vs. uint.
+        interface->fTexImage2D = (GrGLTexImage2DProc)glTexImage2D;
+        interface->fTexParameteri = glTexParameteri;
+        interface->fTexSubImage2D = glTexSubImage2D;
+        interface->fUniform1f = glUniform1f;
+        interface->fUniform1i = glUniform1i;
+        interface->fUniform1fv = glUniform1fv;
+        interface->fUniform1iv = glUniform1iv;
+        interface->fUniform2f = glUniform2f;
+        interface->fUniform2i = glUniform2i;
+        interface->fUniform2fv = glUniform2fv;
+        interface->fUniform2iv = glUniform2iv;
+        interface->fUniform3f = glUniform3f;
+        interface->fUniform3i = glUniform3i;
+        interface->fUniform3fv = glUniform3fv;
+        interface->fUniform3iv = glUniform3iv;
+        interface->fUniform4f = glUniform4f;
+        interface->fUniform4i = glUniform4i;
+        interface->fUniform4fv = glUniform4fv;
+        interface->fUniform4iv = glUniform4iv;
+        interface->fUniform4fv = glUniform4fv;
+        interface->fUniformMatrix2fv = glUniformMatrix2fv;
+        interface->fUniformMatrix3fv = glUniformMatrix3fv;
+        interface->fUniformMatrix4fv = glUniformMatrix4fv;
+        interface->fUnmapBuffer = glUnmapBuffer;
+        interface->fUseProgram = glUseProgram;
+        interface->fVertexAttrib4fv = glVertexAttrib4fv;
+        interface->fVertexAttribPointer = glVertexAttribPointer;
+        interface->fVertexPointer = glVertexPointer;
+        interface->fViewport = glViewport;
 
-#if GL_ARB_framebuffer_object
-    defaultInterface->fGenFramebuffers = glGenFramebuffers;
-    defaultInterface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv;
-    defaultInterface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
-    defaultInterface->fBindFramebuffer = glBindFramebuffer;
-    defaultInterface->fFramebufferTexture2D = glFramebufferTexture2D;
-    defaultInterface->fCheckFramebufferStatus = glCheckFramebufferStatus;
-    defaultInterface->fDeleteFramebuffers = glDeleteFramebuffers;
-    defaultInterface->fRenderbufferStorage = glRenderbufferStorage;
-    defaultInterface->fGenRenderbuffers = glGenRenderbuffers;
-    defaultInterface->fDeleteRenderbuffers = glDeleteRenderbuffers;
-    defaultInterface->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
-    defaultInterface->fBindRenderbuffer = glBindRenderbuffer;
-    defaultInterface->fRenderbufferStorageMultisample = 
-                                    glRenderbufferStorageMultisample;
-    defaultInterface->fBlitFramebuffer = glBlitFramebuffer;
-#elif GL_EXT_framebuffer_object
-    defaultInterface->fGenFramebuffers = glGenFramebuffersEXT;
-    defaultInterface->fGetFramebufferAttachmentivParameter = glGetFramebufferAttachmentParameterivEXT;
-    defaultInterface->fGLGetRenderbufferParameteriv = glGetRenderbufferParameterivEXT;
-    defaultInterface->fBindFramebuffer = glBindFramebufferEXT;
-    defaultInterface->fFramebufferTexture2D = glFramebufferTexture2DEXT;
-    defaultInterface->fCheckFramebufferStatus = glCheckFramebufferStatusEXT;
-    defaultInterface->fDeleteFramebuffers = glDeleteFramebuffersEXT;
-    defaultInterface->fRenderbufferStorage = glRenderbufferStorageEXT;
-    defaultInterface->fGenRenderbuffers = glGenRenderbuffersEXT;
-    defaultInterface->fDeleteRenderbuffers = glDeleteRenderbuffers;
-    defaultInterface->fFramebufferRenderbuffer = 
-                                            glFramebufferRenderbufferEXT;
-    defaultInterface->fBindRenderbuffer = glBindRenderbufferEXT;
-#if GL_EXT_framebuffer_multisample
-    defaultInterface->fRenderbufferStorageMultisample = 
-                                        glRenderbufferStorageMultisampleEXT;
-#endif
-#if GL_EXT_framebuffer_blit
-    defaultInterface->fBlitFramebuffer = glBlitFramebufferEXT;
-#endif
-#endif
-    defaultInterface->fBindFragDataLocationIndexed = NULL;
+    #if GL_ARB_framebuffer_object
+        interface->fGenFramebuffers = glGenFramebuffers;
+        interface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv;
+        interface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
+        interface->fBindFramebuffer = glBindFramebuffer;
+        interface->fFramebufferTexture2D = glFramebufferTexture2D;
+        interface->fCheckFramebufferStatus = glCheckFramebufferStatus;
+        interface->fDeleteFramebuffers = glDeleteFramebuffers;
+        interface->fRenderbufferStorage = glRenderbufferStorage;
+        interface->fGenRenderbuffers = glGenRenderbuffers;
+        interface->fDeleteRenderbuffers = glDeleteRenderbuffers;
+        interface->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
+        interface->fBindRenderbuffer = glBindRenderbuffer;
+        interface->fRenderbufferStorageMultisample = 
+                                        glRenderbufferStorageMultisample;
+        interface->fBlitFramebuffer = glBlitFramebuffer;
+    #elif GL_EXT_framebuffer_object
+        interface->fGenFramebuffers = glGenFramebuffersEXT;
+        interface->fGetFramebufferAttachmentivParameter = glGetFramebufferAttachmentParameterivEXT;
+        interface->fGLGetRenderbufferParameteriv = glGetRenderbufferParameterivEXT;
+        interface->fBindFramebuffer = glBindFramebufferEXT;
+        interface->fFramebufferTexture2D = glFramebufferTexture2DEXT;
+        interface->fCheckFramebufferStatus = glCheckFramebufferStatusEXT;
+        interface->fDeleteFramebuffers = glDeleteFramebuffersEXT;
+        interface->fRenderbufferStorage = glRenderbufferStorageEXT;
+        interface->fGenRenderbuffers = glGenRenderbuffersEXT;
+        interface->fDeleteRenderbuffers = glDeleteRenderbuffers;
+        interface->fFramebufferRenderbuffer = 
+                                                glFramebufferRenderbufferEXT;
+        interface->fBindRenderbuffer = glBindRenderbufferEXT;
+    #if GL_EXT_framebuffer_multisample
+        interface->fRenderbufferStorageMultisample = 
+                                            glRenderbufferStorageMultisampleEXT;
+    #endif
+    #if GL_EXT_framebuffer_blit
+        interface->fBlitFramebuffer = glBlitFramebufferEXT;
+    #endif
+    #endif
+        interface->fBindFragDataLocationIndexed = NULL;
 
-    defaultInterface->fBindingsExported = kDesktop_GrGLBinding;
-
-    GrGLSetDefaultGLInterface(defaultInterface)->unref();
+        interface->fBindingsExported = kDesktop_GrGLBinding;
+    }
+    glInterface.get()->ref();
+    return glInterface.get();
 }
diff --git a/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp b/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
index 6d5661a..cc27205 100644
--- a/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
+++ b/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
@@ -13,14 +13,13 @@
 #include <GL/glext.h>
 #include <GL/glu.h>
 
-#define GR_GL_GET_PROC(F) defaultInterface->f ## F = (GrGL ## F ## Proc) \
+#define GR_GL_GET_PROC(F) interface->f ## F = (GrGL ## F ## Proc) \
         OSMesaGetProcAddress("gl" #F);
-#define GR_GL_GET_PROC_SUFFIX(F, S) defaultInterface->f ## F = (GrGL ## F ## Proc) \
+#define GR_GL_GET_PROC_SUFFIX(F, S) interface->f ## F = (GrGL ## F ## Proc) \
         OSMesaGetProcAddress("gl" #F #S);
 
-void GrGLInitializeDefaultGLInterface() {
+const GrGLInterface* GrGLDefaultInterface() {
     if (NULL != OSMesaGetCurrentContext()) {
-        GrGLInterface defaultInterface = new GrGLInterface();
         int major, minor;
         const char* versionString = (const char*) glGetString(GL_VERSION);
         const char* extString = (const char*) glGetString(GL_EXTENSIONS);
@@ -28,85 +27,86 @@
 
         if (major == 1 && minor < 5) {
             // We must have array and element_array buffer objects.
-            return;
+            return NULL;
         }
-        defaultInterface->fNPOTRenderTargetSupport = kProbe_GrGLCapability;
-        defaultInterface->fMinRenderTargetHeight = kProbe_GrGLCapability;
-        defaultInterface->fMinRenderTargetWidth = kProbe_GrGLCapability;
+        GrGLInterface* interface = new GrGLInterface();
+        interface->fNPOTRenderTargetSupport = kProbe_GrGLCapability;
+        interface->fMinRenderTargetHeight = kProbe_GrGLCapability;
+        interface->fMinRenderTargetWidth = kProbe_GrGLCapability;
 
-        defaultInterface->fActiveTexture = glActiveTexture;
+        interface->fActiveTexture = glActiveTexture;
         GR_GL_GET_PROC(AttachShader);
         GR_GL_GET_PROC(BindAttribLocation);
         GR_GL_GET_PROC(BindBuffer);
-        defaultInterface->fBindTexture = glBindTexture;
-        defaultInterface->fBlendColor = glBlendColor;
-        defaultInterface->fBlendFunc = glBlendFunc;
+        interface->fBindTexture = glBindTexture;
+        interface->fBlendColor = glBlendColor;
+        interface->fBlendFunc = glBlendFunc;
         GR_GL_GET_PROC(BufferData);
         GR_GL_GET_PROC(BufferSubData);
-        defaultInterface->fClear = glClear;
-        defaultInterface->fClearColor = glClearColor;
-        defaultInterface->fClearStencil = glClearStencil;
-        defaultInterface->fClientActiveTexture = glClientActiveTexture;
-        defaultInterface->fColorMask = glColorMask;
-        defaultInterface->fColorPointer = glColorPointer;
-        defaultInterface->fColor4ub = glColor4ub;
+        interface->fClear = glClear;
+        interface->fClearColor = glClearColor;
+        interface->fClearStencil = glClearStencil;
+        interface->fClientActiveTexture = glClientActiveTexture;
+        interface->fColorMask = glColorMask;
+        interface->fColorPointer = glColorPointer;
+        interface->fColor4ub = glColor4ub;
         GR_GL_GET_PROC(CompileShader);
-        defaultInterface->fCompressedTexImage2D = glCompressedTexImage2D;
+        interface->fCompressedTexImage2D = glCompressedTexImage2D;
         GR_GL_GET_PROC(CreateProgram);
         GR_GL_GET_PROC(CreateShader);
-        defaultInterface->fCullFace = glCullFace;
+        interface->fCullFace = glCullFace;
         GR_GL_GET_PROC(DeleteBuffers);
         GR_GL_GET_PROC(DeleteProgram);
         GR_GL_GET_PROC(DeleteShader);
-        defaultInterface->fDeleteTextures = glDeleteTextures;
-        defaultInterface->fDepthMask = glDepthMask;
-        defaultInterface->fDisable = glDisable;
-        defaultInterface->fDisableClientState = glDisableClientState;
+        interface->fDeleteTextures = glDeleteTextures;
+        interface->fDepthMask = glDepthMask;
+        interface->fDisable = glDisable;
+        interface->fDisableClientState = glDisableClientState;
         GR_GL_GET_PROC(DisableVertexAttribArray);
-        defaultInterface->fDrawArrays = glDrawArrays;
-        defaultInterface->fDrawBuffer = glDrawBuffer;
+        interface->fDrawArrays = glDrawArrays;
+        interface->fDrawBuffer = glDrawBuffer;
         GR_GL_GET_PROC(DrawBuffers);
-        defaultInterface->fDrawElements = glDrawElements;
-        defaultInterface->fEnable = glEnable;
-        defaultInterface->fEnableClientState = glEnableClientState;
+        interface->fDrawElements = glDrawElements;
+        interface->fEnable = glEnable;
+        interface->fEnableClientState = glEnableClientState;
         GR_GL_GET_PROC(EnableVertexAttribArray);
-        defaultInterface->fFrontFace = glFrontFace;
+        interface->fFrontFace = glFrontFace;
         GR_GL_GET_PROC(GenBuffers);
         GR_GL_GET_PROC(GetBufferParameteriv);
-        defaultInterface->fGetError = glGetError;
-        defaultInterface->fGetIntegerv = glGetIntegerv;
+        interface->fGetError = glGetError;
+        interface->fGetIntegerv = glGetIntegerv;
         GR_GL_GET_PROC(GetProgramInfoLog);
         GR_GL_GET_PROC(GetProgramiv);
         GR_GL_GET_PROC(GetShaderInfoLog);
         GR_GL_GET_PROC(GetShaderiv);
-        defaultInterface->fGetString = glGetString;
-        defaultInterface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
-        defaultInterface->fGenTextures = glGenTextures;
+        interface->fGetString = glGetString;
+        interface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
+        interface->fGenTextures = glGenTextures;
         GR_GL_GET_PROC(GetUniformLocation);
-        defaultInterface->fLineWidth = glLineWidth;
+        interface->fLineWidth = glLineWidth;
         GR_GL_GET_PROC(LinkProgram);
-        defaultInterface->fLoadMatrixf = glLoadMatrixf;
+        interface->fLoadMatrixf = glLoadMatrixf;
         GR_GL_GET_PROC(MapBuffer);
-        defaultInterface->fMatrixMode = glMatrixMode;
-        defaultInterface->fPointSize = glPointSize;
-        defaultInterface->fPixelStorei = glPixelStorei;
-        defaultInterface->fReadBuffer = glReadBuffer;
-        defaultInterface->fReadPixels = glReadPixels;
-        defaultInterface->fScissor = glScissor;
-        defaultInterface->fShadeModel = glShadeModel;
+        interface->fMatrixMode = glMatrixMode;
+        interface->fPointSize = glPointSize;
+        interface->fPixelStorei = glPixelStorei;
+        interface->fReadBuffer = glReadBuffer;
+        interface->fReadPixels = glReadPixels;
+        interface->fScissor = glScissor;
+        interface->fShadeModel = glShadeModel;
         GR_GL_GET_PROC(ShaderSource);
-        defaultInterface->fStencilFunc = glStencilFunc;
+        interface->fStencilFunc = glStencilFunc;
         GR_GL_GET_PROC(StencilFuncSeparate);
-        defaultInterface->fStencilMask = glStencilMask;
+        interface->fStencilMask = glStencilMask;
         GR_GL_GET_PROC(StencilMaskSeparate);
-        defaultInterface->fStencilOp = glStencilOp;
+        interface->fStencilOp = glStencilOp;
         GR_GL_GET_PROC(StencilOpSeparate);
-        defaultInterface->fTexCoordPointer = glTexCoordPointer;
-        defaultInterface->fTexEnvi = glTexEnvi;
+        interface->fTexCoordPointer = glTexCoordPointer;
+        interface->fTexEnvi = glTexEnvi;
         //OSMesa on Mac's glTexImage2D takes a GLenum for internalFormat rather than a GLint.
-        defaultInterface->fTexImage2D = reinterpret_cast<GrGLTexImage2DProc>(glTexImage2D);
-        defaultInterface->fTexParameteri = glTexParameteri;
-        defaultInterface->fTexSubImage2D = glTexSubImage2D;
+        interface->fTexImage2D = reinterpret_cast<GrGLTexImage2DProc>(glTexImage2D);
+        interface->fTexParameteri = glTexParameteri;
+        interface->fTexSubImage2D = glTexSubImage2D;
         GR_GL_GET_PROC(Uniform1f);
         GR_GL_GET_PROC(Uniform1i);
         GR_GL_GET_PROC(Uniform1fv);
@@ -130,8 +130,8 @@
         GR_GL_GET_PROC(UseProgram);
         GR_GL_GET_PROC(VertexAttrib4fv);
         GR_GL_GET_PROC(VertexAttribPointer);
-        defaultInterface->fVertexPointer = glVertexPointer;
-        defaultInterface->fViewport = glViewport;
+        interface->fVertexPointer = glVertexPointer;
+        interface->fViewport = glViewport;
 
         // First look for GL3.0 FBO or GL_ARB_framebuffer_object (same since
         // GL_ARB_framebuffer_object doesn't use ARB suffix.)
@@ -175,10 +175,13 @@
             }
         } else {
             // we must have FBOs
-            return;
+            delete interface;
+            return NULL;
         }
         GR_GL_GET_PROC(BindFragDataLocationIndexed);
-        defaultInterface->fBindingsExported = kDesktop_GrGLBinding;
-        GrGLSetDefaultGLInterface(defaultInterface)->unref();
+        interface->fBindingsExported = kDesktop_GrGLBinding;
+        return interface;
+    } else {
+        return NULL;
     }
 }
diff --git a/gpu/src/unix/GrGLDefaultInterface_unix.cpp b/gpu/src/unix/GrGLDefaultInterface_unix.cpp
index 3e12ca1..fff01ed 100644
--- a/gpu/src/unix/GrGLDefaultInterface_unix.cpp
+++ b/gpu/src/unix/GrGLDefaultInterface_unix.cpp
@@ -14,12 +14,12 @@
 #include <GL/glext.h>
 #include <GL/glu.h>
 
-#define GR_GL_GET_PROC(F) defaultInterface->f ## F = (GrGL ## F ## Proc) \
+#define GR_GL_GET_PROC(F) interface->f ## F = (GrGL ## F ## Proc) \
         glXGetProcAddress(reinterpret_cast<const GLubyte*>("gl" #F));
-#define GR_GL_GET_PROC_SUFFIX(F, S) defaultInterface->f ## F = (GrGL ## F ## Proc) \
+#define GR_GL_GET_PROC_SUFFIX(F, S) interface->f ## F = (GrGL ## F ## Proc) \
         glXGetProcAddress(reinterpret_cast<const GLubyte*>("gl" #F #S));
 
-void GrGLInitializeDefaultGLInterface() {
+const GrGLInterface* GrGLDefaultInterface() {
     if (NULL != glXGetCurrentContext()) {
         int major, minor;
         const char* versionString = (const char*) glGetString(GL_VERSION);
@@ -28,87 +28,87 @@
 
         if (major == 1 && minor < 5) {
             // We must have array and element_array buffer objects.
-            return;
+            return NULL;
         }
 
-        GrGLInterface* defaultInterface = new GrGLInterface();
+        GrGLInterface* interface = new GrGLInterface();
 
-        defaultInterface->fNPOTRenderTargetSupport = kProbe_GrGLCapability;
-        defaultInterface->fMinRenderTargetHeight = kProbe_GrGLCapability;
-        defaultInterface->fMinRenderTargetWidth = kProbe_GrGLCapability;
+        interface->fNPOTRenderTargetSupport = kProbe_GrGLCapability;
+        interface->fMinRenderTargetHeight = kProbe_GrGLCapability;
+        interface->fMinRenderTargetWidth = kProbe_GrGLCapability;
 
-        defaultInterface->fActiveTexture = glActiveTexture;
+        interface->fActiveTexture = glActiveTexture;
         GR_GL_GET_PROC(AttachShader);
         GR_GL_GET_PROC(BindAttribLocation);
         GR_GL_GET_PROC(BindBuffer);
-        defaultInterface->fBindTexture = glBindTexture;
-        defaultInterface->fBlendColor = glBlendColor;
-        defaultInterface->fBlendFunc = glBlendFunc;
+        interface->fBindTexture = glBindTexture;
+        interface->fBlendColor = glBlendColor;
+        interface->fBlendFunc = glBlendFunc;
         GR_GL_GET_PROC(BufferData);
         GR_GL_GET_PROC(BufferSubData);
-        defaultInterface->fClear = glClear;
-        defaultInterface->fClearColor = glClearColor;
-        defaultInterface->fClearStencil = glClearStencil;
-        defaultInterface->fClientActiveTexture = glClientActiveTexture;
-        defaultInterface->fColorMask = glColorMask;
-        defaultInterface->fColorPointer = glColorPointer;
-        defaultInterface->fColor4ub = glColor4ub;
+        interface->fClear = glClear;
+        interface->fClearColor = glClearColor;
+        interface->fClearStencil = glClearStencil;
+        interface->fClientActiveTexture = glClientActiveTexture;
+        interface->fColorMask = glColorMask;
+        interface->fColorPointer = glColorPointer;
+        interface->fColor4ub = glColor4ub;
         GR_GL_GET_PROC(CompileShader);
-        defaultInterface->fCompressedTexImage2D = glCompressedTexImage2D;
+        interface->fCompressedTexImage2D = glCompressedTexImage2D;
         GR_GL_GET_PROC(CreateProgram);
         GR_GL_GET_PROC(CreateShader);
-        defaultInterface->fCullFace = glCullFace;
+        interface->fCullFace = glCullFace;
         GR_GL_GET_PROC(DeleteBuffers);
         GR_GL_GET_PROC(DeleteProgram);
         GR_GL_GET_PROC(DeleteShader);
-        defaultInterface->fDeleteTextures = glDeleteTextures;
-        defaultInterface->fDepthMask = glDepthMask;
-        defaultInterface->fDisable = glDisable;
-        defaultInterface->fDisableClientState = glDisableClientState;
+        interface->fDeleteTextures = glDeleteTextures;
+        interface->fDepthMask = glDepthMask;
+        interface->fDisable = glDisable;
+        interface->fDisableClientState = glDisableClientState;
         GR_GL_GET_PROC(DisableVertexAttribArray);
-        defaultInterface->fDrawArrays = glDrawArrays;
-        defaultInterface->fDrawBuffer = glDrawBuffer;
+        interface->fDrawArrays = glDrawArrays;
+        interface->fDrawBuffer = glDrawBuffer;
         GR_GL_GET_PROC(DrawBuffers);
-        defaultInterface->fDrawElements = glDrawElements;
-        defaultInterface->fEnable = glEnable;
-        defaultInterface->fEnableClientState = glEnableClientState;
+        interface->fDrawElements = glDrawElements;
+        interface->fEnable = glEnable;
+        interface->fEnableClientState = glEnableClientState;
         GR_GL_GET_PROC(EnableVertexAttribArray);
-        defaultInterface->fFrontFace = glFrontFace;
+        interface->fFrontFace = glFrontFace;
         GR_GL_GET_PROC(GenBuffers);
         GR_GL_GET_PROC(GetBufferParameteriv);
-        defaultInterface->fGetError = glGetError;
-        defaultInterface->fGetIntegerv = glGetIntegerv;
+        interface->fGetError = glGetError;
+        interface->fGetIntegerv = glGetIntegerv;
         GR_GL_GET_PROC(GetProgramInfoLog);
         GR_GL_GET_PROC(GetProgramiv);
         GR_GL_GET_PROC(GetShaderInfoLog);
         GR_GL_GET_PROC(GetShaderiv);
-        defaultInterface->fGetString = glGetString;
-        defaultInterface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
-        defaultInterface->fGenTextures = glGenTextures;
+        interface->fGetString = glGetString;
+        interface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
+        interface->fGenTextures = glGenTextures;
         GR_GL_GET_PROC(GetUniformLocation);
-        defaultInterface->fLineWidth = glLineWidth;
+        interface->fLineWidth = glLineWidth;
         GR_GL_GET_PROC(LinkProgram);
-        defaultInterface->fLoadMatrixf = glLoadMatrixf;
+        interface->fLoadMatrixf = glLoadMatrixf;
         GR_GL_GET_PROC(MapBuffer);
-        defaultInterface->fMatrixMode = glMatrixMode;
-        defaultInterface->fPointSize = glPointSize;
-        defaultInterface->fPixelStorei = glPixelStorei;
-        defaultInterface->fReadBuffer = glReadBuffer;
-        defaultInterface->fReadPixels = glReadPixels;
-        defaultInterface->fScissor = glScissor;
-        defaultInterface->fShadeModel = glShadeModel;
+        interface->fMatrixMode = glMatrixMode;
+        interface->fPointSize = glPointSize;
+        interface->fPixelStorei = glPixelStorei;
+        interface->fReadBuffer = glReadBuffer;
+        interface->fReadPixels = glReadPixels;
+        interface->fScissor = glScissor;
+        interface->fShadeModel = glShadeModel;
         GR_GL_GET_PROC(ShaderSource);
-        defaultInterface->fStencilFunc = glStencilFunc;
+        interface->fStencilFunc = glStencilFunc;
         GR_GL_GET_PROC(StencilFuncSeparate);
-        defaultInterface->fStencilMask = glStencilMask;
+        interface->fStencilMask = glStencilMask;
         GR_GL_GET_PROC(StencilMaskSeparate);
-        defaultInterface->fStencilOp = glStencilOp;
+        interface->fStencilOp = glStencilOp;
         GR_GL_GET_PROC(StencilOpSeparate);
-        defaultInterface->fTexCoordPointer = glTexCoordPointer;
-        defaultInterface->fTexEnvi = glTexEnvi;
-        defaultInterface->fTexImage2D = glTexImage2D;
-        defaultInterface->fTexParameteri = glTexParameteri;
-        defaultInterface->fTexSubImage2D = glTexSubImage2D;
+        interface->fTexCoordPointer = glTexCoordPointer;
+        interface->fTexEnvi = glTexEnvi;
+        interface->fTexImage2D = glTexImage2D;
+        interface->fTexParameteri = glTexParameteri;
+        interface->fTexSubImage2D = glTexSubImage2D;
         GR_GL_GET_PROC(Uniform1f);
         GR_GL_GET_PROC(Uniform1i);
         GR_GL_GET_PROC(Uniform1fv);
@@ -132,8 +132,8 @@
         GR_GL_GET_PROC(UseProgram);
         GR_GL_GET_PROC(VertexAttrib4fv);
         GR_GL_GET_PROC(VertexAttribPointer);
-        defaultInterface->fVertexPointer = glVertexPointer;
-        defaultInterface->fViewport = glViewport;
+        interface->fVertexPointer = glVertexPointer;
+        interface->fViewport = glViewport;
         GR_GL_GET_PROC(BindFragDataLocationIndexed);
 
         // First look for GL3.0 FBO or GL_ARB_framebuffer_object (same since
@@ -178,10 +178,13 @@
             }
         } else {
             // we must have FBOs
-            return;
+            delete interface;
+            return NULL;
         }
-        defaultInterface->fBindingsExported = kDesktop_GrGLBinding;
+        interface->fBindingsExported = kDesktop_GrGLBinding;
 
-        GrGLSetDefaultGLInterface(defaultInterface)->unref();
+        return interface;
+    } else {
+        return NULL;
     }
 }
diff --git a/gpu/src/win/GrGLDefaultInterface_win.cpp b/gpu/src/win/GrGLDefaultInterface_win.cpp
index e5c7369..89986e6 100644
--- a/gpu/src/win/GrGLDefaultInterface_win.cpp
+++ b/gpu/src/win/GrGLDefaultInterface_win.cpp
@@ -18,12 +18,14 @@
  * Otherwise, a springboard would be needed that hides the calling convention.
  */
 
-#define GR_GL_GET_PROC(F) defaultInterface->f ## F = (GrGL ## F ## Proc) wglGetProcAddress("gl" #F);
-#define GR_GL_GET_PROC_SUFFIX(F, S) defaultInterface->f ## F = (GrGL ## F ## Proc) wglGetProcAddress("gl" #F #S);
+#define GR_GL_GET_PROC(F) interface->f ## F = (GrGL ## F ## Proc) wglGetProcAddress("gl" #F);
+#define GR_GL_GET_PROC_SUFFIX(F, S) interface->f ## F = (GrGL ## F ## Proc) wglGetProcAddress("gl" #F #S);
 
-void GrGLInitializeDefaultGLInterface() {
-
+const GrGLInterface* GrGLDefaultInterface() {
     // wglGetProcAddress requires a context.
+    // GL Function pointers retrieved in one context may not be valid in another
+    // context. For that reason we create a new GrGLInterface each time we're 
+    // called.
     if (NULL != wglGetCurrentContext()) {
         int major, minor;
         const char* versionString = (const char*) glGetString(GL_VERSION);
@@ -32,58 +34,58 @@
 
         if (major == 1 && minor < 5) {
             // We must have array and element_array buffer objects.
-            return;
+            return NULL;
         }
-        GrGLInterface* defaultInterface = new GrGLInterface();
+        GrGLInterface* interface = new GrGLInterface();
 
-        defaultInterface->fNPOTRenderTargetSupport = kProbe_GrGLCapability;
-        defaultInterface->fMinRenderTargetHeight = kProbe_GrGLCapability;
-        defaultInterface->fMinRenderTargetWidth = kProbe_GrGLCapability;
+        interface->fNPOTRenderTargetSupport = kProbe_GrGLCapability;
+        interface->fMinRenderTargetHeight = kProbe_GrGLCapability;
+        interface->fMinRenderTargetWidth = kProbe_GrGLCapability;
 
         // Functions that are part of GL 1.1 will return NULL in
         // wglGetProcAddress
-        defaultInterface->fBlendFunc = glBlendFunc;
-        defaultInterface->fClear = glClear;
-        defaultInterface->fClearColor = glClearColor;
-        defaultInterface->fClearStencil = glClearStencil;
-        defaultInterface->fColor4ub = glColor4ub;
-        defaultInterface->fColorMask = glColorMask;
-        defaultInterface->fColorPointer = glColorPointer;
-        defaultInterface->fCullFace = glCullFace;
-        defaultInterface->fDeleteTextures = glDeleteTextures;
-        defaultInterface->fDepthMask = glDepthMask;
-        defaultInterface->fDisable = glDisable;
-        defaultInterface->fDisableClientState = glDisableClientState;
-        defaultInterface->fDrawArrays = glDrawArrays;
-        defaultInterface->fDrawElements = glDrawElements;
-        defaultInterface->fDrawBuffer = glDrawBuffer;
-        defaultInterface->fEnable = glEnable;
-        defaultInterface->fEnableClientState = glEnableClientState;
-        defaultInterface->fFrontFace = glFrontFace;
-        defaultInterface->fGenTextures = glGenTextures;
-        defaultInterface->fGetError = glGetError;
-        defaultInterface->fGetIntegerv = glGetIntegerv;
-        defaultInterface->fGetString = glGetString;
-        defaultInterface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
-        defaultInterface->fLineWidth = glLineWidth;
-        defaultInterface->fLoadMatrixf = glLoadMatrixf;
-        defaultInterface->fMatrixMode = glMatrixMode;
-        defaultInterface->fPixelStorei = glPixelStorei;
-        defaultInterface->fPointSize = glPointSize;
-        defaultInterface->fReadBuffer = glReadBuffer;
-        defaultInterface->fReadPixels = glReadPixels;
-        defaultInterface->fScissor = glScissor;
-        defaultInterface->fShadeModel = glShadeModel;
-        defaultInterface->fStencilFunc = glStencilFunc;
-        defaultInterface->fStencilMask = glStencilMask;
-        defaultInterface->fStencilOp = glStencilOp;
-        defaultInterface->fTexImage2D = glTexImage2D;
-        defaultInterface->fTexParameteri = glTexParameteri;
-        defaultInterface->fTexCoordPointer = glTexCoordPointer;
-        defaultInterface->fTexEnvi = glTexEnvi;
-        defaultInterface->fTexSubImage2D = glTexSubImage2D;
-        defaultInterface->fViewport = glViewport;
-        defaultInterface->fVertexPointer = glVertexPointer;
+        interface->fBlendFunc = glBlendFunc;
+        interface->fClear = glClear;
+        interface->fClearColor = glClearColor;
+        interface->fClearStencil = glClearStencil;
+        interface->fColor4ub = glColor4ub;
+        interface->fColorMask = glColorMask;
+        interface->fColorPointer = glColorPointer;
+        interface->fCullFace = glCullFace;
+        interface->fDeleteTextures = glDeleteTextures;
+        interface->fDepthMask = glDepthMask;
+        interface->fDisable = glDisable;
+        interface->fDisableClientState = glDisableClientState;
+        interface->fDrawArrays = glDrawArrays;
+        interface->fDrawElements = glDrawElements;
+        interface->fDrawBuffer = glDrawBuffer;
+        interface->fEnable = glEnable;
+        interface->fEnableClientState = glEnableClientState;
+        interface->fFrontFace = glFrontFace;
+        interface->fGenTextures = glGenTextures;
+        interface->fGetError = glGetError;
+        interface->fGetIntegerv = glGetIntegerv;
+        interface->fGetString = glGetString;
+        interface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
+        interface->fLineWidth = glLineWidth;
+        interface->fLoadMatrixf = glLoadMatrixf;
+        interface->fMatrixMode = glMatrixMode;
+        interface->fPixelStorei = glPixelStorei;
+        interface->fPointSize = glPointSize;
+        interface->fReadBuffer = glReadBuffer;
+        interface->fReadPixels = glReadPixels;
+        interface->fScissor = glScissor;
+        interface->fShadeModel = glShadeModel;
+        interface->fStencilFunc = glStencilFunc;
+        interface->fStencilMask = glStencilMask;
+        interface->fStencilOp = glStencilOp;
+        interface->fTexImage2D = glTexImage2D;
+        interface->fTexParameteri = glTexParameteri;
+        interface->fTexCoordPointer = glTexCoordPointer;
+        interface->fTexEnvi = glTexEnvi;
+        interface->fTexSubImage2D = glTexSubImage2D;
+        interface->fViewport = glViewport;
+        interface->fVertexPointer = glVertexPointer;
 
         GR_GL_GET_PROC(ActiveTexture);
         GR_GL_GET_PROC(AttachShader);
@@ -178,13 +180,16 @@
             }
         } else {
             // we must have FBOs
-            return;
+            delete interface;
+            return NULL;
         }
         GR_GL_GET_PROC(MapBuffer);
         GR_GL_GET_PROC(UnmapBuffer);
 
-        defaultInterface->fBindingsExported = kDesktop_GrGLBinding;
+        interface->fBindingsExported = kDesktop_GrGLBinding;
 
-        GrGLSetDefaultGLInterface(defaultInterface)->unref();
+        return interface;
+    } else {
+        return NULL;
     }
 }
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 7dbec17..bed5459 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -81,11 +81,13 @@
     DefaultDeviceManager() {
         fGrRenderTarget = NULL;
         fGrContext = NULL;
+        fGL = NULL;
     }
 
     virtual ~DefaultDeviceManager() {
         SkSafeUnref(fGrRenderTarget);
         SkSafeUnref(fGrContext);
+        SkSafeUnref(fGL);
     }
 
     virtual void init(SampleWindow* win) {
@@ -93,7 +95,10 @@
         if (NULL == fGrContext) {
             fGrContext = GrContext::Create(kOpenGL_Shaders_GrEngine, NULL);
         }
-        if (NULL == fGrContext) {
+        if (NULL == fGL) {
+            fGL = GrGLDefaultInterface();
+        }
+        if (NULL == fGrContext || NULL == fGL) {
             SkDebugf("Failed to setup 3D");
             win->detachGL();
         }
@@ -153,12 +158,10 @@
             desc.fWidth = SkScalarRound(win->width());
             desc.fHeight = SkScalarRound(win->height());
             desc.fConfig = kRGBA_8888_GrPixelConfig;
-            const GrGLInterface* gl = GrGLGetDefaultGLInterface();
-            GrAssert(NULL != gl);
-            GR_GL_GetIntegerv(gl, GR_GL_STENCIL_BITS, &desc.fStencilBits);
-            GR_GL_GetIntegerv(gl, GR_GL_SAMPLES, &desc.fSampleCnt);
+            GR_GL_GetIntegerv(fGL, GR_GL_STENCIL_BITS, &desc.fStencilBits);
+            GR_GL_GetIntegerv(fGL, GR_GL_SAMPLES, &desc.fSampleCnt);
             GrGLint buffer;
-            GR_GL_GetIntegerv(gl, GR_GL_FRAMEBUFFER_BINDING, &buffer);
+            GR_GL_GetIntegerv(fGL, GR_GL_FRAMEBUFFER_BINDING, &buffer);
             desc.fPlatformRenderTarget = buffer;
 
             SkSafeUnref(fGrRenderTarget);
@@ -172,6 +175,7 @@
     }
 private:
     GrContext* fGrContext;
+    const GrGLInterface* fGL;
     GrRenderTarget* fGrRenderTarget;
 };
 
@@ -1032,19 +1036,19 @@
         canvas->translate(-cx, -cy);
     }
     if (fPerspAnim) {
-        fPerspAnimTime += SampleCode::GetAnimSecondsDelta();
-
-        static const SkScalar gAnimPeriod = 10 * SK_Scalar1;
-        static const SkScalar gAnimMag = SK_Scalar1 / 1000;
-        SkScalar t = SkScalarMod(fPerspAnimTime, gAnimPeriod);
-        if (SkScalarFloorToInt(SkScalarDiv(fPerspAnimTime, gAnimPeriod)) & 0x1) {
-            t = gAnimPeriod - t;
-        }
-        t = 2 * t - gAnimPeriod;
-        t = SkScalarMul(SkScalarDiv(t, gAnimPeriod), gAnimMag);
-        SkMatrix m;
-        m.reset();
-        m.setPerspY(t);
+        fPerspAnimTime += SampleCode::GetAnimSecondsDelta();
+
+        static const SkScalar gAnimPeriod = 10 * SK_Scalar1;
+        static const SkScalar gAnimMag = SK_Scalar1 / 1000;
+        SkScalar t = SkScalarMod(fPerspAnimTime, gAnimPeriod);
+        if (SkScalarFloorToInt(SkScalarDiv(fPerspAnimTime, gAnimPeriod)) & 0x1) {
+            t = gAnimPeriod - t;
+        }
+        t = 2 * t - gAnimPeriod;
+        t = SkScalarMul(SkScalarDiv(t, gAnimPeriod), gAnimMag);
+        SkMatrix m;
+        m.reset();
+        m.setPerspY(t);
         canvas->concat(m);
     }
 
