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