This replaces the texture creation/caching functions on GrContext with a GrTextureProvider interface. The goal is to pass this narrowly focused object in places that currently take a GrContext but don't need and shouldn't use its other methods. It also has an extended private interface for interacting with non-texture resource types.

Review URL: https://codereview.chromium.org/1107973004
diff --git a/tests/FloatingPointTextureTest.cpp b/tests/FloatingPointTextureTest.cpp
index 7ac27cb..69495b4 100644
--- a/tests/FloatingPointTextureTest.cpp
+++ b/tests/FloatingPointTextureTest.cpp
@@ -11,9 +11,10 @@
  * 32 bit floating point textures, and indeed floating point test values
  * have been selected to require 32 bits of precision and full IEEE conformance
  */
-#if SK_SUPPORT_GPU
+
 #include <float.h>
 #include "Test.h"
+#if SK_SUPPORT_GPU
 #include "GrContext.h"
 #include "GrTexture.h"
 #include "GrContextFactory.h"
@@ -59,8 +60,8 @@
                 continue;
             }
 
-            SkAutoTUnref<GrTexture> fpTexture(context->createTexture(desc, false,
-                                                                     controlPixelData.begin(), 0));
+            SkAutoTUnref<GrTexture> fpTexture(context->textureProvider()->createTexture(
+                desc, false, controlPixelData.begin(), 0));
             // Floating point textures are NOT supported everywhere
             if (NULL == fpTexture) {
                 continue;
@@ -106,8 +107,8 @@
                 continue;
             }
 
-            SkAutoTUnref<GrTexture> fpTexture(context->createTexture(desc, false,
-                                                                     controlPixelData.begin(), 0));
+            SkAutoTUnref<GrTexture> fpTexture(context->textureProvider()->createTexture(
+                desc, false, controlPixelData.begin(), 0));
             // 16-bit floating point textures are NOT supported everywhere
             if (NULL == fpTexture) {
                 continue;