xref: /aosp_15_r20/external/angle/util/capture/trace_interface.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1 //
2 // Copyright 2023 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 // trace_interface:
7 //   Interface shared between trace libraries and the test suite.
8 //
9 
10 #ifndef UTIL_CAPTURE_TRACE_INTERFACE_H_
11 #define UTIL_CAPTURE_TRACE_INTERFACE_H_
12 
13 #include <string>
14 #include <vector>
15 
16 namespace angle
17 {
18 
19 static constexpr size_t kTraceInfoMaxNameLen = 128;
20 
21 enum class ReplayResourceMode
22 {
23     Active,
24     All,
25 };
26 
27 struct TraceInfo
28 {
29     char name[kTraceInfoMaxNameLen];
30     bool initialized = false;
31     uint32_t contextClientMajorVersion;
32     uint32_t contextClientMinorVersion;
33     uint32_t frameStart;
34     uint32_t frameEnd;
35     uint32_t drawSurfaceWidth;
36     uint32_t drawSurfaceHeight;
37     uint32_t drawSurfaceColorSpace;
38     uint32_t displayPlatformType;
39     uint32_t displayDeviceType;
40     int configRedBits;
41     int configBlueBits;
42     int configGreenBits;
43     int configAlphaBits;
44     int configDepthBits;
45     int configStencilBits;
46     bool isBinaryDataCompressed;
47     bool areClientArraysEnabled;
48     bool isBindGeneratesResourcesEnabled;
49     bool isWebGLCompatibilityEnabled;
50     bool isRobustResourceInitEnabled;
51     std::vector<std::string> traceFiles;
52     int windowSurfaceContextId;
53     std::vector<std::string> requiredExtensions;
54     std::vector<int> keyFrames;
55 };
56 
57 // Test suite calls into the trace library (fixture).
58 struct TraceFunctions
59 {
60     virtual void SetupReplay()                    = 0;
61     virtual void ReplayFrame(uint32_t frameIndex) = 0;
62     virtual void ResetReplay()                    = 0;
63     virtual void FinishReplay()                   = 0;
64 
65     virtual void SetBinaryDataDir(const char *dataDir)                        = 0;
66     virtual void SetReplayResourceMode(const ReplayResourceMode resourceMode) = 0;
67     virtual void SetTraceGzPath(const std::string &traceGzPath)               = 0;
68     virtual void SetTraceInfo(const TraceInfo &traceInfo)                     = 0;
69 
~TraceFunctionsTraceFunctions70     virtual ~TraceFunctions() {}
71 };
72 
73 // Trace library (fixture) calls into the test suite.
74 struct TraceCallbacks
75 {
76     virtual uint8_t *LoadBinaryData(const char *fileName) = 0;
77 
~TraceCallbacksTraceCallbacks78     virtual ~TraceCallbacks() {}
79 };
80 
81 }  // namespace angle
82 #endif  // UTIL_CAPTURE_TRACE_INTERFACE_H_
83