xref: /aosp_15_r20/external/angle/src/tests/perf_tests/ResultPerf.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2018 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker // ResultPerf:
7*8975f5c5SAndroid Build Coastguard Worker //   Performance test for ANGLE's Error result class.
8*8975f5c5SAndroid Build Coastguard Worker //
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #include "ANGLEPerfTest.h"
11*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Error.h"
12*8975f5c5SAndroid Build Coastguard Worker 
13*8975f5c5SAndroid Build Coastguard Worker volatile int gThing = 0;
14*8975f5c5SAndroid Build Coastguard Worker 
15*8975f5c5SAndroid Build Coastguard Worker namespace
16*8975f5c5SAndroid Build Coastguard Worker {
17*8975f5c5SAndroid Build Coastguard Worker constexpr int kIterationsPerStep = 1000;
18*8975f5c5SAndroid Build Coastguard Worker 
19*8975f5c5SAndroid Build Coastguard Worker class ResultPerfTest : public ANGLEPerfTest
20*8975f5c5SAndroid Build Coastguard Worker {
21*8975f5c5SAndroid Build Coastguard Worker   public:
22*8975f5c5SAndroid Build Coastguard Worker     ResultPerfTest();
23*8975f5c5SAndroid Build Coastguard Worker     void step() override;
24*8975f5c5SAndroid Build Coastguard Worker };
25*8975f5c5SAndroid Build Coastguard Worker 
ResultPerfTest()26*8975f5c5SAndroid Build Coastguard Worker ResultPerfTest::ResultPerfTest() : ANGLEPerfTest("ResultPerf", "", "_run", kIterationsPerStep) {}
27*8975f5c5SAndroid Build Coastguard Worker 
ExternalCall()28*8975f5c5SAndroid Build Coastguard Worker ANGLE_NOINLINE angle::Result ExternalCall()
29*8975f5c5SAndroid Build Coastguard Worker {
30*8975f5c5SAndroid Build Coastguard Worker     if (gThing != 0)
31*8975f5c5SAndroid Build Coastguard Worker     {
32*8975f5c5SAndroid Build Coastguard Worker         printf("Something very slow");
33*8975f5c5SAndroid Build Coastguard Worker         return angle::Result::Stop;
34*8975f5c5SAndroid Build Coastguard Worker     }
35*8975f5c5SAndroid Build Coastguard Worker     else
36*8975f5c5SAndroid Build Coastguard Worker     {
37*8975f5c5SAndroid Build Coastguard Worker         return angle::Result::Continue;
38*8975f5c5SAndroid Build Coastguard Worker     }
39*8975f5c5SAndroid Build Coastguard Worker }
40*8975f5c5SAndroid Build Coastguard Worker 
CallReturningResult(int depth)41*8975f5c5SAndroid Build Coastguard Worker angle::Result CallReturningResult(int depth)
42*8975f5c5SAndroid Build Coastguard Worker {
43*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
44*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
45*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
46*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
47*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
48*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
49*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
50*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
51*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(ExternalCall());
52*8975f5c5SAndroid Build Coastguard Worker     return ExternalCall();
53*8975f5c5SAndroid Build Coastguard Worker }
54*8975f5c5SAndroid Build Coastguard Worker 
step()55*8975f5c5SAndroid Build Coastguard Worker void ResultPerfTest::step()
56*8975f5c5SAndroid Build Coastguard Worker {
57*8975f5c5SAndroid Build Coastguard Worker     for (int i = 0; i < kIterationsPerStep; i++)
58*8975f5c5SAndroid Build Coastguard Worker     {
59*8975f5c5SAndroid Build Coastguard Worker         (void)CallReturningResult(0);
60*8975f5c5SAndroid Build Coastguard Worker         (void)CallReturningResult(0);
61*8975f5c5SAndroid Build Coastguard Worker         (void)CallReturningResult(0);
62*8975f5c5SAndroid Build Coastguard Worker         (void)CallReturningResult(0);
63*8975f5c5SAndroid Build Coastguard Worker         (void)CallReturningResult(0);
64*8975f5c5SAndroid Build Coastguard Worker     }
65*8975f5c5SAndroid Build Coastguard Worker }
66*8975f5c5SAndroid Build Coastguard Worker 
TEST_F(ResultPerfTest,Run)67*8975f5c5SAndroid Build Coastguard Worker TEST_F(ResultPerfTest, Run)
68*8975f5c5SAndroid Build Coastguard Worker {
69*8975f5c5SAndroid Build Coastguard Worker     run();
70*8975f5c5SAndroid Build Coastguard Worker }
71*8975f5c5SAndroid Build Coastguard Worker }  // anonymous namespace
72