Remove separate cache for clip mask textures

Review URL: https://codereview.chromium.org/1377943003
diff --git a/tests/ClipBoundsTest.cpp b/tests/ClipBoundsTest.cpp
new file mode 100644
index 0000000..781ee87
--- /dev/null
+++ b/tests/ClipBoundsTest.cpp
@@ -0,0 +1,85 @@
+
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Test.h"
+// This is a GR test
+#if SK_SUPPORT_GPU
+#include "GrClipMaskManager.h"
+#include "GrContextFactory.h"
+#include "SkGpuDevice.h"
+
+// Ensure that the 'getConservativeBounds' calls are returning bounds clamped
+// to the render target
+static void test_clip_bounds(skiatest::Reporter* reporter, GrContext* context) {
+
+    static const int kXSize = 100;
+    static const int kYSize = 100;
+
+    GrSurfaceDesc desc;
+    desc.fFlags     = kRenderTarget_GrSurfaceFlag;
+    desc.fConfig    = kAlpha_8_GrPixelConfig;
+    desc.fWidth     = kXSize;
+    desc.fHeight    = kYSize;
+
+    SkAutoTUnref<GrTexture> texture(
+        context->textureProvider()->createTexture(desc, false, nullptr, 0));
+    if (!texture) {
+        return;
+    }
+
+    SkIRect intScreen = SkIRect::MakeWH(kXSize, kYSize);
+    SkRect screen = SkRect::Make(intScreen);
+
+    SkRect clipRect(screen);
+    clipRect.outset(10, 10);
+
+    // create a clip stack that will (trivially) reduce to a single rect that
+    // is larger than the screen
+    SkClipStack stack;
+    stack.clipDevRect(clipRect, SkRegion::kReplace_Op, false);
+
+    bool isIntersectionOfRects = true;
+    SkRect devStackBounds;
+
+    stack.getConservativeBounds(0, 0, kXSize, kYSize,
+                                &devStackBounds,
+                                &isIntersectionOfRects);
+
+    // make sure that the SkClipStack is behaving itself
+    REPORTER_ASSERT(reporter, screen == devStackBounds);
+    REPORTER_ASSERT(reporter, isIntersectionOfRects);
+
+    // wrap the SkClipStack in a GrClip
+    GrClip clipData;
+    clipData.setClipStack(&stack);
+
+    SkIRect devGrClipBound;
+    clipData.getConservativeBounds(texture,
+                                   &devGrClipBound,
+                                   &isIntersectionOfRects);
+
+    // make sure that GrClip is behaving itself
+    REPORTER_ASSERT(reporter, intScreen == devGrClipBound);
+    REPORTER_ASSERT(reporter, isIntersectionOfRects);
+}
+
+DEF_GPUTEST(GrClipBounds, reporter, factory) {
+    for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
+        GrContextFactory::GLContextType glType = static_cast<GrContextFactory::GLContextType>(type);
+        if (!GrContextFactory::IsRenderingGLContext(glType)) {
+            continue;
+        }
+        GrContext* context = factory->get(glType);
+        if (nullptr == context) {
+            continue;
+        }
+        test_clip_bounds(reporter, context);
+    }
+}
+
+#endif
diff --git a/tests/ClipCacheTest.cpp b/tests/ClipCacheTest.cpp
deleted file mode 100644
index c57fb37..0000000
--- a/tests/ClipCacheTest.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "Test.h"
-// This is a GR test
-#if SK_SUPPORT_GPU
-#include "GrClipMaskManager.h"
-#include "GrContextFactory.h"
-#include "SkGpuDevice.h"
-
-static const int X_SIZE = 12;
-static const int Y_SIZE = 12;
-
-////////////////////////////////////////////////////////////////////////////////
-// note: this is unused
-static GrTexture* create_texture(GrContext* context) {
-    unsigned char textureData[X_SIZE][Y_SIZE][4];
-
-    memset(textureData, 0, 4* X_SIZE * Y_SIZE);
-
-    GrSurfaceDesc desc;
-
-    // let Skia know we will be using this texture as a render target
-    desc.fFlags     = kRenderTarget_GrSurfaceFlag;
-    desc.fConfig    = kSkia8888_GrPixelConfig;
-    desc.fWidth     = X_SIZE;
-    desc.fHeight    = Y_SIZE;
-
-    // We are initializing the texture with zeros here
-    GrTexture* texture = context->textureProvider()->createTexture(desc, false, textureData, 0);
-    if (!texture) {
-        return nullptr;
-    }
-
-    return texture;
-}
-
-// Ensure that the 'getConservativeBounds' calls are returning bounds clamped
-// to the render target
-static void test_clip_bounds(skiatest::Reporter* reporter, GrContext* context) {
-
-    static const int kXSize = 100;
-    static const int kYSize = 100;
-
-    GrSurfaceDesc desc;
-    desc.fFlags     = kRenderTarget_GrSurfaceFlag;
-    desc.fConfig    = kAlpha_8_GrPixelConfig;
-    desc.fWidth     = kXSize;
-    desc.fHeight    = kYSize;
-
-    GrTexture* texture = context->textureProvider()->createTexture(desc, false, nullptr, 0);
-    if (!texture) {
-        return;
-    }
-
-    SkAutoTUnref<GrTexture> au(texture);
-
-    SkIRect intScreen = SkIRect::MakeWH(kXSize, kYSize);
-    SkRect screen;
-
-    screen = SkRect::MakeWH(SkIntToScalar(kXSize),
-                            SkIntToScalar(kYSize));
-
-    SkRect clipRect(screen);
-    clipRect.outset(10, 10);
-
-    // create a clip stack that will (trivially) reduce to a single rect that
-    // is larger than the screen
-    SkClipStack stack;
-    stack.clipDevRect(clipRect, SkRegion::kReplace_Op, false);
-
-    bool isIntersectionOfRects = true;
-    SkRect devStackBounds;
-
-    stack.getConservativeBounds(0, 0, kXSize, kYSize,
-                                &devStackBounds,
-                                &isIntersectionOfRects);
-
-    // make sure that the SkClipStack is behaving itself
-    REPORTER_ASSERT(reporter, screen == devStackBounds);
-    REPORTER_ASSERT(reporter, isIntersectionOfRects);
-
-    // wrap the SkClipStack in a GrClip
-    GrClip clipData;
-    clipData.setClipStack(&stack);
-
-    SkIRect devGrClipBound;
-    clipData.getConservativeBounds(texture,
-                                   &devGrClipBound,
-                                   &isIntersectionOfRects);
-
-    // make sure that GrClip is behaving itself
-    REPORTER_ASSERT(reporter, intScreen == devGrClipBound);
-    REPORTER_ASSERT(reporter, isIntersectionOfRects);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// verify that the top state of the stack matches the passed in state
-static void check_state(skiatest::Reporter* reporter,
-                        const GrClipMaskCache& cache,
-                        const SkClipStack& clip,
-                        GrTexture* mask,
-                        const SkIRect& bound) {
-    REPORTER_ASSERT(reporter, clip.getTopmostGenID() == cache.getLastClipGenID());
-
-    REPORTER_ASSERT(reporter, mask == cache.getLastMask());
-
-    SkIRect cacheBound;
-    cache.getLastBound(&cacheBound);
-    REPORTER_ASSERT(reporter, bound == cacheBound);
-}
-
-static void check_empty_state(skiatest::Reporter* reporter,
-                              const GrClipMaskCache& cache) {
-    REPORTER_ASSERT(reporter, SkClipStack::kInvalidGenID == cache.getLastClipGenID());
-    REPORTER_ASSERT(reporter, nullptr == cache.getLastMask());
-
-    SkIRect emptyBound;
-    emptyBound.setEmpty();
-
-    SkIRect cacheBound;
-    cache.getLastBound(&cacheBound);
-    REPORTER_ASSERT(reporter, emptyBound == cacheBound);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// basic test of the cache's base functionality:
-//  push, pop, set, canReuse & getters
-static void test_cache(skiatest::Reporter* reporter, GrContext* context) {
-
-    if (false) { // avoid bit rot, suppress warning
-        create_texture(context);
-    }
-    GrClipMaskCache cache(context->resourceProvider());
-
-    // check initial state
-    check_empty_state(reporter, cache);
-
-    // set the current state
-    SkIRect bound1;
-    bound1.set(0, 0, 100, 100);
-
-    SkClipStack clip1(bound1);
-
-    GrSurfaceDesc desc;
-    desc.fFlags = kRenderTarget_GrSurfaceFlag;
-    desc.fWidth = X_SIZE;
-    desc.fHeight = Y_SIZE;
-    desc.fConfig = kSkia8888_GrPixelConfig;
-
-    cache.acquireMask(clip1.getTopmostGenID(), desc, bound1);
-
-    GrTexture* texture1 = cache.getLastMask();
-    REPORTER_ASSERT(reporter, texture1);
-    if (nullptr == texture1) {
-        return;
-    }
-
-    // check that the set took
-    check_state(reporter, cache, clip1, texture1, bound1);
-
-    // push the state
-    cache.push();
-
-    // verify that the pushed state is initially empty
-    check_empty_state(reporter, cache);
-
-    // modify the new state
-    SkIRect bound2;
-    bound2.set(-10, -10, 10, 10);
-
-    SkClipStack clip2(bound2);
-
-    cache.acquireMask(clip2.getTopmostGenID(), desc, bound2);
-
-    GrTexture* texture2 = cache.getLastMask();
-    REPORTER_ASSERT(reporter, texture2);
-    if (nullptr == texture2) {
-        return;
-    }
-
-    // check that the changes took
-    check_state(reporter, cache, clip2, texture2, bound2);
-
-    // check to make sure canReuse works
-    REPORTER_ASSERT(reporter, cache.canReuse(clip2.getTopmostGenID(), bound2));
-    REPORTER_ASSERT(reporter, !cache.canReuse(clip1.getTopmostGenID(), bound1));
-
-    // pop the state
-    cache.pop();
-
-    // verify that the old state is restored
-    check_state(reporter, cache, clip1, texture1, bound1);
-
-    // manually clear the state
-    cache.reset();
-
-    // verify it is now empty
-    check_empty_state(reporter, cache);
-
-    // pop again - so there is no state
-    cache.pop();
-
-#if !defined(SK_DEBUG)
-    // verify that the getters don't crash
-    // only do in release since it generates asserts in debug
-    check_empty_state(reporter, cache);
-#endif
-}
-
-DEF_GPUTEST(ClipCache, reporter, factory) {
-    for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
-        GrContextFactory::GLContextType glType = static_cast<GrContextFactory::GLContextType>(type);
-        if (!GrContextFactory::IsRenderingGLContext(glType)) {
-            continue;
-        }
-        GrContext* context = factory->get(glType);
-        if (nullptr == context) {
-            continue;
-        }
-
-        test_cache(reporter, context);
-        test_clip_bounds(reporter, context);
-    }
-}
-
-#endif
diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp
index 0036f83..83e4535 100644
--- a/tests/ResourceCacheTest.cpp
+++ b/tests/ResourceCacheTest.cpp
@@ -18,6 +18,7 @@
 #include "GrRenderTarget.h"
 #include "GrRenderTargetPriv.h"
 #include "GrResourceCache.h"
+#include "GrResourceProvider.h"
 #include "GrTest.h"
 #include "SkCanvas.h"
 #include "SkGr.h"