diff options
author | bsalomon <bsalomon@google.com> | 2016-04-01 11:54:31 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-01 11:54:31 -0700 |
commit | 6e2aad4e9f6280aa2b710e7324458fdc6d699ec5 (patch) | |
tree | 77bf09c049b5afe4aaccd66b7926050c53bbebff /tests/GrContextAbandonTest.cpp | |
parent | 895f3f0544ce38d35999771754cbb1d876c14b5a (diff) |
Add GrContext::releaseAndAbandonContext()
Like abandonContext() this disconnects the GrContext from the underlying 3D API. However, unlike abandonContext it first frees all allocated GPU resources.
BUG=skia:5142
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1852733002
Review URL: https://codereview.chromium.org/1852733002
Diffstat (limited to 'tests/GrContextAbandonTest.cpp')
-rw-r--r-- | tests/GrContextAbandonTest.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/GrContextAbandonTest.cpp b/tests/GrContextAbandonTest.cpp new file mode 100644 index 0000000000..c62973f4da --- /dev/null +++ b/tests/GrContextAbandonTest.cpp @@ -0,0 +1,53 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkTypes.h" + +#if SK_SUPPORT_GPU + +#include "GrContextFactory.h" +#include "Test.h" + +using sk_gpu_test::GrContextFactory; + +DEF_GPUTEST(GrContext_abandonContext, reporter, /*factory*/) { + for (int testType = 0; testType < 6; ++testType) { + for (int i = 0; i < GrContextFactory::kGLContextTypeCnt; ++i) { + GrContextFactory testFactory; + GrContextFactory::GLContextType ctxType = (GrContextFactory::GLContextType) i; + GrContextFactory::ContextInfo info = testFactory.getContextInfo(ctxType); + if (GrContext* context = info.fGrContext) { + switch (testType) { + case 0: + context->abandonContext(); + break; + case 1: + context->releaseResourcesAndAbandonContext(); + break; + case 2: + context->abandonContext(); + context->abandonContext(); + break; + case 3: + context->abandonContext(); + context->releaseResourcesAndAbandonContext(); + break; + case 4: + context->releaseResourcesAndAbandonContext(); + context->abandonContext(); + break; + case 5: + context->releaseResourcesAndAbandonContext(); + context->releaseResourcesAndAbandonContext(); + break; + } + } + } + } +} + +#endif |