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