1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2023 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker // trace_interface: 7*8975f5c5SAndroid Build Coastguard Worker // Interface shared between trace libraries and the test suite. 8*8975f5c5SAndroid Build Coastguard Worker // 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #ifndef UTIL_CAPTURE_TRACE_INTERFACE_H_ 11*8975f5c5SAndroid Build Coastguard Worker #define UTIL_CAPTURE_TRACE_INTERFACE_H_ 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Worker #include <string> 14*8975f5c5SAndroid Build Coastguard Worker #include <vector> 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker namespace angle 17*8975f5c5SAndroid Build Coastguard Worker { 18*8975f5c5SAndroid Build Coastguard Worker 19*8975f5c5SAndroid Build Coastguard Worker static constexpr size_t kTraceInfoMaxNameLen = 128; 20*8975f5c5SAndroid Build Coastguard Worker 21*8975f5c5SAndroid Build Coastguard Worker enum class ReplayResourceMode 22*8975f5c5SAndroid Build Coastguard Worker { 23*8975f5c5SAndroid Build Coastguard Worker Active, 24*8975f5c5SAndroid Build Coastguard Worker All, 25*8975f5c5SAndroid Build Coastguard Worker }; 26*8975f5c5SAndroid Build Coastguard Worker 27*8975f5c5SAndroid Build Coastguard Worker struct TraceInfo 28*8975f5c5SAndroid Build Coastguard Worker { 29*8975f5c5SAndroid Build Coastguard Worker char name[kTraceInfoMaxNameLen]; 30*8975f5c5SAndroid Build Coastguard Worker bool initialized = false; 31*8975f5c5SAndroid Build Coastguard Worker uint32_t contextClientMajorVersion; 32*8975f5c5SAndroid Build Coastguard Worker uint32_t contextClientMinorVersion; 33*8975f5c5SAndroid Build Coastguard Worker uint32_t frameStart; 34*8975f5c5SAndroid Build Coastguard Worker uint32_t frameEnd; 35*8975f5c5SAndroid Build Coastguard Worker uint32_t drawSurfaceWidth; 36*8975f5c5SAndroid Build Coastguard Worker uint32_t drawSurfaceHeight; 37*8975f5c5SAndroid Build Coastguard Worker uint32_t drawSurfaceColorSpace; 38*8975f5c5SAndroid Build Coastguard Worker uint32_t displayPlatformType; 39*8975f5c5SAndroid Build Coastguard Worker uint32_t displayDeviceType; 40*8975f5c5SAndroid Build Coastguard Worker int configRedBits; 41*8975f5c5SAndroid Build Coastguard Worker int configBlueBits; 42*8975f5c5SAndroid Build Coastguard Worker int configGreenBits; 43*8975f5c5SAndroid Build Coastguard Worker int configAlphaBits; 44*8975f5c5SAndroid Build Coastguard Worker int configDepthBits; 45*8975f5c5SAndroid Build Coastguard Worker int configStencilBits; 46*8975f5c5SAndroid Build Coastguard Worker bool isBinaryDataCompressed; 47*8975f5c5SAndroid Build Coastguard Worker bool areClientArraysEnabled; 48*8975f5c5SAndroid Build Coastguard Worker bool isBindGeneratesResourcesEnabled; 49*8975f5c5SAndroid Build Coastguard Worker bool isWebGLCompatibilityEnabled; 50*8975f5c5SAndroid Build Coastguard Worker bool isRobustResourceInitEnabled; 51*8975f5c5SAndroid Build Coastguard Worker std::vector<std::string> traceFiles; 52*8975f5c5SAndroid Build Coastguard Worker int windowSurfaceContextId; 53*8975f5c5SAndroid Build Coastguard Worker std::vector<std::string> requiredExtensions; 54*8975f5c5SAndroid Build Coastguard Worker std::vector<int> keyFrames; 55*8975f5c5SAndroid Build Coastguard Worker }; 56*8975f5c5SAndroid Build Coastguard Worker 57*8975f5c5SAndroid Build Coastguard Worker // Test suite calls into the trace library (fixture). 58*8975f5c5SAndroid Build Coastguard Worker struct TraceFunctions 59*8975f5c5SAndroid Build Coastguard Worker { 60*8975f5c5SAndroid Build Coastguard Worker virtual void SetupReplay() = 0; 61*8975f5c5SAndroid Build Coastguard Worker virtual void ReplayFrame(uint32_t frameIndex) = 0; 62*8975f5c5SAndroid Build Coastguard Worker virtual void ResetReplay() = 0; 63*8975f5c5SAndroid Build Coastguard Worker virtual void FinishReplay() = 0; 64*8975f5c5SAndroid Build Coastguard Worker 65*8975f5c5SAndroid Build Coastguard Worker virtual void SetBinaryDataDir(const char *dataDir) = 0; 66*8975f5c5SAndroid Build Coastguard Worker virtual void SetReplayResourceMode(const ReplayResourceMode resourceMode) = 0; 67*8975f5c5SAndroid Build Coastguard Worker virtual void SetTraceGzPath(const std::string &traceGzPath) = 0; 68*8975f5c5SAndroid Build Coastguard Worker virtual void SetTraceInfo(const TraceInfo &traceInfo) = 0; 69*8975f5c5SAndroid Build Coastguard Worker ~TraceFunctionsTraceFunctions70*8975f5c5SAndroid Build Coastguard Worker virtual ~TraceFunctions() {} 71*8975f5c5SAndroid Build Coastguard Worker }; 72*8975f5c5SAndroid Build Coastguard Worker 73*8975f5c5SAndroid Build Coastguard Worker // Trace library (fixture) calls into the test suite. 74*8975f5c5SAndroid Build Coastguard Worker struct TraceCallbacks 75*8975f5c5SAndroid Build Coastguard Worker { 76*8975f5c5SAndroid Build Coastguard Worker virtual uint8_t *LoadBinaryData(const char *fileName) = 0; 77*8975f5c5SAndroid Build Coastguard Worker ~TraceCallbacksTraceCallbacks78*8975f5c5SAndroid Build Coastguard Worker virtual ~TraceCallbacks() {} 79*8975f5c5SAndroid Build Coastguard Worker }; 80*8975f5c5SAndroid Build Coastguard Worker 81*8975f5c5SAndroid Build Coastguard Worker } // namespace angle 82*8975f5c5SAndroid Build Coastguard Worker #endif // UTIL_CAPTURE_TRACE_INTERFACE_H_ 83