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