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