aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar bsalomon <bsalomon@google.com>2015-10-02 07:49:05 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-10-02 07:49:06 -0700
commit473addf17617d441edb44e501786cdd97d3ebdfb (patch)
treee12e62ec753a78e1523ef1cfb12ac897f2de48c4 /tests
parent399dd05962b092bfd495962107a2af9db5bf15a7 (diff)
Remove separate cache for clip mask textures
Diffstat (limited to 'tests')
-rw-r--r--tests/ClipBoundsTest.cpp85
-rw-r--r--tests/ClipCacheTest.cpp231
-rw-r--r--tests/ResourceCacheTest.cpp1
3 files changed, 86 insertions, 231 deletions
diff --git a/tests/ClipBoundsTest.cpp b/tests/ClipBoundsTest.cpp
new file mode 100644
index 0000000000..781ee877a6
--- /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 c57fb37850..0000000000
--- 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 0036f839ea..83e4535361 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"