xref: /aosp_15_r20/external/skia/tests/GrContextAbandonTest.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "include/core/SkTypes.h"
9 #include "include/gpu/ganesh/GrDirectContext.h"
10 #include "tests/CtsEnforcement.h"
11 #include "tests/Test.h"
12 #include "tools/gpu/ContextType.h"
13 #include "tools/gpu/FenceSync.h"
14 
15 struct GrContextOptions;
16 
17 using namespace sk_gpu_test;
18 
DEF_GANESH_TEST(GrContext_abandonContext,reporter,options,CtsEnforcement::kApiLevel_T)19 DEF_GANESH_TEST(GrContext_abandonContext, reporter, options, CtsEnforcement::kApiLevel_T) {
20     for (int testType = 0; testType < 6; ++testType) {
21         for (int i = 0; i < skgpu::kContextTypeCount; ++i) {
22             GrContextFactory testFactory(options);
23             auto ctxType = static_cast<skgpu::ContextType>(i);
24             ContextInfo info = testFactory.getContextInfo(ctxType);
25             if (auto context = info.directContext()) {
26                 switch (testType) {
27                     case 0:
28                         context->abandonContext();
29                         break;
30                     case 1:
31                         context->releaseResourcesAndAbandonContext();
32                         break;
33                     case 2:
34                         context->abandonContext();
35                         context->abandonContext();
36                         break;
37                     case 3:
38                         context->abandonContext();
39                         context->releaseResourcesAndAbandonContext();
40                         break;
41                     case 4:
42                         context->releaseResourcesAndAbandonContext();
43                         context->abandonContext();
44                         break;
45                     case 5:
46                         context->releaseResourcesAndAbandonContext();
47                         context->releaseResourcesAndAbandonContext();
48                         break;
49                 }
50             }
51         }
52     }
53 }
54