• 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 struct TraceInfo
22 {
23     char name[kTraceInfoMaxNameLen];
24     bool initialized = false;
25     uint32_t contextClientMajorVersion;
26     uint32_t contextClientMinorVersion;
27     uint32_t frameStart;
28     uint32_t frameEnd;
29     uint32_t drawSurfaceWidth;
30     uint32_t drawSurfaceHeight;
31     uint32_t drawSurfaceColorSpace;
32     uint32_t displayPlatformType;
33     uint32_t displayDeviceType;
34     int configRedBits;
35     int configBlueBits;
36     int configGreenBits;
37     int configAlphaBits;
38     int configDepthBits;
39     int configStencilBits;
40     bool isBinaryDataCompressed;
41     bool areClientArraysEnabled;
42     bool isBindGeneratesResourcesEnabled;
43     bool isWebGLCompatibilityEnabled;
44     bool isRobustResourceInitEnabled;
45     std::vector<std::string> traceFiles;
46     int windowSurfaceContextId;
47     std::vector<std::string> requiredExtensions;
48     std::vector<int> keyFrames;
49 };
50 
51 // Test suite calls into the trace library (fixture).
52 struct TraceFunctions
53 {
54     virtual void SetupReplay()                    = 0;
55     virtual void ReplayFrame(uint32_t frameIndex) = 0;
56     virtual void ResetReplay()                    = 0;
57     virtual void FinishReplay()                   = 0;
58 
59     virtual void SetBinaryDataDir(const char *dataDir) = 0;
60     virtual void SetTraceInfo(const TraceInfo &traceInfo);
61     virtual void SetTraceGzPath(const std::string &traceGzPath);
62 
~TraceFunctionsTraceFunctions63     virtual ~TraceFunctions() {}
64 };
65 
66 // Trace library (fixture) calls into the test suite.
67 struct TraceCallbacks
68 {
69     virtual uint8_t *LoadBinaryData(const char *fileName) = 0;
70 
~TraceCallbacksTraceCallbacks71     virtual ~TraceCallbacks() {}
72 };
73 
74 }  // namespace angle
75 #endif  // UTIL_CAPTURE_TRACE_INTERFACE_H_
76