• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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     bool isCL;
52     std::vector<std::string> traceFiles;
53     int windowSurfaceContextId;
54     std::vector<std::string> requiredExtensions;
55     std::vector<int> keyFrames;
56 };
57 
58 // Test suite calls into the trace library (fixture).
59 struct TraceFunctions
60 {
61     virtual void SetupReplay()                    = 0;
62     virtual void ReplayFrame(uint32_t frameIndex) = 0;
63     virtual void ResetReplay()                    = 0;
64     virtual void FinishReplay()                   = 0;
65     virtual void SetupFirstFrame()                = 0;
66 
67     virtual void SetBinaryDataDir(const char *dataDir)                        = 0;
68     virtual void SetReplayResourceMode(const ReplayResourceMode resourceMode) = 0;
69     virtual void SetTraceGzPath(const std::string &traceGzPath)               = 0;
70     virtual void SetTraceInfo(const TraceInfo &traceInfo)                     = 0;
71 
~TraceFunctionsTraceFunctions72     virtual ~TraceFunctions() {}
73 };
74 
75 // Trace library (fixture) calls into the test suite.
76 struct TraceCallbacks
77 {
78     virtual uint8_t *LoadBinaryData(const char *fileName) = 0;
79 
~TraceCallbacksTraceCallbacks80     virtual ~TraceCallbacks() {}
81 };
82 
83 }  // namespace angle
84 #endif  // UTIL_CAPTURE_TRACE_INTERFACE_H_
85