Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Unified Diff: tests/ClipCacheTest.cpp

Issue 1377943003: Remove separate cache for clip mask textures (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/ClipBoundsTest.cpp ('k') | tests/ResourceCacheTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/ClipCacheTest.cpp
diff --git a/tests/ClipCacheTest.cpp b/tests/ClipCacheTest.cpp
deleted file mode 100644
index c57fb378500e367956a8ee7d12eb7d76e77b9af4..0000000000000000000000000000000000000000
--- 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
« no previous file with comments | « tests/ClipBoundsTest.cpp ('k') | tests/ResourceCacheTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698