diff options
author | Jamie Madill <jmadill@chromium.org> | 2021-09-02 10:31:13 -0400 |
---|---|---|
committer | Angle LUCI CQ <angle-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2021-09-08 17:13:59 +0000 |
commit | 2f3e4db838068584a0c15653cb07893683a55300 (patch) | |
tree | 7487380f98f5cce6d93229acf45aea05bc1e44fb | |
parent | 8b2fd983e61aa3993a8272291c398247d7c279e0 (diff) | |
download | platform_external_angle-2f3e4db838068584a0c15653cb07893683a55300.tar.gz platform_external_angle-2f3e4db838068584a0c15653cb07893683a55300.tar.bz2 platform_external_angle-2f3e4db838068584a0c15653cb07893683a55300.zip |
Capture/Replay: Serialize trace metadata to a JSON file.
This will allow us to remove more code auto-generation for the trace
tests. The trace info now can be loaded directly from JSON instead of
from the autogenerated information.
Bug: angleproject:5133
Change-Id: I04e22b9279b19282df274bc8defcd363d0449111
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140218
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
20 files changed, 2646 insertions, 848 deletions
@@ -48,9 +48,6 @@ declare_args() { # Optional feature that forces dirty state whenever we use a new context regardless of thread. angle_force_context_check_every_call = false - - # Indicate if the rapidJSON library is available to build with in third_party/. - angle_has_rapidjson = angle_has_build } if (angle_build_all) { diff --git a/gni/angle.gni b/gni/angle.gni index a9d52a69d..5706d6f4d 100644 --- a/gni/angle.gni +++ b/gni/angle.gni @@ -81,6 +81,9 @@ declare_args() { } else { assert(false, "Unknown current CPU: $current_cpu") } + + # Indicate if the rapidJSON library is available to build with in third_party/. + angle_has_rapidjson = angle_has_build } declare_args() { @@ -540,8 +543,8 @@ template("angle_trace") { "${_trace_prefix}.h", ] + invoker.sources - # TODO(http://anglebug.com/5878): Revert back to non-autogen'ed file names for the angledata.gz. - data = [ invoker.angledata ] + # TODO(http://anglebug.com/5133): Revert back to non-autogen'ed data. + data = invoker.data defines = [ "ANGLE_REPLAY_IMPLEMENTATION" ] suppressed_configs += [ "$angle_root:constructor_and_destructor_warnings" ] diff --git a/samples/capture_replay/CaptureReplay.cpp b/samples/capture_replay/CaptureReplay.cpp index 98e5e6cc9..fd4e2ca00 100644 --- a/samples/capture_replay/CaptureReplay.cpp +++ b/samples/capture_replay/CaptureReplay.cpp @@ -9,7 +9,7 @@ #include <functional> -#include "util/frame_capture_test_utils.h" +#include "util/capture/frame_capture_test_utils.h" // Build the right context header based on replay ID // This will expand to "angle_capture_context<#>.h" diff --git a/scripts/code_generation_hashes/restricted_traces.json b/scripts/code_generation_hashes/restricted_traces.json index 65e582379..74812212b 100644 --- a/scripts/code_generation_hashes/restricted_traces.json +++ b/scripts/code_generation_hashes/restricted_traces.json @@ -2,13 +2,13 @@ "src/tests/restricted_traces/.gitignore": "111524060c1eb48a1969a91f8ae13e59", "src/tests/restricted_traces/gen_restricted_traces.py": - "7af1825f7a46ece5f93947c2b16a7839", + "47c2ec4e240ad36c7610d90a9a3f0b7b", "src/tests/restricted_traces/restricted_traces.json": "b7d9e3fe8e34d206a147d6be3a60a688", "src/tests/restricted_traces/restricted_traces_autogen.cpp": - "8d6a8004aaf1aa00cb8b525940dd6f7d", + "3d8027c784f8a0305d29a9c8db676947", "src/tests/restricted_traces/restricted_traces_autogen.gni": - "3016d2852c61cbb5dbf876b787cabe10", + "a5daf01e76886d5208139bc4fa53a870", "src/tests/restricted_traces/restricted_traces_autogen.h": - "4da2eb50842afbb7c1023b395f4bfb8e" + "77a97c4bb042e28be314bf45e915e013" }
\ No newline at end of file diff --git a/src/libANGLE/capture/FrameCapture.cpp b/src/libANGLE/capture/FrameCapture.cpp index 82249d8fb..7d24be924 100644 --- a/src/libANGLE/capture/FrameCapture.cpp +++ b/src/libANGLE/capture/FrameCapture.cpp @@ -42,6 +42,7 @@ #include "libANGLE/entry_points_utils.h" #include "libANGLE/queryconversions.h" #include "libANGLE/queryutils.h" +#include "libANGLE/serializer/JsonSerializer.h" #include "third_party/ceval/ceval.h" #define USE_SYSTEM_ZLIB @@ -5905,13 +5906,74 @@ void FrameCaptureShared::replay(gl::Context *context) void FrameCaptureShared::writeCppReplayIndexFiles(const gl::Context *context, bool writeResetContextCall) { - const gl::ContextID contextId = context->id(); - const egl::Config *config = context->getConfig(); - const egl::AttributeMap &attributes = context->getDisplay()->getAttributeMap(); - const egl::ShareGroup *shareGroup = context->getShareGroup(); + const gl::ContextID contextId = context->id(); + const egl::Config *config = context->getConfig(); + const egl::AttributeMap &displayAttribs = context->getDisplay()->getAttributeMap(); + const egl::ShareGroup *shareGroup = context->getShareGroup(); unsigned frameCount = getFrameCount(); + const SurfaceParams &surfaceParams = mDrawSurfaceParams.at(contextId); + const gl::State &glState = context->getState(); + + // Serialize trace metadata into a JSON file. The JSON file will be named "trace_prefix.json". + // + // As of writing, it will have the format like so: + // { + // "TraceMetadata": + // { + // "AreClientArraysEnabled" : 1, "CaptureRevision" : 16631, "ConfigAlphaBits" : 8, + // "ConfigBlueBits" : 8, "ConfigDepthBits" : 24, "ConfigGreenBits" : 8, + // ... etc ... + + JsonSerializer json; + json.startDocument("TraceMetadata"); + json.addScalar("CaptureRevision", ANGLE_REVISION); + json.addScalar("ContextClientMajorVersion", context->getClientMajorVersion()); + json.addScalar("ContextClientMinorVersion", context->getClientMinorVersion()); + json.addScalar("DisplayPlatformType", displayAttribs.getAsInt(EGL_PLATFORM_ANGLE_TYPE_ANGLE)); + json.addScalar("DisplayDeviceType", + displayAttribs.getAsInt(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE)); + json.addScalar("FrameStart", 1); + json.addScalar("FrameEnd", frameCount); + json.addScalar("DrawSurfaceWidth", surfaceParams.extents.width); + json.addScalar("DrawSurfaceHeight", surfaceParams.extents.height); + json.addScalar("DrawSurfaceColorSpace", ToEGLenum(surfaceParams.colorSpace)); + if (config) + { + json.addScalar("ConfigRedBits", config->redSize); + json.addScalar("ConfigGreenBits", config->greenSize); + json.addScalar("ConfigBlueBits", config->blueSize); + json.addScalar("ConfigAlphaBits", config->alphaSize); + json.addScalar("ConfigDepthBits", config->depthSize); + json.addScalar("ConfigStencilBits", config->stencilSize); + } + else + { + json.addScalar("ConfigRedBits", EGL_DONT_CARE); + json.addScalar("ConfigGreenBits", EGL_DONT_CARE); + json.addScalar("ConfigBlueBits", EGL_DONT_CARE); + json.addScalar("ConfigAlphaBits", EGL_DONT_CARE); + json.addScalar("ConfigDepthBits", EGL_DONT_CARE); + json.addScalar("ConfigStencilBits", EGL_DONT_CARE); + } + json.addBool("IsBinaryDataCompressed", mCompression); + json.addBool("AreClientArraysEnabled", glState.areClientArraysEnabled()); + json.addBool("IsBindGeneratesResourcesEnabled", glState.isBindGeneratesResourceEnabled()); + json.addBool("IsWebGLCompatibilityEnabled", glState.isWebGL()); + json.addBool("IsRobustResourceInitEnabled", glState.isRobustResourceInitEnabled()); + json.endDocument(); + + { + std::stringstream jsonFileNameStream; + jsonFileNameStream << mOutDirectory << FmtCapturePrefix(kNoContextId, mCaptureLabel) + << ".json"; + std::string jsonFileName = jsonFileNameStream.str(); + + SaveFileHelper saveData(jsonFileName); + saveData.write(reinterpret_cast<const uint8_t *>(json.data()), json.length()); + } + std::stringstream header; std::stringstream source; @@ -5926,56 +5988,6 @@ void FrameCaptureShared::writeCppReplayIndexFiles(const gl::Context *context, header << "namespace " << mCaptureLabel << "\n"; header << "{\n"; } - header << "// Begin Trace Metadata\n"; - header << "#define ANGLE_REPLAY_VERSION"; - if (!mCaptureLabel.empty()) - { - std::string captureLabelUpper = mCaptureLabel; - angle::ToUpper(&captureLabelUpper); - header << "_" << captureLabelUpper; - } - header << " " << ANGLE_REVISION << "\n"; - header << "constexpr uint32_t kReplayContextClientMajorVersion = " - << context->getClientMajorVersion() << ";\n"; - header << "constexpr uint32_t kReplayContextClientMinorVersion = " - << context->getClientMinorVersion() << ";\n"; - header << "constexpr EGLint kReplayPlatformType = " - << attributes.getAsInt(EGL_PLATFORM_ANGLE_TYPE_ANGLE) << ";\n"; - header << "constexpr EGLint kReplayDeviceType = " - << attributes.getAsInt(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE) << ";\n"; - header << "constexpr uint32_t kReplayFrameStart = 1;\n"; - header << "constexpr uint32_t kReplayFrameEnd = " << frameCount << ";\n"; - header << "constexpr EGLint kReplayDrawSurfaceWidth = " - << mDrawSurfaceParams.at(contextId).extents.width << ";\n"; - header << "constexpr EGLint kReplayDrawSurfaceHeight = " - << mDrawSurfaceParams.at(contextId).extents.height << ";\n"; - header << "constexpr EGLenum kReplayDrawSurfaceColorSpace = " - << mDrawSurfaceParams.at(contextId).colorSpace << ";\n"; - header << "constexpr EGLint kDefaultFramebufferRedBits = " - << (config ? std::to_string(config->redSize) : "EGL_DONT_CARE") << ";\n"; - header << "constexpr EGLint kDefaultFramebufferGreenBits = " - << (config ? std::to_string(config->greenSize) : "EGL_DONT_CARE") << ";\n"; - header << "constexpr EGLint kDefaultFramebufferBlueBits = " - << (config ? std::to_string(config->blueSize) : "EGL_DONT_CARE") << ";\n"; - header << "constexpr EGLint kDefaultFramebufferAlphaBits = " - << (config ? std::to_string(config->alphaSize) : "EGL_DONT_CARE") << ";\n"; - header << "constexpr EGLint kDefaultFramebufferDepthBits = " - << (config ? std::to_string(config->depthSize) : "EGL_DONT_CARE") << ";\n"; - header << "constexpr EGLint kDefaultFramebufferStencilBits = " - << (config ? std::to_string(config->stencilSize) : "EGL_DONT_CARE") << ";\n"; - header << "constexpr bool kIsBinaryDataCompressed = " << (mCompression ? "true" : "false") - << ";\n"; - header << "constexpr bool kAreClientArraysEnabled = " - << (context->getState().areClientArraysEnabled() ? "true" : "false") << ";\n"; - header << "constexpr bool kbindGeneratesResources = " - << (context->getState().isBindGeneratesResourceEnabled() ? "true" : "false") << ";\n"; - header << "constexpr bool kWebGLCompatibility = " - << (context->getState().getExtensions().webglCompatibility ? "true" : "false") << ";\n"; - header << "constexpr bool kRobustResourceInit = " - << (context->getState().isRobustResourceInitEnabled() ? "true" : "false") << ";\n"; - - header << "// End Trace Metadata\n"; - header << "\n"; for (uint32_t frameIndex = 1; frameIndex <= frameCount; ++frameIndex) { header << "void " << FmtReplayFunction(contextId, frameIndex) << ";\n"; diff --git a/src/libANGLE/serializer/JsonSerializer.cpp b/src/libANGLE/serializer/JsonSerializer.cpp index 99428772d..7075be534 100644 --- a/src/libANGLE/serializer/JsonSerializer.cpp +++ b/src/libANGLE/serializer/JsonSerializer.cpp @@ -94,16 +94,22 @@ void JsonSerializer::addString(const std::string &name, const std::string &value void JsonSerializer::addVectorOfStrings(const std::string &name, const std::vector<std::string> &value) { - rapidjson::Value array(rapidjson::kArrayType); - array.SetArray(); + rapidjson::Value arrayValue(rapidjson::kArrayType); + arrayValue.SetArray(); for (const std::string &v : value) { rapidjson::Value str(v.c_str(), mAllocator); - array.PushBack(str, mAllocator); + arrayValue.PushBack(str, mAllocator); } - mGroupValueStack.top().insert(std::make_pair(name, std::move(array))); + mGroupValueStack.top().insert(std::make_pair(name, std::move(arrayValue))); +} + +void JsonSerializer::addBool(const std::string &name, bool value) +{ + rapidjson::Value boolValue(value); + mGroupValueStack.top().insert(std::make_pair(name, std::move(boolValue))); } const char *JsonSerializer::data() const diff --git a/src/libANGLE/serializer/JsonSerializer.h b/src/libANGLE/serializer/JsonSerializer.h index 885ff107c..ad2e2d0e9 100644 --- a/src/libANGLE/serializer/JsonSerializer.h +++ b/src/libANGLE/serializer/JsonSerializer.h @@ -105,6 +105,8 @@ class JsonSerializer : public angle::NonCopyable void addVectorOfStrings(const std::string &name, const std::vector<std::string> &value); + void addBool(const std::string &name, bool value); + private: using SortedValueGroup = std::multimap<std::string, rapidjson::Value>; diff --git a/src/tests/BUILD.gn b/src/tests/BUILD.gn index 18468e787..054a4a5c4 100644 --- a/src/tests/BUILD.gn +++ b/src/tests/BUILD.gn @@ -426,6 +426,7 @@ if (build_angle_perftests) { deps = [ ":angle_perftests_shared", "$angle_root:angle_compression", + "$angle_root/util:angle_frame_capture_test_utils", "$angle_root/util:angle_png_utils", "restricted_traces:angle_restricted_traces", ] diff --git a/src/tests/capture_replay_tests.py b/src/tests/capture_replay_tests.py index a011eb3ac..e87ae2b9b 100755 --- a/src/tests/capture_replay_tests.py +++ b/src/tests/capture_replay_tests.py @@ -25,6 +25,7 @@ import argparse import difflib import distutils.util import fnmatch +import json import logging import math import multiprocessing @@ -77,73 +78,6 @@ default_case_with_return_template = """\ default: return {default_val};""" -test_trace_info_init_template = """\ - {{ - "{namespace}", - {namespace}::kReplayContextClientMajorVersion, - {namespace}::kReplayContextClientMinorVersion, - {namespace}::kReplayPlatformType, - {namespace}::kReplayDeviceType, - {namespace}::kReplayFrameStart, - {namespace}::kReplayFrameEnd, - {namespace}::kReplayDrawSurfaceWidth, - {namespace}::kReplayDrawSurfaceHeight, - {namespace}::kDefaultFramebufferRedBits, - {namespace}::kDefaultFramebufferGreenBits, - {namespace}::kDefaultFramebufferBlueBits, - {namespace}::kDefaultFramebufferAlphaBits, - {namespace}::kDefaultFramebufferDepthBits, - {namespace}::kDefaultFramebufferStencilBits, - {namespace}::kIsBinaryDataCompressed, - {namespace}::kAreClientArraysEnabled, - {namespace}::kbindGeneratesResources, - {namespace}::kWebGLCompatibility, - {namespace}::kRobustResourceInit, - }}, -""" - -composite_h_file_template = """\ -#pragma once -#include <vector> -#include <string> - -{trace_headers} - -struct TestTraceInfo {{ - std::string testName; - uint32_t replayContextMajorVersion; - uint32_t replayContextMinorVersion; - EGLint replayPlatformType; - EGLint replayDeviceType; - uint32_t replayFrameStart; - uint32_t replayFrameEnd; - EGLint replayDrawSurfaceWidth; - EGLint replayDrawSurfaceHeight; - EGLint defaultFramebufferRedBits; - EGLint defaultFramebufferGreenBits; - EGLint defaultFramebufferBlueBits; - EGLint defaultFramebufferAlphaBits; - EGLint defaultFramebufferDepthBits; - EGLint defaultFramebufferStencilBits; - bool isBinaryDataCompressed; - bool areClientArraysEnabled; - bool bindGeneratesResources; - bool webGLCompatibility; - bool robustResourceInit; -}}; - -extern std::vector<TestTraceInfo> testTraceInfos; -""" - -composite_cpp_file_template = """\ -#include "{h_filename}" - -std::vector<TestTraceInfo> testTraceInfos = -{{ -{test_trace_info_inits} -}}; -""" - def winext(name, ext): return ("%s.%s" % (name, ext)) if sys.platform == "win32" else name @@ -524,9 +458,7 @@ class TestBatch(): def BuildReplay(self, replay_build_dir, composite_file_id, tests, child_processes_manager): # write gni file that holds all the traces files in a list self.CreateGNIFile(composite_file_id, tests) - # write header and cpp composite files, which glue the trace files with - # CaptureReplayTests.cpp - self.CreateTestsCompositeFiles(composite_file_id, tests) + self.CreateTestNamesFile(composite_file_id, tests) gn_args = [('angle_build_capture_replay_tests', 'true'), ('angle_capture_replay_test_trace_dir', '"%s"' % self.trace_dir), @@ -534,6 +466,7 @@ class TestBatch(): returncode, output = child_processes_manager.RunGNGen(self.args, replay_build_dir, True, gn_args) if returncode != 0: + self.logger.warning('GN failure output: %s' % output) self.results.append( GroupedResult(GroupedResult.CompileFailed, "Build replay failed at gn generation", output, tests)) @@ -627,47 +560,28 @@ class TestBatch(): label = test.GetLabel() assert (test.context_id > 0) - fname = "%s%s%d_files.txt" % (label, TRACE_FILE_SUFFIX, test.context_id) + fname = '%s%s%d_files.txt' % (label, TRACE_FILE_SUFFIX, test.context_id) fpath = os.path.join(self.trace_folder_path, fname) with open(fpath) as f: files = f.readlines() f.close() files = ['"%s/%s"' % (self.trace_dir, file.strip()) for file in files] - angledata = "%s%s.angledata.gz" % (label, TRACE_FILE_SUFFIX) + angledata = '%s%s.angledata.gz' % (label, TRACE_FILE_SUFFIX) + jsondata = '%s%s.json' % (label, TRACE_FILE_SUFFIX) test_list += [ - '["%s", %s, [%s], "%s"]' % (label, test.context_id, ','.join(files), angledata) + '["%s", %s, [%s], ["%s", "%s"]]' % + (label, test.context_id, ','.join(files), angledata, jsondata) ] - gni_path = os.path.join(self.trace_folder_path, "traces%d.gni" % composite_file_id) - with open(gni_path, "w") as f: - f.write("trace_data = [\n%s\n]\n" % ',\n'.join(test_list)) + gni_path = os.path.join(self.trace_folder_path, 'traces%d.gni' % composite_file_id) + with open(gni_path, 'w') as f: + f.write('trace_data = [\n%s\n]\n' % ',\n'.join(test_list)) f.close() - # header and cpp composite files, which glue the trace files with CaptureReplayTests.cpp - def CreateTestsCompositeFiles(self, composite_file_id, tests): - # write CompositeTests header file - include_header_template = '#include "{header_file_path}.h"\n' - trace_headers = "".join([ - include_header_template.format(header_file_path=test.GetLabel() + TRACE_FILE_SUFFIX + - str(test.context_id)) for test in tests - ]) - - h_filename = "CompositeTests%d.h" % composite_file_id - with open(os.path.join(self.trace_folder_path, h_filename), "w") as h_file: - h_file.write(composite_h_file_template.format(trace_headers=trace_headers)) - h_file.close() - - # write CompositeTests cpp file - test_trace_info_inits = "".join([ - test_trace_info_init_template.format(namespace=tests[i].GetLabel()) - for i in range(len(tests)) - ]) - - cpp_filename = "CompositeTests%d.cpp" % composite_file_id - with open(os.path.join(self.trace_folder_path, cpp_filename), "w") as cpp_file: - cpp_file.write( - composite_cpp_file_template.format( - h_filename=h_filename, test_trace_info_inits=test_trace_info_inits)) - cpp_file.close() + def CreateTestNamesFile(self, composite_file_id, tests): + data = {'traces': [test.GetLabel() for test in tests]} + names_path = os.path.join(self.trace_folder_path, 'test_names_%d.json' % composite_file_id) + with open(names_path, 'w') as f: + f.write(json.dumps(data)) def __str__(self): repr_str = "TestBatch:\n" diff --git a/src/tests/capture_replay_tests/BUILD.gn b/src/tests/capture_replay_tests/BUILD.gn index 57de597f4..922efcbeb 100644 --- a/src/tests/capture_replay_tests/BUILD.gn +++ b/src/tests/capture_replay_tests/BUILD.gn @@ -25,8 +25,6 @@ if (angle_build_capture_replay_tests) { ] } - # TODO (nguyenmh): http://anglebug.com/4758: - # turn angle_executable into angle_test when adding android support import( "${angle_capture_replay_test_trace_dir}/traces${angle_capture_replay_composite_file_id}.gni") @@ -42,7 +40,7 @@ if (angle_build_capture_replay_tests) { trace_dir = angle_capture_replay_test_trace_dir trace_ctx = _trace_data[1] sources = _trace_data[2] - angledata = _trace_data[3] + data = _trace_data[3] fixture = ":angle_capture_replay_tests_fixture" output_name = _trace } @@ -52,15 +50,13 @@ if (angle_build_capture_replay_tests) { angle_executable("capture_replay_tests") { testonly = true - sources = [ - "${angle_capture_replay_test_trace_dir}/CompositeTests${angle_capture_replay_composite_file_id}.cpp", - "${angle_capture_replay_test_trace_dir}/CompositeTests${angle_capture_replay_composite_file_id}.h", - "CaptureReplayTests.cpp", - ] + sources = [ "CaptureReplayTests.cpp" ] + data = [ "${angle_capture_replay_test_trace_dir}/test_names_${angle_capture_replay_composite_file_id}.json" ] deps = [ ":angle_capture_replay_tests_fixture", "$angle_root:angle_common", "$angle_root:angle_compression", + "$angle_root/util:angle_frame_capture_test_utils", ] + _traces configs += [ "$angle_root:library_name_config", @@ -80,9 +76,7 @@ if (angle_build_capture_replay_tests) { _data_path = rebase_path(_trace_folder_relative_path, root_out_dir) defines = [ "ANGLE_CAPTURE_REPLAY_TEST_DATA_DIR=\"${_data_path}\"", - "ANGLE_CAPTURE_REPLAY_COMPOSITE_TESTS_HEADER=" + - angle_capture_replay_test_trace_dir + - "/CompositeTests${angle_capture_replay_composite_file_id}.h", + "ANGLE_CAPTURE_REPLAY_TEST_NAMES_PATH=\"${_data_path}/test_names_${angle_capture_replay_composite_file_id}.json\"", "ANGLE_REPLAY_EXPORT=", ] include_dirs = [ "." ] diff --git a/src/tests/capture_replay_tests/CaptureReplayTests.cpp b/src/tests/capture_replay_tests/CaptureReplayTests.cpp index 7a96449a1..c1f5be5cd 100644 --- a/src/tests/capture_replay_tests/CaptureReplayTests.cpp +++ b/src/tests/capture_replay_tests/CaptureReplayTests.cpp @@ -24,13 +24,10 @@ #include <string> #include <utility> -#include "util/frame_capture_test_utils.h" - -// Build the right context header based on replay ID -// This will expand to "angle_capture_context<#>.h" -#include ANGLE_MACRO_STRINGIZE(ANGLE_CAPTURE_REPLAY_COMPOSITE_TESTS_HEADER) +#include "util/capture/frame_capture_test_utils.h" constexpr char kResultTag[] = "*RESULT"; +constexpr char kTracePath[] = ANGLE_CAPTURE_REPLAY_TEST_NAMES_PATH; class CaptureReplayTests { @@ -51,10 +48,10 @@ class CaptureReplayTests OSWindow::Delete(&mOSWindow); } - bool initializeTest(uint32_t testIndex, const TestTraceInfo &testTraceInfo) + bool initializeTest(const angle::TraceInfo &traceInfo) { - if (!mOSWindow->initialize(testTraceInfo.testName, testTraceInfo.replayDrawSurfaceWidth, - testTraceInfo.replayDrawSurfaceHeight)) + if (!mOSWindow->initialize(traceInfo.name, traceInfo.drawSurfaceWidth, + traceInfo.drawSurfaceHeight)) { return false; } @@ -62,8 +59,8 @@ class CaptureReplayTests mOSWindow->disableErrorMessageDialog(); mOSWindow->setVisible(true); - if (mEGLWindow && !mEGLWindow->isContextVersion(testTraceInfo.replayContextMajorVersion, - testTraceInfo.replayContextMinorVersion)) + if (mEGLWindow && !mEGLWindow->isContextVersion(traceInfo.contextClientMajorVersion, + traceInfo.contextClientMinorVersion)) { EGLWindow::Delete(&mEGLWindow); mEGLWindow = nullptr; @@ -71,25 +68,25 @@ class CaptureReplayTests if (!mEGLWindow) { - mEGLWindow = EGLWindow::New(testTraceInfo.replayContextMajorVersion, - testTraceInfo.replayContextMinorVersion); + mEGLWindow = EGLWindow::New(traceInfo.contextClientMajorVersion, + traceInfo.contextClientMinorVersion); } ConfigParameters configParams; - configParams.redBits = testTraceInfo.defaultFramebufferRedBits; - configParams.greenBits = testTraceInfo.defaultFramebufferGreenBits; - configParams.blueBits = testTraceInfo.defaultFramebufferBlueBits; - configParams.alphaBits = testTraceInfo.defaultFramebufferAlphaBits; - configParams.depthBits = testTraceInfo.defaultFramebufferDepthBits; - configParams.stencilBits = testTraceInfo.defaultFramebufferStencilBits; - - configParams.clientArraysEnabled = testTraceInfo.areClientArraysEnabled; - configParams.bindGeneratesResource = testTraceInfo.bindGeneratesResources; - configParams.webGLCompatibility = testTraceInfo.webGLCompatibility; - configParams.robustResourceInit = testTraceInfo.robustResourceInit; - - mPlatformParams.renderer = testTraceInfo.replayPlatformType; - mPlatformParams.deviceType = testTraceInfo.replayDeviceType; + configParams.redBits = traceInfo.configRedBits; + configParams.greenBits = traceInfo.configGreenBits; + configParams.blueBits = traceInfo.configBlueBits; + configParams.alphaBits = traceInfo.configAlphaBits; + configParams.depthBits = traceInfo.configDepthBits; + configParams.stencilBits = traceInfo.configStencilBits; + + configParams.clientArraysEnabled = traceInfo.areClientArraysEnabled; + configParams.bindGeneratesResource = traceInfo.isBindGeneratesResourcesEnabled; + configParams.webGLCompatibility = traceInfo.isWebGLCompatibilityEnabled; + configParams.robustResourceInit = traceInfo.isRobustResourceInitEnabled; + + mPlatformParams.renderer = traceInfo.displayPlatformType; + mPlatformParams.deviceType = traceInfo.displayDeviceType; mPlatformParams.forceInitShaderVariables = EGL_TRUE; if (!mEGLWindow->initializeGL(mOSWindow, mEntryPointsLib.get(), @@ -106,19 +103,15 @@ class CaptureReplayTests return false; } - mStartingDirectory = angle::GetCWD().value(); - // Load trace - mTraceLibrary.reset(new angle::TraceLibrary(testTraceInfo.testName.c_str())); - - // Set CWD to executable directory. - std::string exeDir = angle::GetExecutableDirectory(); - if (!angle::SetCWD(exeDir.c_str())) + mTraceLibrary.reset(new angle::TraceLibrary(traceInfo.name)); + if (!mTraceLibrary->valid()) { - cleanupTest(); + std::cout << "Failed to load trace library: " << traceInfo.name << "\n"; return false; } - if (testTraceInfo.isBinaryDataCompressed) + + if (traceInfo.isBinaryDataCompressed) { mTraceLibrary->setBinaryDataDecompressCallback(angle::DecompressBinaryData); } @@ -130,7 +123,6 @@ class CaptureReplayTests void cleanupTest() { - angle::SetCWD(mStartingDirectory.c_str()); mTraceLibrary.reset(nullptr); mEGLWindow->destroyGL(); mOSWindow->destroy(); @@ -138,15 +130,14 @@ class CaptureReplayTests void swap() { mEGLWindow->swap(); } - int runTest(uint32_t testIndex, const TestTraceInfo &testTraceInfo) + int runTest(const angle::TraceInfo &traceInfo) { - if (!initializeTest(testIndex, testTraceInfo)) + if (!initializeTest(traceInfo)) { return -1; } - for (uint32_t frame = testTraceInfo.replayFrameStart; frame <= testTraceInfo.replayFrameEnd; - frame++) + for (uint32_t frame = traceInfo.frameStart; frame <= traceInfo.frameEnd; frame++) { mTraceLibrary->replayFrame(frame); @@ -164,12 +155,12 @@ class CaptureReplayTests if (!isEqual) { std::ostringstream replayName; - replayName << testTraceInfo.testName << "_ContextReplayed" << frame << ".json"; + replayName << traceInfo.name << "_ContextReplayed" << frame << ".json"; std::ofstream debugReplay(replayName.str()); debugReplay << (replayedSerializedState ? replayedSerializedState : "") << "\n"; std::ostringstream captureName; - captureName << testTraceInfo.testName << "_ContextCaptured" << frame << ".json"; + captureName << traceInfo.name << "_ContextCaptured" << frame << ".json"; std::ofstream debugCapture(captureName.str()); debugCapture << (capturedSerializedState ? capturedSerializedState : "") << "\n"; @@ -184,11 +175,44 @@ class CaptureReplayTests int run() { - for (size_t i = 0; i < testTraceInfos.size(); i++) + std::string startingDirectory = angle::GetCWD().value(); + + // Set CWD to executable directory. + std::string exeDir = angle::GetExecutableDirectory(); + if (!angle::SetCWD(exeDir.c_str())) { - int result = runTest(static_cast<uint32_t>(i), testTraceInfos[i]); - std::cout << kResultTag << " " << testTraceInfos[i].testName << " " << result << "\n"; + std::cout << "Unable to SetCWD to trace directory: " << exeDir << "\n"; + return 1; } + + std::vector<std::string> traces; + if (!angle::LoadTraceNamesFromJSON(kTracePath, &traces)) + { + std::cout << "Unable to load trace names from " << kTracePath << "\n"; + return 1; + } + + for (const std::string &trace : traces) + { + std::stringstream traceJsonPathStream; + traceJsonPathStream << ANGLE_CAPTURE_REPLAY_TEST_DATA_DIR << angle::GetPathSeparator() + << trace << ".json"; + std::string traceJsonPath = traceJsonPathStream.str(); + + int result = -1; + angle::TraceInfo traceInfo = {}; + if (!angle::LoadTraceInfoFromJSON(trace, traceJsonPath, &traceInfo)) + { + std::cout << "Unable to load trace data: " << traceJsonPath << "\n"; + } + else + { + result = runTest(traceInfo); + } + std::cout << kResultTag << " " << trace << " " << result << "\n"; + } + + angle::SetCWD(startingDirectory.c_str()); return 0; } @@ -200,7 +224,6 @@ class CaptureReplayTests return !strcmp(replaySerializedContextState, capturedSerializedContextState); } - std::string mStartingDirectory; OSWindow *mOSWindow = nullptr; EGLWindow *mEGLWindow = nullptr; EGLPlatformParameters mPlatformParams; diff --git a/src/tests/perf_tests/TracePerfTest.cpp b/src/tests/perf_tests/TracePerfTest.cpp index 734bbccae..0ef7ab76e 100644 --- a/src/tests/perf_tests/TracePerfTest.cpp +++ b/src/tests/perf_tests/TracePerfTest.cpp @@ -14,8 +14,8 @@ #include "tests/perf_tests/ANGLEPerfTest.h" #include "tests/perf_tests/ANGLEPerfTestArgs.h" #include "tests/perf_tests/DrawCallPerfParams.h" +#include "util/capture/frame_capture_test_utils.h" #include "util/egl_loader_autogen.h" -#include "util/frame_capture_test_utils.h" #include "util/png_utils.h" #include "util/test_utils.h" @@ -65,7 +65,7 @@ struct TracePerfParams final : public RenderTestParams return strstr.str(); } - TraceInfo traceInfo; + TraceInfo traceInfo = {}; }; std::ostream &operator<<(std::ostream &os, const TracePerfParams ¶ms) @@ -118,7 +118,7 @@ class TracePerfTest : public ANGLERenderTest uint32_t frameCount() const { const TraceInfo &traceInfo = mParams.traceInfo; - return traceInfo.endFrame - traceInfo.startFrame + 1; + return traceInfo.frameEnd - traceInfo.frameStart + 1; } int getStepAlignment() const override @@ -1115,8 +1115,8 @@ void TracePerfTest::initializeBenchmark() return; } - mStartFrame = traceInfo.startFrame; - mEndFrame = traceInfo.endFrame; + mStartFrame = traceInfo.frameStart; + mEndFrame = traceInfo.frameEnd; mTraceLibrary->setBinaryDataDecompressCallback(DecompressBinaryData); mTraceLibrary->setValidateSerializedStateCallback(ValidateSerializedState); @@ -1805,10 +1805,8 @@ void TracePerfTest::saveScreenshot(const std::string &screenshotName) } } -TracePerfParams CombineTestID(const TracePerfParams &in, const std::string &traceName) +TracePerfParams CombineWithTraceInfo(const TracePerfParams &in, const TraceInfo &traceInfo) { - const TraceInfo &traceInfo = GetTraceInfo(traceName.c_str()); - TracePerfParams out = in; out.traceInfo = traceInfo; out.majorVersion = traceInfo.contextClientMajorVersion; @@ -1848,9 +1846,9 @@ void RegisterTraceTests() std::string previousCWD; if (!IsAndroid()) { - previousCWD = angle::GetCWD().value(); - std::string exeDir = angle::GetExecutableDirectory(); - angle::SetCWD(exeDir.c_str()); + previousCWD = GetCWD().value(); + std::string exeDir = GetExecutableDirectory(); + SetCWD(exeDir.c_str()); } char rootTracePath[kMaxPath] = {}; @@ -1860,54 +1858,35 @@ void RegisterTraceTests() return; } - // Open JSON file. - rapidjson::Document doc; - { - std::stringstream traceJsonStream; - traceJsonStream << rootTracePath << angle::GetPathSeparator() << "restricted_traces.json"; - std::string traceJsonPath = traceJsonStream.str(); - - std::ifstream ifs(traceJsonPath); - if (!ifs.is_open()) - { - ERR() << "Unable to open trace JSON file: " << traceJsonPath; - return; - } - - rapidjson::IStreamWrapper inWrapper(ifs); - - doc.ParseStream(inWrapper); - - if (doc.HasParseError()) - { - ERR() << "Parse error reading JSON stream from " << traceJsonPath; - return; - } - } + // Load JSON data. + std::stringstream tracesJsonStream; + tracesJsonStream << rootTracePath << GetPathSeparator() << "restricted_traces.json"; + std::string tracesJsonPath = tracesJsonStream.str(); - if (!doc.IsObject() || !doc.HasMember("traces") || !doc["traces"].IsArray()) + std::vector<std::string> traces; + if (!LoadTraceNamesFromJSON(tracesJsonPath, &traces)) { - ERR() << "Trace JSON document not formed properly."; + ERR() << "Unable to load traces from JSON file: " << tracesJsonPath; return; } - // Read trace json into a list of trace names. - std::vector<std::string> traces; - - rapidjson::Document::Array traceArray = doc["traces"].GetArray(); - for (rapidjson::SizeType arrayIndex = 0; arrayIndex < traceArray.Size(); ++arrayIndex) + std::vector<TraceInfo> traceInfos; + for (const std::string &trace : traces) { - const rapidjson::Document::ValueType &arrayElement = traceArray[arrayIndex]; + std::stringstream traceJsonStream; + traceJsonStream << rootTracePath << GetPathSeparator() << trace << GetPathSeparator() + << trace << ".json"; + std::string traceJsonPath = traceJsonStream.str(); - if (!arrayElement.IsString()) + TraceInfo traceInfo = {}; + if (!LoadTraceInfoFromJSON(trace, traceJsonPath, &traceInfo)) { - ERR() << "Trace JSON document not formed properly."; - return; + static_assert(sizeof(TraceInfo) == sizeof(trace_angle::TraceInfo), "Size mismatch"); + trace_angle::TraceInfo autogenFormatInfo = trace_angle::GetTraceInfo(trace.c_str()); + memcpy(&traceInfo, &autogenFormatInfo, sizeof(TraceInfo)); } - std::vector<std::string> traceAndVersion; - angle::SplitStringAlongWhitespace(arrayElement.GetString(), &traceAndVersion); - traces.push_back(traceAndVersion[0]); + traceInfos.push_back(traceInfo); } std::vector<SurfaceType> surfaceTypes = {SurfaceType::Window}; @@ -1927,13 +1906,17 @@ void RegisterTraceTests() renderers.push_back(VulkanSwiftShader<P>); } - PV testsWithID = CombineWithValues({P()}, traces, CombineTestID); - PV testsWithSurfaceType = CombineWithValues(testsWithID, surfaceTypes, CombineWithSurfaceType); - PV testsWithRenderer = CombineWithFuncs(testsWithSurfaceType, renderers); - PV filteredTests = FilterTestParams(testsWithRenderer); + PV withTraceInfo = CombineWithValues({P()}, traceInfos, CombineWithTraceInfo); + PV withSurfaceType = CombineWithValues(withTraceInfo, surfaceTypes, CombineWithSurfaceType); + PV withRenderer = CombineWithFuncs(withSurfaceType, renderers); - for (const TracePerfParams ¶ms : filteredTests) + for (const TracePerfParams ¶ms : withRenderer) { + if (!IsPlatformAvailable(params)) + { + continue; + } + // Force on features if we're validating serialization. TracePerfParams overrideParams = params; if (gTraceTestValidation) @@ -1956,6 +1939,6 @@ void RegisterTraceTests() if (!previousCWD.empty()) { - angle::SetCWD(previousCWD.c_str()); + SetCWD(previousCWD.c_str()); } } diff --git a/src/tests/restricted_traces/BUILD.gn b/src/tests/restricted_traces/BUILD.gn index 26f86a209..274aa1ce7 100644 --- a/src/tests/restricted_traces/BUILD.gn +++ b/src/tests/restricted_traces/BUILD.gn @@ -42,7 +42,7 @@ foreach(_trace_data, angle_restricted_traces) { trace_dir = _trace trace_ctx = _trace_data[1] sources = _trace_data[2] - angledata = _trace_data[3] + data = _trace_data[3] fixture = ":angle_restricted_trace_fixture" } diff --git a/src/tests/restricted_traces/gen_restricted_traces.py b/src/tests/restricted_traces/gen_restricted_traces.py index a4296b539..3750b184c 100755 --- a/src/tests/restricted_traces/gen_restricted_traces.py +++ b/src/tests/restricted_traces/gen_restricted_traces.py @@ -56,11 +56,8 @@ using GenericProc = void (*)(); using LoadProc = GenericProc(KHRONOS_APIENTRY *)(const char *); ANGLE_TRACE_LOADER_EXPORT void LoadEGL(LoadProc loadProc); ANGLE_TRACE_LOADER_EXPORT void LoadGLES(LoadProc loadProc); -}} // namespace trace_angle -namespace angle -{{ -static constexpr size_t kTraceInfoMaxNameLen = 32; +static constexpr size_t kTraceInfoMaxNameLen = 128; static constexpr uint32_t kDefaultReplayContextClientMajorVersion = 3; static constexpr uint32_t kDefaultReplayContextClientMinorVersion = 1; @@ -68,18 +65,31 @@ static constexpr uint32_t kDefaultReplayDrawSurfaceColorSpace = EGL_COLORSPACE_L struct TraceInfo {{ + char name[kTraceInfoMaxNameLen]; uint32_t contextClientMajorVersion; uint32_t contextClientMinorVersion; - uint32_t startFrame; - uint32_t endFrame; + uint32_t frameEnd; + uint32_t frameStart; uint32_t drawSurfaceWidth; uint32_t drawSurfaceHeight; uint32_t drawSurfaceColorSpace; - char name[kTraceInfoMaxNameLen]; + uint32_t displayPlatformType; + uint32_t displayDeviceType; + int configRedBits; + int configBlueBits; + int configGreenBits; + int configAlphaBits; + int configDepthBits; + int configStencilBits; + bool isBinaryDataCompressed; + bool areClientArraysEnabled; + bool isBindGeneratesResourcesEnabled; + bool isWebGLCompatibilityEnabled; + bool isRobustResourceInitEnabled; }}; ANGLE_TRACE_EXPORT const TraceInfo &GetTraceInfo(const char *traceName); -}} // namespace angle +}} // namespace trace_angle #endif // ANGLE_RESTRICTED_TRACES_AUTOGEN_H_ """ @@ -101,7 +111,7 @@ SOURCE_TEMPLATE = """\ {trace_includes} -namespace angle +namespace trace_angle {{ namespace {{ @@ -129,7 +139,7 @@ const TraceInfo &GetTraceInfo(const char *traceName) UNREACHABLE(); return kTraceInfos[0].info; }} -}} // namespace angle +}} // namespace trace_angle """ CIPD_TRACE_PREFIX = 'angle/traces' @@ -177,8 +187,15 @@ def gen_gni(traces, gni_file, format_args): with open('%s/%s_capture_context%s_files.txt' % (trace, trace, context)) as f: files = f.readlines() f.close() - files = ['"%s/%s"' % (trace, file.strip()) for file in files] - test_list += ['["%s", %s, [%s], "%s"]' % (trace, context, ','.join(files), angledata_file)] + source_files = ['"%s/%s"' % (trace, file.strip()) for file in files] + data_files = ['"%s"' % angledata_file] + json_file_name = '%s/%s.json' % (trace, trace) + if os.path.exists(json_file_name): + data_files.append('"%s"' % json_file_name) + test_list += [ + '["%s", %s, [%s], [%s]]' % + (trace, context, ','.join(source_files), ','.join(data_files)) + ] format_args['test_list'] = ',\n'.join(test_list) gni_data = GNI_TEMPLATE.format(**format_args) @@ -207,9 +224,18 @@ def contains_colorspace(trace): return contains_string(trace, 'kReplayDrawSurfaceColorSpace') +def json_metadata_exists(trace): + return os.path.isfile('%s/%s.json' % (trace, trace)) + + def get_trace_info(trace): + # Skip getting trace info if we're using JSON metadata. + # TODO: Remove generated code. http://anglebug.com/5133 + if json_metadata_exists(trace): + return '' + # Some traces don't contain major/minor version, so use defaults - info = [] + info = [f'"{trace}"'] if contains_context_version(trace): info += [ f'{trace}::kReplayContextClientMajorVersion', @@ -230,7 +256,9 @@ def get_trace_info(trace): else: info += ['kDefaultReplayDrawSurfaceColorSpace'] - info += [f'"{trace}"'] + # Add placeholder fields to fix an MSVC warning. + info += ['0'] * 8 + info += ['false'] * 5 return ", ".join(info) diff --git a/src/tests/restricted_traces/restricted_traces_autogen.cpp b/src/tests/restricted_traces/restricted_traces_autogen.cpp index 8ffaf3ce0..cd4f439bb 100644 --- a/src/tests/restricted_traces/restricted_traces_autogen.cpp +++ b/src/tests/restricted_traces/restricted_traces_autogen.cpp @@ -115,7 +115,7 @@ #include "world_war_doh/world_war_doh_capture_context1.h" #include "worms_zone_io/worms_zone_io_capture_context1.h" -namespace angle +namespace trace_angle { namespace { @@ -127,589 +127,2249 @@ struct TracePair }; constexpr TracePair kTraceInfos[kNumTraces] = { {"aliexpress", - {aliexpress::kReplayContextClientMajorVersion, aliexpress::kReplayContextClientMinorVersion, - aliexpress::kReplayFrameStart, aliexpress::kReplayFrameEnd, - aliexpress::kReplayDrawSurfaceWidth, aliexpress::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "aliexpress"}}, + {"aliexpress", + aliexpress::kReplayContextClientMajorVersion, + aliexpress::kReplayContextClientMinorVersion, + aliexpress::kReplayFrameStart, + aliexpress::kReplayFrameEnd, + aliexpress::kReplayDrawSurfaceWidth, + aliexpress::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"among_us", - {among_us::kReplayContextClientMajorVersion, among_us::kReplayContextClientMinorVersion, - among_us::kReplayFrameStart, among_us::kReplayFrameEnd, among_us::kReplayDrawSurfaceWidth, - among_us::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "among_us"}}, + {"among_us", + among_us::kReplayContextClientMajorVersion, + among_us::kReplayContextClientMinorVersion, + among_us::kReplayFrameStart, + among_us::kReplayFrameEnd, + among_us::kReplayDrawSurfaceWidth, + among_us::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"angry_birds_2_1500", - {angry_birds_2_1500::kReplayContextClientMajorVersion, - angry_birds_2_1500::kReplayContextClientMinorVersion, angry_birds_2_1500::kReplayFrameStart, - angry_birds_2_1500::kReplayFrameEnd, angry_birds_2_1500::kReplayDrawSurfaceWidth, - angry_birds_2_1500::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "angry_birds_2_1500"}}, + {"angry_birds_2_1500", + angry_birds_2_1500::kReplayContextClientMajorVersion, + angry_birds_2_1500::kReplayContextClientMinorVersion, + angry_birds_2_1500::kReplayFrameStart, + angry_birds_2_1500::kReplayFrameEnd, + angry_birds_2_1500::kReplayDrawSurfaceWidth, + angry_birds_2_1500::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"arena_of_valor", - {arena_of_valor::kReplayContextClientMajorVersion, - arena_of_valor::kReplayContextClientMinorVersion, arena_of_valor::kReplayFrameStart, - arena_of_valor::kReplayFrameEnd, arena_of_valor::kReplayDrawSurfaceWidth, - arena_of_valor::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "arena_of_valor"}}, + {"arena_of_valor", + arena_of_valor::kReplayContextClientMajorVersion, + arena_of_valor::kReplayContextClientMinorVersion, + arena_of_valor::kReplayFrameStart, + arena_of_valor::kReplayFrameEnd, + arena_of_valor::kReplayDrawSurfaceWidth, + arena_of_valor::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"asphalt_8", - {asphalt_8::kReplayContextClientMajorVersion, asphalt_8::kReplayContextClientMinorVersion, - asphalt_8::kReplayFrameStart, asphalt_8::kReplayFrameEnd, asphalt_8::kReplayDrawSurfaceWidth, - asphalt_8::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "asphalt_8"}}, + {"asphalt_8", + asphalt_8::kReplayContextClientMajorVersion, + asphalt_8::kReplayContextClientMinorVersion, + asphalt_8::kReplayFrameStart, + asphalt_8::kReplayFrameEnd, + asphalt_8::kReplayDrawSurfaceWidth, + asphalt_8::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"avakin_life", - {avakin_life::kReplayContextClientMajorVersion, avakin_life::kReplayContextClientMinorVersion, - avakin_life::kReplayFrameStart, avakin_life::kReplayFrameEnd, - avakin_life::kReplayDrawSurfaceWidth, avakin_life::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "avakin_life"}}, + {"avakin_life", + avakin_life::kReplayContextClientMajorVersion, + avakin_life::kReplayContextClientMinorVersion, + avakin_life::kReplayFrameStart, + avakin_life::kReplayFrameEnd, + avakin_life::kReplayDrawSurfaceWidth, + avakin_life::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"aztec_ruins", - {aztec_ruins::kReplayContextClientMajorVersion, aztec_ruins::kReplayContextClientMinorVersion, - aztec_ruins::kReplayFrameStart, aztec_ruins::kReplayFrameEnd, - aztec_ruins::kReplayDrawSurfaceWidth, aztec_ruins::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "aztec_ruins"}}, + {"aztec_ruins", + aztec_ruins::kReplayContextClientMajorVersion, + aztec_ruins::kReplayContextClientMinorVersion, + aztec_ruins::kReplayFrameStart, + aztec_ruins::kReplayFrameEnd, + aztec_ruins::kReplayDrawSurfaceWidth, + aztec_ruins::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"beach_buggy_racing", - {beach_buggy_racing::kReplayContextClientMajorVersion, - beach_buggy_racing::kReplayContextClientMinorVersion, beach_buggy_racing::kReplayFrameStart, - beach_buggy_racing::kReplayFrameEnd, beach_buggy_racing::kReplayDrawSurfaceWidth, - beach_buggy_racing::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "beach_buggy_racing"}}, + {"beach_buggy_racing", + beach_buggy_racing::kReplayContextClientMajorVersion, + beach_buggy_racing::kReplayContextClientMinorVersion, + beach_buggy_racing::kReplayFrameStart, + beach_buggy_racing::kReplayFrameEnd, + beach_buggy_racing::kReplayDrawSurfaceWidth, + beach_buggy_racing::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"brawl_stars", - {brawl_stars::kReplayContextClientMajorVersion, brawl_stars::kReplayContextClientMinorVersion, - brawl_stars::kReplayFrameStart, brawl_stars::kReplayFrameEnd, - brawl_stars::kReplayDrawSurfaceWidth, brawl_stars::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "brawl_stars"}}, + {"brawl_stars", + brawl_stars::kReplayContextClientMajorVersion, + brawl_stars::kReplayContextClientMinorVersion, + brawl_stars::kReplayFrameStart, + brawl_stars::kReplayFrameEnd, + brawl_stars::kReplayDrawSurfaceWidth, + brawl_stars::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"bricks_breaker_quest", - {bricks_breaker_quest::kReplayContextClientMajorVersion, + {"bricks_breaker_quest", + bricks_breaker_quest::kReplayContextClientMajorVersion, bricks_breaker_quest::kReplayContextClientMinorVersion, - bricks_breaker_quest::kReplayFrameStart, bricks_breaker_quest::kReplayFrameEnd, - bricks_breaker_quest::kReplayDrawSurfaceWidth, bricks_breaker_quest::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "bricks_breaker_quest"}}, + bricks_breaker_quest::kReplayFrameStart, + bricks_breaker_quest::kReplayFrameEnd, + bricks_breaker_quest::kReplayDrawSurfaceWidth, + bricks_breaker_quest::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"bubble_shooter", - {bubble_shooter::kReplayContextClientMajorVersion, - bubble_shooter::kReplayContextClientMinorVersion, bubble_shooter::kReplayFrameStart, - bubble_shooter::kReplayFrameEnd, bubble_shooter::kReplayDrawSurfaceWidth, - bubble_shooter::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "bubble_shooter"}}, + {"bubble_shooter", + bubble_shooter::kReplayContextClientMajorVersion, + bubble_shooter::kReplayContextClientMinorVersion, + bubble_shooter::kReplayFrameStart, + bubble_shooter::kReplayFrameEnd, + bubble_shooter::kReplayDrawSurfaceWidth, + bubble_shooter::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"bus_simulator_indonesia", - {bus_simulator_indonesia::kReplayContextClientMajorVersion, + {"bus_simulator_indonesia", + bus_simulator_indonesia::kReplayContextClientMajorVersion, bus_simulator_indonesia::kReplayContextClientMinorVersion, - bus_simulator_indonesia::kReplayFrameStart, bus_simulator_indonesia::kReplayFrameEnd, + bus_simulator_indonesia::kReplayFrameStart, + bus_simulator_indonesia::kReplayFrameEnd, bus_simulator_indonesia::kReplayDrawSurfaceWidth, - bus_simulator_indonesia::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "bus_simulator_indonesia"}}, + bus_simulator_indonesia::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"call_break_offline_card_game", - {call_break_offline_card_game::kReplayContextClientMajorVersion, + {"call_break_offline_card_game", + call_break_offline_card_game::kReplayContextClientMajorVersion, call_break_offline_card_game::kReplayContextClientMinorVersion, call_break_offline_card_game::kReplayFrameStart, call_break_offline_card_game::kReplayFrameEnd, call_break_offline_card_game::kReplayDrawSurfaceWidth, - call_break_offline_card_game::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "call_break_offline_card_game"}}, + call_break_offline_card_game::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"candy_crush_500", - {candy_crush_500::kReplayContextClientMajorVersion, - candy_crush_500::kReplayContextClientMinorVersion, candy_crush_500::kReplayFrameStart, - candy_crush_500::kReplayFrameEnd, candy_crush_500::kReplayDrawSurfaceWidth, - candy_crush_500::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "candy_crush_500"}}, + {"candy_crush_500", + candy_crush_500::kReplayContextClientMajorVersion, + candy_crush_500::kReplayContextClientMinorVersion, + candy_crush_500::kReplayFrameStart, + candy_crush_500::kReplayFrameEnd, + candy_crush_500::kReplayDrawSurfaceWidth, + candy_crush_500::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"candy_crush_soda_saga", - {candy_crush_soda_saga::kReplayContextClientMajorVersion, + {"candy_crush_soda_saga", + candy_crush_soda_saga::kReplayContextClientMajorVersion, candy_crush_soda_saga::kReplayContextClientMinorVersion, - candy_crush_soda_saga::kReplayFrameStart, candy_crush_soda_saga::kReplayFrameEnd, + candy_crush_soda_saga::kReplayFrameStart, + candy_crush_soda_saga::kReplayFrameEnd, candy_crush_soda_saga::kReplayDrawSurfaceWidth, - candy_crush_soda_saga::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "candy_crush_soda_saga"}}, + candy_crush_soda_saga::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"car_parking_multiplayer", - {car_parking_multiplayer::kReplayContextClientMajorVersion, + {"car_parking_multiplayer", + car_parking_multiplayer::kReplayContextClientMajorVersion, car_parking_multiplayer::kReplayContextClientMinorVersion, - car_parking_multiplayer::kReplayFrameStart, car_parking_multiplayer::kReplayFrameEnd, + car_parking_multiplayer::kReplayFrameStart, + car_parking_multiplayer::kReplayFrameEnd, car_parking_multiplayer::kReplayDrawSurfaceWidth, - car_parking_multiplayer::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "car_parking_multiplayer"}}, + car_parking_multiplayer::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"clash_of_clans", - {clash_of_clans::kReplayContextClientMajorVersion, - clash_of_clans::kReplayContextClientMinorVersion, clash_of_clans::kReplayFrameStart, - clash_of_clans::kReplayFrameEnd, clash_of_clans::kReplayDrawSurfaceWidth, - clash_of_clans::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "clash_of_clans"}}, + {"clash_of_clans", + clash_of_clans::kReplayContextClientMajorVersion, + clash_of_clans::kReplayContextClientMinorVersion, + clash_of_clans::kReplayFrameStart, + clash_of_clans::kReplayFrameEnd, + clash_of_clans::kReplayDrawSurfaceWidth, + clash_of_clans::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"clash_royale", - {clash_royale::kReplayContextClientMajorVersion, - clash_royale::kReplayContextClientMinorVersion, clash_royale::kReplayFrameStart, - clash_royale::kReplayFrameEnd, clash_royale::kReplayDrawSurfaceWidth, - clash_royale::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "clash_royale"}}, + {"clash_royale", + clash_royale::kReplayContextClientMajorVersion, + clash_royale::kReplayContextClientMinorVersion, + clash_royale::kReplayFrameStart, + clash_royale::kReplayFrameEnd, + clash_royale::kReplayDrawSurfaceWidth, + clash_royale::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"cod_mobile", - {cod_mobile::kReplayContextClientMajorVersion, cod_mobile::kReplayContextClientMinorVersion, - cod_mobile::kReplayFrameStart, cod_mobile::kReplayFrameEnd, - cod_mobile::kReplayDrawSurfaceWidth, cod_mobile::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "cod_mobile"}}, + {"cod_mobile", + cod_mobile::kReplayContextClientMajorVersion, + cod_mobile::kReplayContextClientMinorVersion, + cod_mobile::kReplayFrameStart, + cod_mobile::kReplayFrameEnd, + cod_mobile::kReplayDrawSurfaceWidth, + cod_mobile::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"coin_master", - {coin_master::kReplayContextClientMajorVersion, coin_master::kReplayContextClientMinorVersion, - coin_master::kReplayFrameStart, coin_master::kReplayFrameEnd, - coin_master::kReplayDrawSurfaceWidth, coin_master::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "coin_master"}}, + {"coin_master", + coin_master::kReplayContextClientMajorVersion, + coin_master::kReplayContextClientMinorVersion, + coin_master::kReplayFrameStart, + coin_master::kReplayFrameEnd, + coin_master::kReplayDrawSurfaceWidth, + coin_master::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"command_and_conquer_rivals", - {command_and_conquer_rivals::kReplayContextClientMajorVersion, + {"command_and_conquer_rivals", + command_and_conquer_rivals::kReplayContextClientMajorVersion, command_and_conquer_rivals::kReplayContextClientMinorVersion, - command_and_conquer_rivals::kReplayFrameStart, command_and_conquer_rivals::kReplayFrameEnd, + command_and_conquer_rivals::kReplayFrameStart, + command_and_conquer_rivals::kReplayFrameEnd, command_and_conquer_rivals::kReplayDrawSurfaceWidth, - command_and_conquer_rivals::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "command_and_conquer_rivals"}}, + command_and_conquer_rivals::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"cookie_run_kingdom", - {cookie_run_kingdom::kReplayContextClientMajorVersion, - cookie_run_kingdom::kReplayContextClientMinorVersion, cookie_run_kingdom::kReplayFrameStart, - cookie_run_kingdom::kReplayFrameEnd, cookie_run_kingdom::kReplayDrawSurfaceWidth, - cookie_run_kingdom::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "cookie_run_kingdom"}}, + {"cookie_run_kingdom", + cookie_run_kingdom::kReplayContextClientMajorVersion, + cookie_run_kingdom::kReplayContextClientMinorVersion, + cookie_run_kingdom::kReplayFrameStart, + cookie_run_kingdom::kReplayFrameEnd, + cookie_run_kingdom::kReplayDrawSurfaceWidth, + cookie_run_kingdom::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"disney_tsum_tsum", - {disney_tsum_tsum::kReplayContextClientMajorVersion, - disney_tsum_tsum::kReplayContextClientMinorVersion, disney_tsum_tsum::kReplayFrameStart, - disney_tsum_tsum::kReplayFrameEnd, disney_tsum_tsum::kReplayDrawSurfaceWidth, - disney_tsum_tsum::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "disney_tsum_tsum"}}, + {"disney_tsum_tsum", + disney_tsum_tsum::kReplayContextClientMajorVersion, + disney_tsum_tsum::kReplayContextClientMinorVersion, + disney_tsum_tsum::kReplayFrameStart, + disney_tsum_tsum::kReplayFrameEnd, + disney_tsum_tsum::kReplayDrawSurfaceWidth, + disney_tsum_tsum::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"dr_driving", - {dr_driving::kReplayContextClientMajorVersion, dr_driving::kReplayContextClientMinorVersion, - dr_driving::kReplayFrameStart, dr_driving::kReplayFrameEnd, - dr_driving::kReplayDrawSurfaceWidth, dr_driving::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "dr_driving"}}, + {"dr_driving", + dr_driving::kReplayContextClientMajorVersion, + dr_driving::kReplayContextClientMinorVersion, + dr_driving::kReplayFrameStart, + dr_driving::kReplayFrameEnd, + dr_driving::kReplayDrawSurfaceWidth, + dr_driving::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"dragon_ball_legends", - {dragon_ball_legends::kReplayContextClientMajorVersion, - dragon_ball_legends::kReplayContextClientMinorVersion, dragon_ball_legends::kReplayFrameStart, - dragon_ball_legends::kReplayFrameEnd, dragon_ball_legends::kReplayDrawSurfaceWidth, - dragon_ball_legends::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "dragon_ball_legends"}}, + {"dragon_ball_legends", + dragon_ball_legends::kReplayContextClientMajorVersion, + dragon_ball_legends::kReplayContextClientMinorVersion, + dragon_ball_legends::kReplayFrameStart, + dragon_ball_legends::kReplayFrameEnd, + dragon_ball_legends::kReplayDrawSurfaceWidth, + dragon_ball_legends::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"dragon_raja", - {dragon_raja::kReplayContextClientMajorVersion, dragon_raja::kReplayContextClientMinorVersion, - dragon_raja::kReplayFrameStart, dragon_raja::kReplayFrameEnd, - dragon_raja::kReplayDrawSurfaceWidth, dragon_raja::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "dragon_raja"}}, + {"dragon_raja", + dragon_raja::kReplayContextClientMajorVersion, + dragon_raja::kReplayContextClientMinorVersion, + dragon_raja::kReplayFrameStart, + dragon_raja::kReplayFrameEnd, + dragon_raja::kReplayDrawSurfaceWidth, + dragon_raja::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"efootball_pes_2021", - {efootball_pes_2021::kReplayContextClientMajorVersion, - efootball_pes_2021::kReplayContextClientMinorVersion, efootball_pes_2021::kReplayFrameStart, - efootball_pes_2021::kReplayFrameEnd, efootball_pes_2021::kReplayDrawSurfaceWidth, - efootball_pes_2021::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "efootball_pes_2021"}}, + {"efootball_pes_2021", + efootball_pes_2021::kReplayContextClientMajorVersion, + efootball_pes_2021::kReplayContextClientMinorVersion, + efootball_pes_2021::kReplayFrameStart, + efootball_pes_2021::kReplayFrameEnd, + efootball_pes_2021::kReplayDrawSurfaceWidth, + efootball_pes_2021::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"egypt_1500", - {egypt_1500::kReplayContextClientMajorVersion, egypt_1500::kReplayContextClientMinorVersion, - egypt_1500::kReplayFrameStart, egypt_1500::kReplayFrameEnd, - egypt_1500::kReplayDrawSurfaceWidth, egypt_1500::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "egypt_1500"}}, + {"egypt_1500", + egypt_1500::kReplayContextClientMajorVersion, + egypt_1500::kReplayContextClientMinorVersion, + egypt_1500::kReplayFrameStart, + egypt_1500::kReplayFrameEnd, + egypt_1500::kReplayDrawSurfaceWidth, + egypt_1500::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"eight_ball_pool", - {eight_ball_pool::kReplayContextClientMajorVersion, - eight_ball_pool::kReplayContextClientMinorVersion, eight_ball_pool::kReplayFrameStart, - eight_ball_pool::kReplayFrameEnd, eight_ball_pool::kReplayDrawSurfaceWidth, - eight_ball_pool::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "eight_ball_pool"}}, + {"eight_ball_pool", + eight_ball_pool::kReplayContextClientMajorVersion, + eight_ball_pool::kReplayContextClientMinorVersion, + eight_ball_pool::kReplayFrameStart, + eight_ball_pool::kReplayFrameEnd, + eight_ball_pool::kReplayDrawSurfaceWidth, + eight_ball_pool::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"extreme_car_driving_simulator", - {extreme_car_driving_simulator::kReplayContextClientMajorVersion, + {"extreme_car_driving_simulator", + extreme_car_driving_simulator::kReplayContextClientMajorVersion, extreme_car_driving_simulator::kReplayContextClientMinorVersion, extreme_car_driving_simulator::kReplayFrameStart, extreme_car_driving_simulator::kReplayFrameEnd, extreme_car_driving_simulator::kReplayDrawSurfaceWidth, - extreme_car_driving_simulator::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "extreme_car_driving_simulator"}}, + extreme_car_driving_simulator::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"fallout_shelter_online", - {fallout_shelter_online::kReplayContextClientMajorVersion, + {"fallout_shelter_online", + fallout_shelter_online::kReplayContextClientMajorVersion, fallout_shelter_online::kReplayContextClientMinorVersion, - fallout_shelter_online::kReplayFrameStart, fallout_shelter_online::kReplayFrameEnd, + fallout_shelter_online::kReplayFrameStart, + fallout_shelter_online::kReplayFrameEnd, fallout_shelter_online::kReplayDrawSurfaceWidth, - fallout_shelter_online::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "fallout_shelter_online"}}, + fallout_shelter_online::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"farm_heroes_saga", - {farm_heroes_saga::kReplayContextClientMajorVersion, - farm_heroes_saga::kReplayContextClientMinorVersion, farm_heroes_saga::kReplayFrameStart, - farm_heroes_saga::kReplayFrameEnd, farm_heroes_saga::kReplayDrawSurfaceWidth, - farm_heroes_saga::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "farm_heroes_saga"}}, + {"farm_heroes_saga", + farm_heroes_saga::kReplayContextClientMajorVersion, + farm_heroes_saga::kReplayContextClientMinorVersion, + farm_heroes_saga::kReplayFrameStart, + farm_heroes_saga::kReplayFrameEnd, + farm_heroes_saga::kReplayDrawSurfaceWidth, + farm_heroes_saga::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"fate_grand_order", - {fate_grand_order::kReplayContextClientMajorVersion, - fate_grand_order::kReplayContextClientMinorVersion, fate_grand_order::kReplayFrameStart, - fate_grand_order::kReplayFrameEnd, fate_grand_order::kReplayDrawSurfaceWidth, - fate_grand_order::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "fate_grand_order"}}, + {"fate_grand_order", + fate_grand_order::kReplayContextClientMajorVersion, + fate_grand_order::kReplayContextClientMinorVersion, + fate_grand_order::kReplayFrameStart, + fate_grand_order::kReplayFrameEnd, + fate_grand_order::kReplayDrawSurfaceWidth, + fate_grand_order::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"fifa_mobile", - {fifa_mobile::kReplayContextClientMajorVersion, fifa_mobile::kReplayContextClientMinorVersion, - fifa_mobile::kReplayFrameStart, fifa_mobile::kReplayFrameEnd, - fifa_mobile::kReplayDrawSurfaceWidth, fifa_mobile::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "fifa_mobile"}}, + {"fifa_mobile", + fifa_mobile::kReplayContextClientMajorVersion, + fifa_mobile::kReplayContextClientMinorVersion, + fifa_mobile::kReplayFrameStart, + fifa_mobile::kReplayFrameEnd, + fifa_mobile::kReplayDrawSurfaceWidth, + fifa_mobile::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"final_fantasy", - {final_fantasy::kReplayContextClientMajorVersion, - final_fantasy::kReplayContextClientMinorVersion, final_fantasy::kReplayFrameStart, - final_fantasy::kReplayFrameEnd, final_fantasy::kReplayDrawSurfaceWidth, - final_fantasy::kReplayDrawSurfaceHeight, final_fantasy::kReplayDrawSurfaceColorSpace, - "final_fantasy"}}, + {"final_fantasy", + final_fantasy::kReplayContextClientMajorVersion, + final_fantasy::kReplayContextClientMinorVersion, + final_fantasy::kReplayFrameStart, + final_fantasy::kReplayFrameEnd, + final_fantasy::kReplayDrawSurfaceWidth, + final_fantasy::kReplayDrawSurfaceHeight, + final_fantasy::kReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"free_fire", - {free_fire::kReplayContextClientMajorVersion, free_fire::kReplayContextClientMinorVersion, - free_fire::kReplayFrameStart, free_fire::kReplayFrameEnd, free_fire::kReplayDrawSurfaceWidth, - free_fire::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "free_fire"}}, + {"free_fire", + free_fire::kReplayContextClientMajorVersion, + free_fire::kReplayContextClientMinorVersion, + free_fire::kReplayFrameStart, + free_fire::kReplayFrameEnd, + free_fire::kReplayDrawSurfaceWidth, + free_fire::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"gardenscapes", - {gardenscapes::kReplayContextClientMajorVersion, - gardenscapes::kReplayContextClientMinorVersion, gardenscapes::kReplayFrameStart, - gardenscapes::kReplayFrameEnd, gardenscapes::kReplayDrawSurfaceWidth, - gardenscapes::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "gardenscapes"}}, + {"gardenscapes", + gardenscapes::kReplayContextClientMajorVersion, + gardenscapes::kReplayContextClientMinorVersion, + gardenscapes::kReplayFrameStart, + gardenscapes::kReplayFrameEnd, + gardenscapes::kReplayDrawSurfaceWidth, + gardenscapes::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"genshin_impact", - {genshin_impact::kReplayContextClientMajorVersion, - genshin_impact::kReplayContextClientMinorVersion, genshin_impact::kReplayFrameStart, - genshin_impact::kReplayFrameEnd, genshin_impact::kReplayDrawSurfaceWidth, - genshin_impact::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "genshin_impact"}}, + {"genshin_impact", + genshin_impact::kReplayContextClientMajorVersion, + genshin_impact::kReplayContextClientMinorVersion, + genshin_impact::kReplayFrameStart, + genshin_impact::kReplayFrameEnd, + genshin_impact::kReplayDrawSurfaceWidth, + genshin_impact::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"google_maps", - {google_maps::kReplayContextClientMajorVersion, google_maps::kReplayContextClientMinorVersion, - google_maps::kReplayFrameStart, google_maps::kReplayFrameEnd, - google_maps::kReplayDrawSurfaceWidth, google_maps::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "google_maps"}}, + {"google_maps", + google_maps::kReplayContextClientMajorVersion, + google_maps::kReplayContextClientMinorVersion, + google_maps::kReplayFrameStart, + google_maps::kReplayFrameEnd, + google_maps::kReplayDrawSurfaceWidth, + google_maps::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"happy_color", - {happy_color::kReplayContextClientMajorVersion, happy_color::kReplayContextClientMinorVersion, - happy_color::kReplayFrameStart, happy_color::kReplayFrameEnd, - happy_color::kReplayDrawSurfaceWidth, happy_color::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "happy_color"}}, + {"happy_color", + happy_color::kReplayContextClientMajorVersion, + happy_color::kReplayContextClientMinorVersion, + happy_color::kReplayFrameStart, + happy_color::kReplayFrameEnd, + happy_color::kReplayDrawSurfaceWidth, + happy_color::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"hay_day", - {hay_day::kReplayContextClientMajorVersion, hay_day::kReplayContextClientMinorVersion, - hay_day::kReplayFrameStart, hay_day::kReplayFrameEnd, hay_day::kReplayDrawSurfaceWidth, - hay_day::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "hay_day"}}, + {"hay_day", + hay_day::kReplayContextClientMajorVersion, + hay_day::kReplayContextClientMinorVersion, + hay_day::kReplayFrameStart, + hay_day::kReplayFrameEnd, + hay_day::kReplayDrawSurfaceWidth, + hay_day::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"hearthstone", - {hearthstone::kReplayContextClientMajorVersion, hearthstone::kReplayContextClientMinorVersion, - hearthstone::kReplayFrameStart, hearthstone::kReplayFrameEnd, - hearthstone::kReplayDrawSurfaceWidth, hearthstone::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "hearthstone"}}, + {"hearthstone", + hearthstone::kReplayContextClientMajorVersion, + hearthstone::kReplayContextClientMinorVersion, + hearthstone::kReplayFrameStart, + hearthstone::kReplayFrameEnd, + hearthstone::kReplayDrawSurfaceWidth, + hearthstone::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"higgs_domino_island", - {higgs_domino_island::kReplayContextClientMajorVersion, - higgs_domino_island::kReplayContextClientMinorVersion, higgs_domino_island::kReplayFrameStart, - higgs_domino_island::kReplayFrameEnd, higgs_domino_island::kReplayDrawSurfaceWidth, - higgs_domino_island::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "higgs_domino_island"}}, + {"higgs_domino_island", + higgs_domino_island::kReplayContextClientMajorVersion, + higgs_domino_island::kReplayContextClientMinorVersion, + higgs_domino_island::kReplayFrameStart, + higgs_domino_island::kReplayFrameEnd, + higgs_domino_island::kReplayDrawSurfaceWidth, + higgs_domino_island::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"hill_climb_racing", - {hill_climb_racing::kReplayContextClientMajorVersion, - hill_climb_racing::kReplayContextClientMinorVersion, hill_climb_racing::kReplayFrameStart, - hill_climb_racing::kReplayFrameEnd, hill_climb_racing::kReplayDrawSurfaceWidth, - hill_climb_racing::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "hill_climb_racing"}}, + {"hill_climb_racing", + hill_climb_racing::kReplayContextClientMajorVersion, + hill_climb_racing::kReplayContextClientMinorVersion, + hill_climb_racing::kReplayFrameStart, + hill_climb_racing::kReplayFrameEnd, + hill_climb_racing::kReplayDrawSurfaceWidth, + hill_climb_racing::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"homescapes", - {homescapes::kReplayContextClientMajorVersion, homescapes::kReplayContextClientMinorVersion, - homescapes::kReplayFrameStart, homescapes::kReplayFrameEnd, - homescapes::kReplayDrawSurfaceWidth, homescapes::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "homescapes"}}, + {"homescapes", + homescapes::kReplayContextClientMajorVersion, + homescapes::kReplayContextClientMinorVersion, + homescapes::kReplayFrameStart, + homescapes::kReplayFrameEnd, + homescapes::kReplayDrawSurfaceWidth, + homescapes::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"idle_heroes", - {idle_heroes::kReplayContextClientMajorVersion, idle_heroes::kReplayContextClientMinorVersion, - idle_heroes::kReplayFrameStart, idle_heroes::kReplayFrameEnd, - idle_heroes::kReplayDrawSurfaceWidth, idle_heroes::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "idle_heroes"}}, + {"idle_heroes", + idle_heroes::kReplayContextClientMajorVersion, + idle_heroes::kReplayContextClientMinorVersion, + idle_heroes::kReplayFrameStart, + idle_heroes::kReplayFrameEnd, + idle_heroes::kReplayDrawSurfaceWidth, + idle_heroes::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"junes_journey", - {junes_journey::kReplayContextClientMajorVersion, - junes_journey::kReplayContextClientMinorVersion, junes_journey::kReplayFrameStart, - junes_journey::kReplayFrameEnd, junes_journey::kReplayDrawSurfaceWidth, - junes_journey::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "junes_journey"}}, + {"junes_journey", + junes_journey::kReplayContextClientMajorVersion, + junes_journey::kReplayContextClientMinorVersion, + junes_journey::kReplayFrameStart, + junes_journey::kReplayFrameEnd, + junes_journey::kReplayDrawSurfaceWidth, + junes_journey::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"kartrider_rush", - {kartrider_rush::kReplayContextClientMajorVersion, - kartrider_rush::kReplayContextClientMinorVersion, kartrider_rush::kReplayFrameStart, - kartrider_rush::kReplayFrameEnd, kartrider_rush::kReplayDrawSurfaceWidth, - kartrider_rush::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "kartrider_rush"}}, + {"kartrider_rush", + kartrider_rush::kReplayContextClientMajorVersion, + kartrider_rush::kReplayContextClientMinorVersion, + kartrider_rush::kReplayFrameStart, + kartrider_rush::kReplayFrameEnd, + kartrider_rush::kReplayDrawSurfaceWidth, + kartrider_rush::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"klondike_adventures", - {klondike_adventures::kReplayContextClientMajorVersion, - klondike_adventures::kReplayContextClientMinorVersion, klondike_adventures::kReplayFrameStart, - klondike_adventures::kReplayFrameEnd, klondike_adventures::kReplayDrawSurfaceWidth, - klondike_adventures::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "klondike_adventures"}}, + {"klondike_adventures", + klondike_adventures::kReplayContextClientMajorVersion, + klondike_adventures::kReplayContextClientMinorVersion, + klondike_adventures::kReplayFrameStart, + klondike_adventures::kReplayFrameEnd, + klondike_adventures::kReplayDrawSurfaceWidth, + klondike_adventures::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"league_of_legends_wild_rift", - {league_of_legends_wild_rift::kReplayContextClientMajorVersion, + {"league_of_legends_wild_rift", + league_of_legends_wild_rift::kReplayContextClientMajorVersion, league_of_legends_wild_rift::kReplayContextClientMinorVersion, - league_of_legends_wild_rift::kReplayFrameStart, league_of_legends_wild_rift::kReplayFrameEnd, + league_of_legends_wild_rift::kReplayFrameStart, + league_of_legends_wild_rift::kReplayFrameEnd, league_of_legends_wild_rift::kReplayDrawSurfaceWidth, - league_of_legends_wild_rift::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "league_of_legends_wild_rift"}}, + league_of_legends_wild_rift::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"lego_legacy", - {lego_legacy::kReplayContextClientMajorVersion, lego_legacy::kReplayContextClientMinorVersion, - lego_legacy::kReplayFrameStart, lego_legacy::kReplayFrameEnd, - lego_legacy::kReplayDrawSurfaceWidth, lego_legacy::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "lego_legacy"}}, + {"lego_legacy", + lego_legacy::kReplayContextClientMajorVersion, + lego_legacy::kReplayContextClientMinorVersion, + lego_legacy::kReplayFrameStart, + lego_legacy::kReplayFrameEnd, + lego_legacy::kReplayDrawSurfaceWidth, + lego_legacy::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"lineage_m", - {lineage_m::kReplayContextClientMajorVersion, lineage_m::kReplayContextClientMinorVersion, - lineage_m::kReplayFrameStart, lineage_m::kReplayFrameEnd, lineage_m::kReplayDrawSurfaceWidth, - lineage_m::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "lineage_m"}}, + {"lineage_m", + lineage_m::kReplayContextClientMajorVersion, + lineage_m::kReplayContextClientMinorVersion, + lineage_m::kReplayFrameStart, + lineage_m::kReplayFrameEnd, + lineage_m::kReplayDrawSurfaceWidth, + lineage_m::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"ludo_king", - {ludo_king::kReplayContextClientMajorVersion, ludo_king::kReplayContextClientMinorVersion, - ludo_king::kReplayFrameStart, ludo_king::kReplayFrameEnd, ludo_king::kReplayDrawSurfaceWidth, - ludo_king::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "ludo_king"}}, + {"ludo_king", + ludo_king::kReplayContextClientMajorVersion, + ludo_king::kReplayContextClientMinorVersion, + ludo_king::kReplayFrameStart, + ludo_king::kReplayFrameEnd, + ludo_king::kReplayDrawSurfaceWidth, + ludo_king::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"magic_tiles_3", - {magic_tiles_3::kReplayContextClientMajorVersion, - magic_tiles_3::kReplayContextClientMinorVersion, magic_tiles_3::kReplayFrameStart, - magic_tiles_3::kReplayFrameEnd, magic_tiles_3::kReplayDrawSurfaceWidth, - magic_tiles_3::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "magic_tiles_3"}}, + {"magic_tiles_3", + magic_tiles_3::kReplayContextClientMajorVersion, + magic_tiles_3::kReplayContextClientMinorVersion, + magic_tiles_3::kReplayFrameStart, + magic_tiles_3::kReplayFrameEnd, + magic_tiles_3::kReplayDrawSurfaceWidth, + magic_tiles_3::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"manhattan_10", - {manhattan_10::kReplayContextClientMajorVersion, - manhattan_10::kReplayContextClientMinorVersion, manhattan_10::kReplayFrameStart, - manhattan_10::kReplayFrameEnd, manhattan_10::kReplayDrawSurfaceWidth, - manhattan_10::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "manhattan_10"}}, + {"manhattan_10", + manhattan_10::kReplayContextClientMajorVersion, + manhattan_10::kReplayContextClientMinorVersion, + manhattan_10::kReplayFrameStart, + manhattan_10::kReplayFrameEnd, + manhattan_10::kReplayDrawSurfaceWidth, + manhattan_10::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"manhattan_31", - {manhattan_31::kReplayContextClientMajorVersion, - manhattan_31::kReplayContextClientMinorVersion, manhattan_31::kReplayFrameStart, - manhattan_31::kReplayFrameEnd, manhattan_31::kReplayDrawSurfaceWidth, - manhattan_31::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "manhattan_31"}}, + {"manhattan_31", + manhattan_31::kReplayContextClientMajorVersion, + manhattan_31::kReplayContextClientMinorVersion, + manhattan_31::kReplayFrameStart, + manhattan_31::kReplayFrameEnd, + manhattan_31::kReplayDrawSurfaceWidth, + manhattan_31::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"mario_kart_tour", - {mario_kart_tour::kReplayContextClientMajorVersion, - mario_kart_tour::kReplayContextClientMinorVersion, mario_kart_tour::kReplayFrameStart, - mario_kart_tour::kReplayFrameEnd, mario_kart_tour::kReplayDrawSurfaceWidth, - mario_kart_tour::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "mario_kart_tour"}}, + {"mario_kart_tour", + mario_kart_tour::kReplayContextClientMajorVersion, + mario_kart_tour::kReplayContextClientMinorVersion, + mario_kart_tour::kReplayFrameStart, + mario_kart_tour::kReplayFrameEnd, + mario_kart_tour::kReplayDrawSurfaceWidth, + mario_kart_tour::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"marvel_contest_of_champions", - {marvel_contest_of_champions::kReplayContextClientMajorVersion, + {"marvel_contest_of_champions", + marvel_contest_of_champions::kReplayContextClientMajorVersion, marvel_contest_of_champions::kReplayContextClientMinorVersion, - marvel_contest_of_champions::kReplayFrameStart, marvel_contest_of_champions::kReplayFrameEnd, + marvel_contest_of_champions::kReplayFrameStart, + marvel_contest_of_champions::kReplayFrameEnd, marvel_contest_of_champions::kReplayDrawSurfaceWidth, - marvel_contest_of_champions::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "marvel_contest_of_champions"}}, + marvel_contest_of_champions::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"messenger_lite", - {messenger_lite::kReplayContextClientMajorVersion, - messenger_lite::kReplayContextClientMinorVersion, messenger_lite::kReplayFrameStart, - messenger_lite::kReplayFrameEnd, messenger_lite::kReplayDrawSurfaceWidth, - messenger_lite::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "messenger_lite"}}, + {"messenger_lite", + messenger_lite::kReplayContextClientMajorVersion, + messenger_lite::kReplayContextClientMinorVersion, + messenger_lite::kReplayFrameStart, + messenger_lite::kReplayFrameEnd, + messenger_lite::kReplayDrawSurfaceWidth, + messenger_lite::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"minecraft", - {minecraft::kReplayContextClientMajorVersion, minecraft::kReplayContextClientMinorVersion, - minecraft::kReplayFrameStart, minecraft::kReplayFrameEnd, minecraft::kReplayDrawSurfaceWidth, - minecraft::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "minecraft"}}, + {"minecraft", + minecraft::kReplayContextClientMajorVersion, + minecraft::kReplayContextClientMinorVersion, + minecraft::kReplayFrameStart, + minecraft::kReplayFrameEnd, + minecraft::kReplayDrawSurfaceWidth, + minecraft::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"mobile_legends", - {mobile_legends::kReplayContextClientMajorVersion, - mobile_legends::kReplayContextClientMinorVersion, mobile_legends::kReplayFrameStart, - mobile_legends::kReplayFrameEnd, mobile_legends::kReplayDrawSurfaceWidth, - mobile_legends::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "mobile_legends"}}, + {"mobile_legends", + mobile_legends::kReplayContextClientMajorVersion, + mobile_legends::kReplayContextClientMinorVersion, + mobile_legends::kReplayFrameStart, + mobile_legends::kReplayFrameEnd, + mobile_legends::kReplayDrawSurfaceWidth, + mobile_legends::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"nba2k20_800", - {nba2k20_800::kReplayContextClientMajorVersion, nba2k20_800::kReplayContextClientMinorVersion, - nba2k20_800::kReplayFrameStart, nba2k20_800::kReplayFrameEnd, - nba2k20_800::kReplayDrawSurfaceWidth, nba2k20_800::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "nba2k20_800"}}, + {"nba2k20_800", + nba2k20_800::kReplayContextClientMajorVersion, + nba2k20_800::kReplayContextClientMinorVersion, + nba2k20_800::kReplayFrameStart, + nba2k20_800::kReplayFrameEnd, + nba2k20_800::kReplayDrawSurfaceWidth, + nba2k20_800::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"one_punch_man", - {one_punch_man::kReplayContextClientMajorVersion, - one_punch_man::kReplayContextClientMinorVersion, one_punch_man::kReplayFrameStart, - one_punch_man::kReplayFrameEnd, one_punch_man::kReplayDrawSurfaceWidth, - one_punch_man::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "one_punch_man"}}, + {"one_punch_man", + one_punch_man::kReplayContextClientMajorVersion, + one_punch_man::kReplayContextClientMinorVersion, + one_punch_man::kReplayFrameStart, + one_punch_man::kReplayFrameEnd, + one_punch_man::kReplayDrawSurfaceWidth, + one_punch_man::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"plants_vs_zombies_2", - {plants_vs_zombies_2::kReplayContextClientMajorVersion, - plants_vs_zombies_2::kReplayContextClientMinorVersion, plants_vs_zombies_2::kReplayFrameStart, - plants_vs_zombies_2::kReplayFrameEnd, plants_vs_zombies_2::kReplayDrawSurfaceWidth, - plants_vs_zombies_2::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "plants_vs_zombies_2"}}, + {"plants_vs_zombies_2", + plants_vs_zombies_2::kReplayContextClientMajorVersion, + plants_vs_zombies_2::kReplayContextClientMinorVersion, + plants_vs_zombies_2::kReplayFrameStart, + plants_vs_zombies_2::kReplayFrameEnd, + plants_vs_zombies_2::kReplayDrawSurfaceWidth, + plants_vs_zombies_2::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"pokemon_go", - {pokemon_go::kReplayContextClientMajorVersion, pokemon_go::kReplayContextClientMinorVersion, - pokemon_go::kReplayFrameStart, pokemon_go::kReplayFrameEnd, - pokemon_go::kReplayDrawSurfaceWidth, pokemon_go::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "pokemon_go"}}, + {"pokemon_go", + pokemon_go::kReplayContextClientMajorVersion, + pokemon_go::kReplayContextClientMinorVersion, + pokemon_go::kReplayFrameStart, + pokemon_go::kReplayFrameEnd, + pokemon_go::kReplayDrawSurfaceWidth, + pokemon_go::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"professional_baseball_spirits", - {professional_baseball_spirits::kReplayContextClientMajorVersion, + {"professional_baseball_spirits", + professional_baseball_spirits::kReplayContextClientMajorVersion, professional_baseball_spirits::kReplayContextClientMinorVersion, professional_baseball_spirits::kReplayFrameStart, professional_baseball_spirits::kReplayFrameEnd, professional_baseball_spirits::kReplayDrawSurfaceWidth, - professional_baseball_spirits::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "professional_baseball_spirits"}}, + professional_baseball_spirits::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"pubg_mobile_battle_royale", - {pubg_mobile_battle_royale::kReplayContextClientMajorVersion, + {"pubg_mobile_battle_royale", + pubg_mobile_battle_royale::kReplayContextClientMajorVersion, pubg_mobile_battle_royale::kReplayContextClientMinorVersion, - pubg_mobile_battle_royale::kReplayFrameStart, pubg_mobile_battle_royale::kReplayFrameEnd, + pubg_mobile_battle_royale::kReplayFrameStart, + pubg_mobile_battle_royale::kReplayFrameEnd, pubg_mobile_battle_royale::kReplayDrawSurfaceWidth, pubg_mobile_battle_royale::kReplayDrawSurfaceHeight, - pubg_mobile_battle_royale::kReplayDrawSurfaceColorSpace, "pubg_mobile_battle_royale"}}, + pubg_mobile_battle_royale::kReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"pubg_mobile_lite", - {pubg_mobile_lite::kReplayContextClientMajorVersion, - pubg_mobile_lite::kReplayContextClientMinorVersion, pubg_mobile_lite::kReplayFrameStart, - pubg_mobile_lite::kReplayFrameEnd, pubg_mobile_lite::kReplayDrawSurfaceWidth, - pubg_mobile_lite::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "pubg_mobile_lite"}}, + {"pubg_mobile_lite", + pubg_mobile_lite::kReplayContextClientMajorVersion, + pubg_mobile_lite::kReplayContextClientMinorVersion, + pubg_mobile_lite::kReplayFrameStart, + pubg_mobile_lite::kReplayFrameEnd, + pubg_mobile_lite::kReplayDrawSurfaceWidth, + pubg_mobile_lite::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"pubg_mobile_skydive", - {pubg_mobile_skydive::kReplayContextClientMajorVersion, - pubg_mobile_skydive::kReplayContextClientMinorVersion, pubg_mobile_skydive::kReplayFrameStart, - pubg_mobile_skydive::kReplayFrameEnd, pubg_mobile_skydive::kReplayDrawSurfaceWidth, + {"pubg_mobile_skydive", + pubg_mobile_skydive::kReplayContextClientMajorVersion, + pubg_mobile_skydive::kReplayContextClientMinorVersion, + pubg_mobile_skydive::kReplayFrameStart, + pubg_mobile_skydive::kReplayFrameEnd, + pubg_mobile_skydive::kReplayDrawSurfaceWidth, pubg_mobile_skydive::kReplayDrawSurfaceHeight, - pubg_mobile_skydive::kReplayDrawSurfaceColorSpace, "pubg_mobile_skydive"}}, + pubg_mobile_skydive::kReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"ragnarok_m_eternal_love", - {ragnarok_m_eternal_love::kReplayContextClientMajorVersion, + {"ragnarok_m_eternal_love", + ragnarok_m_eternal_love::kReplayContextClientMajorVersion, ragnarok_m_eternal_love::kReplayContextClientMinorVersion, - ragnarok_m_eternal_love::kReplayFrameStart, ragnarok_m_eternal_love::kReplayFrameEnd, + ragnarok_m_eternal_love::kReplayFrameStart, + ragnarok_m_eternal_love::kReplayFrameEnd, ragnarok_m_eternal_love::kReplayDrawSurfaceWidth, - ragnarok_m_eternal_love::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "ragnarok_m_eternal_love"}}, + ragnarok_m_eternal_love::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"raid_shadow_legends", - {raid_shadow_legends::kReplayContextClientMajorVersion, - raid_shadow_legends::kReplayContextClientMinorVersion, raid_shadow_legends::kReplayFrameStart, - raid_shadow_legends::kReplayFrameEnd, raid_shadow_legends::kReplayDrawSurfaceWidth, - raid_shadow_legends::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "raid_shadow_legends"}}, + {"raid_shadow_legends", + raid_shadow_legends::kReplayContextClientMajorVersion, + raid_shadow_legends::kReplayContextClientMinorVersion, + raid_shadow_legends::kReplayFrameStart, + raid_shadow_legends::kReplayFrameEnd, + raid_shadow_legends::kReplayDrawSurfaceWidth, + raid_shadow_legends::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"real_commando_secret_mission", - {real_commando_secret_mission::kReplayContextClientMajorVersion, + {"real_commando_secret_mission", + real_commando_secret_mission::kReplayContextClientMajorVersion, real_commando_secret_mission::kReplayContextClientMinorVersion, real_commando_secret_mission::kReplayFrameStart, real_commando_secret_mission::kReplayFrameEnd, real_commando_secret_mission::kReplayDrawSurfaceWidth, - real_commando_secret_mission::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "real_commando_secret_mission"}}, + real_commando_secret_mission::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"real_cricket_20", - {real_cricket_20::kReplayContextClientMajorVersion, - real_cricket_20::kReplayContextClientMinorVersion, real_cricket_20::kReplayFrameStart, - real_cricket_20::kReplayFrameEnd, real_cricket_20::kReplayDrawSurfaceWidth, - real_cricket_20::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "real_cricket_20"}}, + {"real_cricket_20", + real_cricket_20::kReplayContextClientMajorVersion, + real_cricket_20::kReplayContextClientMinorVersion, + real_cricket_20::kReplayFrameStart, + real_cricket_20::kReplayFrameEnd, + real_cricket_20::kReplayDrawSurfaceWidth, + real_cricket_20::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"real_gangster_crime", - {real_gangster_crime::kReplayContextClientMajorVersion, - real_gangster_crime::kReplayContextClientMinorVersion, real_gangster_crime::kReplayFrameStart, - real_gangster_crime::kReplayFrameEnd, real_gangster_crime::kReplayDrawSurfaceWidth, - real_gangster_crime::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "real_gangster_crime"}}, + {"real_gangster_crime", + real_gangster_crime::kReplayContextClientMajorVersion, + real_gangster_crime::kReplayContextClientMinorVersion, + real_gangster_crime::kReplayFrameStart, + real_gangster_crime::kReplayFrameEnd, + real_gangster_crime::kReplayDrawSurfaceWidth, + real_gangster_crime::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"rise_of_kingdoms", - {rise_of_kingdoms::kReplayContextClientMajorVersion, - rise_of_kingdoms::kReplayContextClientMinorVersion, rise_of_kingdoms::kReplayFrameStart, - rise_of_kingdoms::kReplayFrameEnd, rise_of_kingdoms::kReplayDrawSurfaceWidth, - rise_of_kingdoms::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "rise_of_kingdoms"}}, + {"rise_of_kingdoms", + rise_of_kingdoms::kReplayContextClientMajorVersion, + rise_of_kingdoms::kReplayContextClientMinorVersion, + rise_of_kingdoms::kReplayFrameStart, + rise_of_kingdoms::kReplayFrameEnd, + rise_of_kingdoms::kReplayDrawSurfaceWidth, + rise_of_kingdoms::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"romancing_saga", - {romancing_saga::kReplayContextClientMajorVersion, - romancing_saga::kReplayContextClientMinorVersion, romancing_saga::kReplayFrameStart, - romancing_saga::kReplayFrameEnd, romancing_saga::kReplayDrawSurfaceWidth, - romancing_saga::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "romancing_saga"}}, + {"romancing_saga", + romancing_saga::kReplayContextClientMajorVersion, + romancing_saga::kReplayContextClientMinorVersion, + romancing_saga::kReplayFrameStart, + romancing_saga::kReplayFrameEnd, + romancing_saga::kReplayDrawSurfaceWidth, + romancing_saga::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"rope_hero_vice_town", - {rope_hero_vice_town::kReplayContextClientMajorVersion, - rope_hero_vice_town::kReplayContextClientMinorVersion, rope_hero_vice_town::kReplayFrameStart, - rope_hero_vice_town::kReplayFrameEnd, rope_hero_vice_town::kReplayDrawSurfaceWidth, - rope_hero_vice_town::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "rope_hero_vice_town"}}, + {"rope_hero_vice_town", + rope_hero_vice_town::kReplayContextClientMajorVersion, + rope_hero_vice_town::kReplayContextClientMinorVersion, + rope_hero_vice_town::kReplayFrameStart, + rope_hero_vice_town::kReplayFrameEnd, + rope_hero_vice_town::kReplayDrawSurfaceWidth, + rope_hero_vice_town::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"saint_seiya_awakening", - {saint_seiya_awakening::kReplayContextClientMajorVersion, + {"saint_seiya_awakening", + saint_seiya_awakening::kReplayContextClientMajorVersion, saint_seiya_awakening::kReplayContextClientMinorVersion, - saint_seiya_awakening::kReplayFrameStart, saint_seiya_awakening::kReplayFrameEnd, + saint_seiya_awakening::kReplayFrameStart, + saint_seiya_awakening::kReplayFrameEnd, saint_seiya_awakening::kReplayDrawSurfaceWidth, - saint_seiya_awakening::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "saint_seiya_awakening"}}, + saint_seiya_awakening::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"sakura_school_simulator", - {sakura_school_simulator::kReplayContextClientMajorVersion, + {"sakura_school_simulator", + sakura_school_simulator::kReplayContextClientMajorVersion, sakura_school_simulator::kReplayContextClientMinorVersion, - sakura_school_simulator::kReplayFrameStart, sakura_school_simulator::kReplayFrameEnd, + sakura_school_simulator::kReplayFrameStart, + sakura_school_simulator::kReplayFrameEnd, sakura_school_simulator::kReplayDrawSurfaceWidth, - sakura_school_simulator::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "sakura_school_simulator"}}, + sakura_school_simulator::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"scrabble_go", - {scrabble_go::kReplayContextClientMajorVersion, scrabble_go::kReplayContextClientMinorVersion, - scrabble_go::kReplayFrameStart, scrabble_go::kReplayFrameEnd, - scrabble_go::kReplayDrawSurfaceWidth, scrabble_go::kReplayDrawSurfaceHeight, - scrabble_go::kReplayDrawSurfaceColorSpace, "scrabble_go"}}, + {"scrabble_go", + scrabble_go::kReplayContextClientMajorVersion, + scrabble_go::kReplayContextClientMinorVersion, + scrabble_go::kReplayFrameStart, + scrabble_go::kReplayFrameEnd, + scrabble_go::kReplayDrawSurfaceWidth, + scrabble_go::kReplayDrawSurfaceHeight, + scrabble_go::kReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"shadow_fight_2", - {shadow_fight_2::kReplayContextClientMajorVersion, - shadow_fight_2::kReplayContextClientMinorVersion, shadow_fight_2::kReplayFrameStart, - shadow_fight_2::kReplayFrameEnd, shadow_fight_2::kReplayDrawSurfaceWidth, - shadow_fight_2::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "shadow_fight_2"}}, + {"shadow_fight_2", + shadow_fight_2::kReplayContextClientMajorVersion, + shadow_fight_2::kReplayContextClientMinorVersion, + shadow_fight_2::kReplayFrameStart, + shadow_fight_2::kReplayFrameEnd, + shadow_fight_2::kReplayDrawSurfaceWidth, + shadow_fight_2::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"slingshot_test1", - {slingshot_test1::kReplayContextClientMajorVersion, - slingshot_test1::kReplayContextClientMinorVersion, slingshot_test1::kReplayFrameStart, - slingshot_test1::kReplayFrameEnd, slingshot_test1::kReplayDrawSurfaceWidth, - slingshot_test1::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "slingshot_test1"}}, + {"slingshot_test1", + slingshot_test1::kReplayContextClientMajorVersion, + slingshot_test1::kReplayContextClientMinorVersion, + slingshot_test1::kReplayFrameStart, + slingshot_test1::kReplayFrameEnd, + slingshot_test1::kReplayDrawSurfaceWidth, + slingshot_test1::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"slingshot_test2", - {slingshot_test2::kReplayContextClientMajorVersion, - slingshot_test2::kReplayContextClientMinorVersion, slingshot_test2::kReplayFrameStart, - slingshot_test2::kReplayFrameEnd, slingshot_test2::kReplayDrawSurfaceWidth, - slingshot_test2::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "slingshot_test2"}}, + {"slingshot_test2", + slingshot_test2::kReplayContextClientMajorVersion, + slingshot_test2::kReplayContextClientMinorVersion, + slingshot_test2::kReplayFrameStart, + slingshot_test2::kReplayFrameEnd, + slingshot_test2::kReplayDrawSurfaceWidth, + slingshot_test2::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"sniper_3d", - {sniper_3d::kReplayContextClientMajorVersion, sniper_3d::kReplayContextClientMinorVersion, - sniper_3d::kReplayFrameStart, sniper_3d::kReplayFrameEnd, sniper_3d::kReplayDrawSurfaceWidth, - sniper_3d::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "sniper_3d"}}, + {"sniper_3d", + sniper_3d::kReplayContextClientMajorVersion, + sniper_3d::kReplayContextClientMinorVersion, + sniper_3d::kReplayFrameStart, + sniper_3d::kReplayFrameEnd, + sniper_3d::kReplayDrawSurfaceWidth, + sniper_3d::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"sonic_the_hedgehog", - {sonic_the_hedgehog::kReplayContextClientMajorVersion, - sonic_the_hedgehog::kReplayContextClientMinorVersion, sonic_the_hedgehog::kReplayFrameStart, - sonic_the_hedgehog::kReplayFrameEnd, sonic_the_hedgehog::kReplayDrawSurfaceWidth, + {"sonic_the_hedgehog", + sonic_the_hedgehog::kReplayContextClientMajorVersion, + sonic_the_hedgehog::kReplayContextClientMinorVersion, + sonic_the_hedgehog::kReplayFrameStart, + sonic_the_hedgehog::kReplayFrameEnd, + sonic_the_hedgehog::kReplayDrawSurfaceWidth, sonic_the_hedgehog::kReplayDrawSurfaceHeight, - sonic_the_hedgehog::kReplayDrawSurfaceColorSpace, "sonic_the_hedgehog"}}, + sonic_the_hedgehog::kReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"standoff_2", - {standoff_2::kReplayContextClientMajorVersion, standoff_2::kReplayContextClientMinorVersion, - standoff_2::kReplayFrameStart, standoff_2::kReplayFrameEnd, - standoff_2::kReplayDrawSurfaceWidth, standoff_2::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "standoff_2"}}, + {"standoff_2", + standoff_2::kReplayContextClientMajorVersion, + standoff_2::kReplayContextClientMinorVersion, + standoff_2::kReplayFrameStart, + standoff_2::kReplayFrameEnd, + standoff_2::kReplayDrawSurfaceWidth, + standoff_2::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"subway_princess_runner", - {subway_princess_runner::kReplayContextClientMajorVersion, + {"subway_princess_runner", + subway_princess_runner::kReplayContextClientMajorVersion, subway_princess_runner::kReplayContextClientMinorVersion, - subway_princess_runner::kReplayFrameStart, subway_princess_runner::kReplayFrameEnd, + subway_princess_runner::kReplayFrameStart, + subway_princess_runner::kReplayFrameEnd, subway_princess_runner::kReplayDrawSurfaceWidth, - subway_princess_runner::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "subway_princess_runner"}}, + subway_princess_runner::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"subway_surfers", - {subway_surfers::kReplayContextClientMajorVersion, - subway_surfers::kReplayContextClientMinorVersion, subway_surfers::kReplayFrameStart, - subway_surfers::kReplayFrameEnd, subway_surfers::kReplayDrawSurfaceWidth, - subway_surfers::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "subway_surfers"}}, + {"subway_surfers", + subway_surfers::kReplayContextClientMajorVersion, + subway_surfers::kReplayContextClientMinorVersion, + subway_surfers::kReplayFrameStart, + subway_surfers::kReplayFrameEnd, + subway_surfers::kReplayDrawSurfaceWidth, + subway_surfers::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"summoners_war", - {summoners_war::kReplayContextClientMajorVersion, - summoners_war::kReplayContextClientMinorVersion, summoners_war::kReplayFrameStart, - summoners_war::kReplayFrameEnd, summoners_war::kReplayDrawSurfaceWidth, - summoners_war::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "summoners_war"}}, + {"summoners_war", + summoners_war::kReplayContextClientMajorVersion, + summoners_war::kReplayContextClientMinorVersion, + summoners_war::kReplayFrameStart, + summoners_war::kReplayFrameEnd, + summoners_war::kReplayDrawSurfaceWidth, + summoners_war::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"talking_tom_hero_dash", - {talking_tom_hero_dash::kReplayContextClientMajorVersion, + {"talking_tom_hero_dash", + talking_tom_hero_dash::kReplayContextClientMajorVersion, talking_tom_hero_dash::kReplayContextClientMinorVersion, - talking_tom_hero_dash::kReplayFrameStart, talking_tom_hero_dash::kReplayFrameEnd, + talking_tom_hero_dash::kReplayFrameStart, + talking_tom_hero_dash::kReplayFrameEnd, talking_tom_hero_dash::kReplayDrawSurfaceWidth, - talking_tom_hero_dash::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "talking_tom_hero_dash"}}, + talking_tom_hero_dash::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"temple_run_2", - {temple_run_2::kReplayContextClientMajorVersion, - temple_run_2::kReplayContextClientMinorVersion, temple_run_2::kReplayFrameStart, - temple_run_2::kReplayFrameEnd, temple_run_2::kReplayDrawSurfaceWidth, - temple_run_2::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "temple_run_2"}}, + {"temple_run_2", + temple_run_2::kReplayContextClientMajorVersion, + temple_run_2::kReplayContextClientMinorVersion, + temple_run_2::kReplayFrameStart, + temple_run_2::kReplayFrameEnd, + temple_run_2::kReplayDrawSurfaceWidth, + temple_run_2::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"temple_run_300", - {temple_run_300::kReplayContextClientMajorVersion, - temple_run_300::kReplayContextClientMinorVersion, temple_run_300::kReplayFrameStart, - temple_run_300::kReplayFrameEnd, temple_run_300::kReplayDrawSurfaceWidth, - temple_run_300::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "temple_run_300"}}, + {"temple_run_300", + temple_run_300::kReplayContextClientMajorVersion, + temple_run_300::kReplayContextClientMinorVersion, + temple_run_300::kReplayFrameStart, + temple_run_300::kReplayFrameEnd, + temple_run_300::kReplayDrawSurfaceWidth, + temple_run_300::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"toon_blast", - {toon_blast::kReplayContextClientMajorVersion, toon_blast::kReplayContextClientMinorVersion, - toon_blast::kReplayFrameStart, toon_blast::kReplayFrameEnd, - toon_blast::kReplayDrawSurfaceWidth, toon_blast::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "toon_blast"}}, + {"toon_blast", + toon_blast::kReplayContextClientMajorVersion, + toon_blast::kReplayContextClientMinorVersion, + toon_blast::kReplayFrameStart, + toon_blast::kReplayFrameEnd, + toon_blast::kReplayDrawSurfaceWidth, + toon_blast::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"township", - {township::kReplayContextClientMajorVersion, township::kReplayContextClientMinorVersion, - township::kReplayFrameStart, township::kReplayFrameEnd, township::kReplayDrawSurfaceWidth, - township::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "township"}}, + {"township", + township::kReplayContextClientMajorVersion, + township::kReplayContextClientMinorVersion, + township::kReplayFrameStart, + township::kReplayFrameEnd, + township::kReplayDrawSurfaceWidth, + township::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"trex_200", - {trex_200::kReplayContextClientMajorVersion, trex_200::kReplayContextClientMinorVersion, - trex_200::kReplayFrameStart, trex_200::kReplayFrameEnd, trex_200::kReplayDrawSurfaceWidth, - trex_200::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "trex_200"}}, + {"trex_200", + trex_200::kReplayContextClientMajorVersion, + trex_200::kReplayContextClientMinorVersion, + trex_200::kReplayFrameStart, + trex_200::kReplayFrameEnd, + trex_200::kReplayDrawSurfaceWidth, + trex_200::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"whatsapp", - {whatsapp::kReplayContextClientMajorVersion, whatsapp::kReplayContextClientMinorVersion, - whatsapp::kReplayFrameStart, whatsapp::kReplayFrameEnd, whatsapp::kReplayDrawSurfaceWidth, - whatsapp::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, "whatsapp"}}, + {"whatsapp", + whatsapp::kReplayContextClientMajorVersion, + whatsapp::kReplayContextClientMinorVersion, + whatsapp::kReplayFrameStart, + whatsapp::kReplayFrameEnd, + whatsapp::kReplayDrawSurfaceWidth, + whatsapp::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"words_with_friends_2", - {words_with_friends_2::kReplayContextClientMajorVersion, + {"words_with_friends_2", + words_with_friends_2::kReplayContextClientMajorVersion, words_with_friends_2::kReplayContextClientMinorVersion, - words_with_friends_2::kReplayFrameStart, words_with_friends_2::kReplayFrameEnd, - words_with_friends_2::kReplayDrawSurfaceWidth, words_with_friends_2::kReplayDrawSurfaceHeight, - words_with_friends_2::kReplayDrawSurfaceColorSpace, "words_with_friends_2"}}, + words_with_friends_2::kReplayFrameStart, + words_with_friends_2::kReplayFrameEnd, + words_with_friends_2::kReplayDrawSurfaceWidth, + words_with_friends_2::kReplayDrawSurfaceHeight, + words_with_friends_2::kReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"wordscapes", - {wordscapes::kReplayContextClientMajorVersion, wordscapes::kReplayContextClientMinorVersion, - wordscapes::kReplayFrameStart, wordscapes::kReplayFrameEnd, - wordscapes::kReplayDrawSurfaceWidth, wordscapes::kReplayDrawSurfaceHeight, - wordscapes::kReplayDrawSurfaceColorSpace, "wordscapes"}}, + {"wordscapes", + wordscapes::kReplayContextClientMajorVersion, + wordscapes::kReplayContextClientMinorVersion, + wordscapes::kReplayFrameStart, + wordscapes::kReplayFrameEnd, + wordscapes::kReplayDrawSurfaceWidth, + wordscapes::kReplayDrawSurfaceHeight, + wordscapes::kReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"world_of_kings", - {world_of_kings::kReplayContextClientMajorVersion, - world_of_kings::kReplayContextClientMinorVersion, world_of_kings::kReplayFrameStart, - world_of_kings::kReplayFrameEnd, world_of_kings::kReplayDrawSurfaceWidth, - world_of_kings::kReplayDrawSurfaceHeight, world_of_kings::kReplayDrawSurfaceColorSpace, - "world_of_kings"}}, + {"world_of_kings", + world_of_kings::kReplayContextClientMajorVersion, + world_of_kings::kReplayContextClientMinorVersion, + world_of_kings::kReplayFrameStart, + world_of_kings::kReplayFrameEnd, + world_of_kings::kReplayDrawSurfaceWidth, + world_of_kings::kReplayDrawSurfaceHeight, + world_of_kings::kReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"world_of_tanks_blitz", - {world_of_tanks_blitz::kReplayContextClientMajorVersion, + {"world_of_tanks_blitz", + world_of_tanks_blitz::kReplayContextClientMajorVersion, world_of_tanks_blitz::kReplayContextClientMinorVersion, - world_of_tanks_blitz::kReplayFrameStart, world_of_tanks_blitz::kReplayFrameEnd, - world_of_tanks_blitz::kReplayDrawSurfaceWidth, world_of_tanks_blitz::kReplayDrawSurfaceHeight, - kDefaultReplayDrawSurfaceColorSpace, "world_of_tanks_blitz"}}, + world_of_tanks_blitz::kReplayFrameStart, + world_of_tanks_blitz::kReplayFrameEnd, + world_of_tanks_blitz::kReplayDrawSurfaceWidth, + world_of_tanks_blitz::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"world_war_doh", - {world_war_doh::kReplayContextClientMajorVersion, - world_war_doh::kReplayContextClientMinorVersion, world_war_doh::kReplayFrameStart, - world_war_doh::kReplayFrameEnd, world_war_doh::kReplayDrawSurfaceWidth, - world_war_doh::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "world_war_doh"}}, + {"world_war_doh", + world_war_doh::kReplayContextClientMajorVersion, + world_war_doh::kReplayContextClientMinorVersion, + world_war_doh::kReplayFrameStart, + world_war_doh::kReplayFrameEnd, + world_war_doh::kReplayDrawSurfaceWidth, + world_war_doh::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}, {"worms_zone_io", - {worms_zone_io::kReplayContextClientMajorVersion, - worms_zone_io::kReplayContextClientMinorVersion, worms_zone_io::kReplayFrameStart, - worms_zone_io::kReplayFrameEnd, worms_zone_io::kReplayDrawSurfaceWidth, - worms_zone_io::kReplayDrawSurfaceHeight, kDefaultReplayDrawSurfaceColorSpace, - "worms_zone_io"}}}; + {"worms_zone_io", + worms_zone_io::kReplayContextClientMajorVersion, + worms_zone_io::kReplayContextClientMinorVersion, + worms_zone_io::kReplayFrameStart, + worms_zone_io::kReplayFrameEnd, + worms_zone_io::kReplayDrawSurfaceWidth, + worms_zone_io::kReplayDrawSurfaceHeight, + kDefaultReplayDrawSurfaceColorSpace, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + false}}}; } // namespace const TraceInfo &GetTraceInfo(const char *traceName) @@ -725,4 +2385,4 @@ const TraceInfo &GetTraceInfo(const char *traceName) UNREACHABLE(); return kTraceInfos[0].info; } -} // namespace angle +} // namespace trace_angle diff --git a/src/tests/restricted_traces/restricted_traces_autogen.gni b/src/tests/restricted_traces/restricted_traces_autogen.gni index b508c696f..d489e6d08 100644 --- a/src/tests/restricted_traces/restricted_traces_autogen.gni +++ b/src/tests/restricted_traces/restricted_traces_autogen.gni @@ -24,7 +24,7 @@ angle_restricted_traces = [ "aliexpress/aliexpress_capture_context1_frame009.cpp", "aliexpress/aliexpress_capture_context1_frame010.cpp", ], - "aliexpress/aliexpress_capture_context1.angledata.gz", + [ "aliexpress/aliexpress_capture_context1.angledata.gz" ], ], [ "among_us", @@ -41,7 +41,7 @@ angle_restricted_traces = [ "among_us/among_us_capture_context1_frame009.cpp", "among_us/among_us_capture_context1_frame010.cpp", ], - "among_us/among_us_capture_context1.angledata.gz", + [ "among_us/among_us_capture_context1.angledata.gz" ], ], [ "angry_birds_2_1500", @@ -59,7 +59,7 @@ angle_restricted_traces = [ "angry_birds_2_1500/angry_birds_2_1500_capture_context1_frame010.cpp", "angry_birds_2_1500/angry_birds_2_1500_capture_context1_frame011.cpp", ], - "angry_birds_2_1500/angry_birds_2_1500_capture_context1.angledata.gz", + [ "angry_birds_2_1500/angry_birds_2_1500_capture_context1.angledata.gz" ], ], [ "arena_of_valor", @@ -76,7 +76,7 @@ angle_restricted_traces = [ "arena_of_valor/arena_of_valor_capture_context1_frame009.cpp", "arena_of_valor/arena_of_valor_capture_context1_frame010.cpp", ], - "arena_of_valor/arena_of_valor_capture_context1.angledata.gz", + [ "arena_of_valor/arena_of_valor_capture_context1.angledata.gz" ], ], [ "asphalt_8", @@ -93,7 +93,7 @@ angle_restricted_traces = [ "asphalt_8/asphalt_8_capture_context1_frame009.cpp", "asphalt_8/asphalt_8_capture_context1_frame010.cpp", ], - "asphalt_8/asphalt_8_capture_context1.angledata.gz", + [ "asphalt_8/asphalt_8_capture_context1.angledata.gz" ], ], [ "avakin_life", @@ -110,7 +110,7 @@ angle_restricted_traces = [ "avakin_life/avakin_life_capture_context1_frame009.cpp", "avakin_life/avakin_life_capture_context1_frame010.cpp", ], - "avakin_life/avakin_life_capture_context1.angledata.gz", + [ "avakin_life/avakin_life_capture_context1.angledata.gz" ], ], [ "aztec_ruins", @@ -127,7 +127,7 @@ angle_restricted_traces = [ "aztec_ruins/aztec_ruins_capture_context1_frame009.cpp", "aztec_ruins/aztec_ruins_capture_context1_frame010.cpp", ], - "aztec_ruins/aztec_ruins_capture_context1.angledata.gz", + [ "aztec_ruins/aztec_ruins_capture_context1.angledata.gz" ], ], [ "beach_buggy_racing", @@ -184,7 +184,7 @@ angle_restricted_traces = [ "beach_buggy_racing/beach_buggy_racing_capture_context1_frame049.cpp", "beach_buggy_racing/beach_buggy_racing_capture_context1_frame050.cpp", ], - "beach_buggy_racing/beach_buggy_racing_capture_context1.angledata.gz", + [ "beach_buggy_racing/beach_buggy_racing_capture_context1.angledata.gz" ], ], [ "brawl_stars", @@ -201,7 +201,7 @@ angle_restricted_traces = [ "brawl_stars/brawl_stars_capture_context1_frame009.cpp", "brawl_stars/brawl_stars_capture_context1_frame010.cpp", ], - "brawl_stars/brawl_stars_capture_context1.angledata.gz", + [ "brawl_stars/brawl_stars_capture_context1.angledata.gz" ], ], [ "bricks_breaker_quest", @@ -238,7 +238,7 @@ angle_restricted_traces = [ "bricks_breaker_quest/bricks_breaker_quest_capture_context2_frame029.cpp", "bricks_breaker_quest/bricks_breaker_quest_capture_context2_frame030.cpp", ], - "bricks_breaker_quest/bricks_breaker_quest_capture_context2.angledata.gz", + [ "bricks_breaker_quest/bricks_breaker_quest_capture_context2.angledata.gz" ], ], [ "bubble_shooter", @@ -345,7 +345,7 @@ angle_restricted_traces = [ "bubble_shooter/bubble_shooter_capture_context5_frame099.cpp", "bubble_shooter/bubble_shooter_capture_context5_frame100.cpp", ], - "bubble_shooter/bubble_shooter_capture_context5.angledata.gz", + [ "bubble_shooter/bubble_shooter_capture_context5.angledata.gz" ], ], [ "bus_simulator_indonesia", @@ -362,7 +362,7 @@ angle_restricted_traces = [ "bus_simulator_indonesia/bus_simulator_indonesia_capture_context1_frame009.cpp", "bus_simulator_indonesia/bus_simulator_indonesia_capture_context1_frame010.cpp", ], - "bus_simulator_indonesia/bus_simulator_indonesia_capture_context1.angledata.gz", + [ "bus_simulator_indonesia/bus_simulator_indonesia_capture_context1.angledata.gz" ], ], [ "call_break_offline_card_game", @@ -469,7 +469,7 @@ angle_restricted_traces = [ "call_break_offline_card_game/call_break_offline_card_game_capture_context2_frame099.cpp", "call_break_offline_card_game/call_break_offline_card_game_capture_context2_frame100.cpp", ], - "call_break_offline_card_game/call_break_offline_card_game_capture_context2.angledata.gz", + [ "call_break_offline_card_game/call_break_offline_card_game_capture_context2.angledata.gz" ], ], [ "candy_crush_500", @@ -487,7 +487,7 @@ angle_restricted_traces = [ "candy_crush_500/candy_crush_500_capture_context1_frame010.cpp", "candy_crush_500/candy_crush_500_capture_context1_frame011.cpp", ], - "candy_crush_500/candy_crush_500_capture_context1.angledata.gz", + [ "candy_crush_500/candy_crush_500_capture_context1.angledata.gz" ], ], [ "candy_crush_soda_saga", @@ -594,7 +594,7 @@ angle_restricted_traces = [ "candy_crush_soda_saga/candy_crush_soda_saga_capture_context2_frame099.cpp", "candy_crush_soda_saga/candy_crush_soda_saga_capture_context2_frame100.cpp", ], - "candy_crush_soda_saga/candy_crush_soda_saga_capture_context2.angledata.gz", + [ "candy_crush_soda_saga/candy_crush_soda_saga_capture_context2.angledata.gz" ], ], [ "car_parking_multiplayer", @@ -611,7 +611,7 @@ angle_restricted_traces = [ "car_parking_multiplayer/car_parking_multiplayer_capture_context1_frame009.cpp", "car_parking_multiplayer/car_parking_multiplayer_capture_context1_frame010.cpp", ], - "car_parking_multiplayer/car_parking_multiplayer_capture_context1.angledata.gz", + [ "car_parking_multiplayer/car_parking_multiplayer_capture_context1.angledata.gz" ], ], [ "clash_of_clans", @@ -628,7 +628,7 @@ angle_restricted_traces = [ "clash_of_clans/clash_of_clans_capture_context1_frame009.cpp", "clash_of_clans/clash_of_clans_capture_context1_frame010.cpp", ], - "clash_of_clans/clash_of_clans_capture_context1.angledata.gz", + [ "clash_of_clans/clash_of_clans_capture_context1.angledata.gz" ], ], [ "clash_royale", @@ -645,7 +645,7 @@ angle_restricted_traces = [ "clash_royale/clash_royale_capture_context1_frame009.cpp", "clash_royale/clash_royale_capture_context1_frame010.cpp", ], - "clash_royale/clash_royale_capture_context1.angledata.gz", + [ "clash_royale/clash_royale_capture_context1.angledata.gz" ], ], [ "cod_mobile", @@ -662,7 +662,7 @@ angle_restricted_traces = [ "cod_mobile/cod_mobile_capture_context1_frame009.cpp", "cod_mobile/cod_mobile_capture_context1_frame010.cpp", ], - "cod_mobile/cod_mobile_capture_context1.angledata.gz", + [ "cod_mobile/cod_mobile_capture_context1.angledata.gz" ], ], [ "coin_master", @@ -679,7 +679,7 @@ angle_restricted_traces = [ "coin_master/coin_master_capture_context1_frame009.cpp", "coin_master/coin_master_capture_context1_frame010.cpp", ], - "coin_master/coin_master_capture_context1.angledata.gz", + [ "coin_master/coin_master_capture_context1.angledata.gz" ], ], [ "command_and_conquer_rivals", @@ -696,7 +696,7 @@ angle_restricted_traces = [ "command_and_conquer_rivals/command_and_conquer_rivals_capture_context2_frame009.cpp", "command_and_conquer_rivals/command_and_conquer_rivals_capture_context2_frame010.cpp", ], - "command_and_conquer_rivals/command_and_conquer_rivals_capture_context2.angledata.gz", + [ "command_and_conquer_rivals/command_and_conquer_rivals_capture_context2.angledata.gz" ], ], [ "cookie_run_kingdom", @@ -753,7 +753,7 @@ angle_restricted_traces = [ "cookie_run_kingdom/cookie_run_kingdom_capture_context2_frame049.cpp", "cookie_run_kingdom/cookie_run_kingdom_capture_context2_frame050.cpp", ], - "cookie_run_kingdom/cookie_run_kingdom_capture_context2.angledata.gz", + [ "cookie_run_kingdom/cookie_run_kingdom_capture_context2.angledata.gz" ], ], [ "disney_tsum_tsum", @@ -860,7 +860,7 @@ angle_restricted_traces = [ "disney_tsum_tsum/disney_tsum_tsum_capture_context3_frame099.cpp", "disney_tsum_tsum/disney_tsum_tsum_capture_context3_frame100.cpp", ], - "disney_tsum_tsum/disney_tsum_tsum_capture_context3.angledata.gz", + [ "disney_tsum_tsum/disney_tsum_tsum_capture_context3.angledata.gz" ], ], [ "dr_driving", @@ -917,7 +917,7 @@ angle_restricted_traces = [ "dr_driving/dr_driving_capture_context3_frame049.cpp", "dr_driving/dr_driving_capture_context3_frame050.cpp", ], - "dr_driving/dr_driving_capture_context3.angledata.gz", + [ "dr_driving/dr_driving_capture_context3.angledata.gz" ], ], [ "dragon_ball_legends", @@ -934,7 +934,7 @@ angle_restricted_traces = [ "dragon_ball_legends/dragon_ball_legends_capture_context1_frame009.cpp", "dragon_ball_legends/dragon_ball_legends_capture_context1_frame010.cpp", ], - "dragon_ball_legends/dragon_ball_legends_capture_context1.angledata.gz", + [ "dragon_ball_legends/dragon_ball_legends_capture_context1.angledata.gz" ], ], [ "dragon_raja", @@ -952,7 +952,7 @@ angle_restricted_traces = [ "dragon_raja/dragon_raja_capture_context1_frame010.cpp", "dragon_raja/dragon_raja_capture_context1_frame011.cpp", ], - "dragon_raja/dragon_raja_capture_context1.angledata.gz", + [ "dragon_raja/dragon_raja_capture_context1.angledata.gz" ], ], [ "efootball_pes_2021", @@ -969,7 +969,7 @@ angle_restricted_traces = [ "efootball_pes_2021/efootball_pes_2021_capture_context1_frame009.cpp", "efootball_pes_2021/efootball_pes_2021_capture_context1_frame010.cpp", ], - "efootball_pes_2021/efootball_pes_2021_capture_context1.angledata.gz", + [ "efootball_pes_2021/efootball_pes_2021_capture_context1.angledata.gz" ], ], [ "egypt_1500", @@ -987,7 +987,7 @@ angle_restricted_traces = [ "egypt_1500/egypt_1500_capture_context1_frame010.cpp", "egypt_1500/egypt_1500_capture_context1_frame011.cpp", ], - "egypt_1500/egypt_1500_capture_context1.angledata.gz", + [ "egypt_1500/egypt_1500_capture_context1.angledata.gz" ], ], [ "eight_ball_pool", @@ -1004,7 +1004,7 @@ angle_restricted_traces = [ "eight_ball_pool/eight_ball_pool_capture_context1_frame009.cpp", "eight_ball_pool/eight_ball_pool_capture_context1_frame010.cpp", ], - "eight_ball_pool/eight_ball_pool_capture_context1.angledata.gz", + [ "eight_ball_pool/eight_ball_pool_capture_context1.angledata.gz" ], ], [ "extreme_car_driving_simulator", @@ -1021,7 +1021,7 @@ angle_restricted_traces = [ "extreme_car_driving_simulator/extreme_car_driving_simulator_capture_context1_frame009.cpp", "extreme_car_driving_simulator/extreme_car_driving_simulator_capture_context1_frame010.cpp", ], - "extreme_car_driving_simulator/extreme_car_driving_simulator_capture_context1.angledata.gz", + [ "extreme_car_driving_simulator/extreme_car_driving_simulator_capture_context1.angledata.gz" ], ], [ "fallout_shelter_online", @@ -1038,7 +1038,7 @@ angle_restricted_traces = [ "fallout_shelter_online/fallout_shelter_online_capture_context1_frame009.cpp", "fallout_shelter_online/fallout_shelter_online_capture_context1_frame010.cpp", ], - "fallout_shelter_online/fallout_shelter_online_capture_context1.angledata.gz", + [ "fallout_shelter_online/fallout_shelter_online_capture_context1.angledata.gz" ], ], [ "farm_heroes_saga", @@ -1145,7 +1145,7 @@ angle_restricted_traces = [ "farm_heroes_saga/farm_heroes_saga_capture_context2_frame099.cpp", "farm_heroes_saga/farm_heroes_saga_capture_context2_frame100.cpp", ], - "farm_heroes_saga/farm_heroes_saga_capture_context2.angledata.gz", + [ "farm_heroes_saga/farm_heroes_saga_capture_context2.angledata.gz" ], ], [ "fate_grand_order", @@ -1162,7 +1162,7 @@ angle_restricted_traces = [ "fate_grand_order/fate_grand_order_capture_context1_frame009.cpp", "fate_grand_order/fate_grand_order_capture_context1_frame010.cpp", ], - "fate_grand_order/fate_grand_order_capture_context1.angledata.gz", + [ "fate_grand_order/fate_grand_order_capture_context1.angledata.gz" ], ], [ "fifa_mobile", @@ -1179,7 +1179,7 @@ angle_restricted_traces = [ "fifa_mobile/fifa_mobile_capture_context1_frame009.cpp", "fifa_mobile/fifa_mobile_capture_context1_frame010.cpp", ], - "fifa_mobile/fifa_mobile_capture_context1.angledata.gz", + [ "fifa_mobile/fifa_mobile_capture_context1.angledata.gz" ], ], [ "final_fantasy", @@ -1487,7 +1487,7 @@ angle_restricted_traces = [ "final_fantasy/final_fantasy_capture_context3_frame300.cpp", "final_fantasy/final_fantasy_frame001.cpp", ], - "final_fantasy/final_fantasy.angledata.gz", + [ "final_fantasy/final_fantasy.angledata.gz" ], ], [ "free_fire", @@ -1504,7 +1504,7 @@ angle_restricted_traces = [ "free_fire/free_fire_capture_context1_frame009.cpp", "free_fire/free_fire_capture_context1_frame010.cpp", ], - "free_fire/free_fire_capture_context1.angledata.gz", + [ "free_fire/free_fire_capture_context1.angledata.gz" ], ], [ "gardenscapes", @@ -1541,7 +1541,7 @@ angle_restricted_traces = [ "gardenscapes/gardenscapes_capture_context1_frame029.cpp", "gardenscapes/gardenscapes_capture_context1_frame030.cpp", ], - "gardenscapes/gardenscapes_capture_context1.angledata.gz", + [ "gardenscapes/gardenscapes_capture_context1.angledata.gz" ], ], [ "genshin_impact", @@ -1648,7 +1648,7 @@ angle_restricted_traces = [ "genshin_impact/genshin_impact_capture_context3_frame099.cpp", "genshin_impact/genshin_impact_capture_context3_frame100.cpp", ], - "genshin_impact/genshin_impact_capture_context3.angledata.gz", + [ "genshin_impact/genshin_impact_capture_context3.angledata.gz" ], ], [ "google_maps", @@ -1955,7 +1955,7 @@ angle_restricted_traces = [ "google_maps/google_maps_capture_context1_frame299.cpp", "google_maps/google_maps_capture_context1_frame300.cpp", ], - "google_maps/google_maps_capture_context1.angledata.gz", + [ "google_maps/google_maps_capture_context1.angledata.gz" ], ], [ "happy_color", @@ -1972,7 +1972,7 @@ angle_restricted_traces = [ "happy_color/happy_color_capture_context1_frame009.cpp", "happy_color/happy_color_capture_context1_frame010.cpp", ], - "happy_color/happy_color_capture_context1.angledata.gz", + [ "happy_color/happy_color_capture_context1.angledata.gz" ], ], [ "hay_day", @@ -1989,7 +1989,7 @@ angle_restricted_traces = [ "hay_day/hay_day_capture_context1_frame009.cpp", "hay_day/hay_day_capture_context1_frame010.cpp", ], - "hay_day/hay_day_capture_context1.angledata.gz", + [ "hay_day/hay_day_capture_context1.angledata.gz" ], ], [ "hearthstone", @@ -2006,7 +2006,7 @@ angle_restricted_traces = [ "hearthstone/hearthstone_capture_context1_frame009.cpp", "hearthstone/hearthstone_capture_context1_frame010.cpp", ], - "hearthstone/hearthstone_capture_context1.angledata.gz", + [ "hearthstone/hearthstone_capture_context1.angledata.gz" ], ], [ "higgs_domino_island", @@ -2043,7 +2043,7 @@ angle_restricted_traces = [ "higgs_domino_island/higgs_domino_island_capture_context2_frame029.cpp", "higgs_domino_island/higgs_domino_island_capture_context2_frame030.cpp", ], - "higgs_domino_island/higgs_domino_island_capture_context2.angledata.gz", + [ "higgs_domino_island/higgs_domino_island_capture_context2.angledata.gz" ], ], [ "hill_climb_racing", @@ -2060,7 +2060,7 @@ angle_restricted_traces = [ "hill_climb_racing/hill_climb_racing_capture_context1_frame009.cpp", "hill_climb_racing/hill_climb_racing_capture_context1_frame010.cpp", ], - "hill_climb_racing/hill_climb_racing_capture_context1.angledata.gz", + [ "hill_climb_racing/hill_climb_racing_capture_context1.angledata.gz" ], ], [ "homescapes", @@ -2077,7 +2077,7 @@ angle_restricted_traces = [ "homescapes/homescapes_capture_context1_frame009.cpp", "homescapes/homescapes_capture_context1_frame010.cpp", ], - "homescapes/homescapes_capture_context1.angledata.gz", + [ "homescapes/homescapes_capture_context1.angledata.gz" ], ], [ "idle_heroes", @@ -3083,7 +3083,7 @@ angle_restricted_traces = [ "idle_heroes/idle_heroes_capture_context2_frame998.cpp", "idle_heroes/idle_heroes_capture_context2_frame999.cpp", ], - "idle_heroes/idle_heroes_capture_context2.angledata.gz", + [ "idle_heroes/idle_heroes_capture_context2.angledata.gz" ], ], [ "junes_journey", @@ -3100,7 +3100,7 @@ angle_restricted_traces = [ "junes_journey/junes_journey_capture_context1_frame009.cpp", "junes_journey/junes_journey_capture_context1_frame010.cpp", ], - "junes_journey/junes_journey_capture_context1.angledata.gz", + [ "junes_journey/junes_journey_capture_context1.angledata.gz" ], ], [ "kartrider_rush", @@ -3117,7 +3117,7 @@ angle_restricted_traces = [ "kartrider_rush/kartrider_rush_capture_context1_frame009.cpp", "kartrider_rush/kartrider_rush_capture_context1_frame010.cpp", ], - "kartrider_rush/kartrider_rush_capture_context1.angledata.gz", + [ "kartrider_rush/kartrider_rush_capture_context1.angledata.gz" ], ], [ "klondike_adventures", @@ -3134,7 +3134,7 @@ angle_restricted_traces = [ "klondike_adventures/klondike_adventures_capture_context1_frame009.cpp", "klondike_adventures/klondike_adventures_capture_context1_frame010.cpp", ], - "klondike_adventures/klondike_adventures_capture_context1.angledata.gz", + [ "klondike_adventures/klondike_adventures_capture_context1.angledata.gz" ], ], [ "league_of_legends_wild_rift", @@ -3151,7 +3151,7 @@ angle_restricted_traces = [ "league_of_legends_wild_rift/league_of_legends_wild_rift_capture_context1_frame009.cpp", "league_of_legends_wild_rift/league_of_legends_wild_rift_capture_context1_frame010.cpp", ], - "league_of_legends_wild_rift/league_of_legends_wild_rift_capture_context1.angledata.gz", + [ "league_of_legends_wild_rift/league_of_legends_wild_rift_capture_context1.angledata.gz" ], ], [ "lego_legacy", @@ -3168,7 +3168,7 @@ angle_restricted_traces = [ "lego_legacy/lego_legacy_capture_context1_frame009.cpp", "lego_legacy/lego_legacy_capture_context1_frame010.cpp", ], - "lego_legacy/lego_legacy_capture_context1.angledata.gz", + [ "lego_legacy/lego_legacy_capture_context1.angledata.gz" ], ], [ "lineage_m", @@ -3185,7 +3185,7 @@ angle_restricted_traces = [ "lineage_m/lineage_m_capture_context1_frame009.cpp", "lineage_m/lineage_m_capture_context1_frame010.cpp", ], - "lineage_m/lineage_m_capture_context1.angledata.gz", + [ "lineage_m/lineage_m_capture_context1.angledata.gz" ], ], [ "ludo_king", @@ -3222,7 +3222,7 @@ angle_restricted_traces = [ "ludo_king/ludo_king_capture_context1_frame029.cpp", "ludo_king/ludo_king_capture_context1_frame030.cpp", ], - "ludo_king/ludo_king_capture_context1.angledata.gz", + [ "ludo_king/ludo_king_capture_context1.angledata.gz" ], ], [ "magic_tiles_3", @@ -3239,7 +3239,7 @@ angle_restricted_traces = [ "magic_tiles_3/magic_tiles_3_capture_context1_frame009.cpp", "magic_tiles_3/magic_tiles_3_capture_context1_frame010.cpp", ], - "magic_tiles_3/magic_tiles_3_capture_context1.angledata.gz", + [ "magic_tiles_3/magic_tiles_3_capture_context1.angledata.gz" ], ], [ "manhattan_10", @@ -3257,7 +3257,7 @@ angle_restricted_traces = [ "manhattan_10/manhattan_10_capture_context1_frame010.cpp", "manhattan_10/manhattan_10_capture_context1_frame011.cpp", ], - "manhattan_10/manhattan_10_capture_context1.angledata.gz", + [ "manhattan_10/manhattan_10_capture_context1.angledata.gz" ], ], [ "manhattan_31", @@ -3364,7 +3364,7 @@ angle_restricted_traces = [ "manhattan_31/manhattan_31_capture_context1_frame099.cpp", "manhattan_31/manhattan_31_capture_context1_frame100.cpp", ], - "manhattan_31/manhattan_31_capture_context1.angledata.gz", + [ "manhattan_31/manhattan_31_capture_context1.angledata.gz" ], ], [ "mario_kart_tour", @@ -3471,7 +3471,7 @@ angle_restricted_traces = [ "mario_kart_tour/mario_kart_tour_capture_context1_frame099.cpp", "mario_kart_tour/mario_kart_tour_capture_context1_frame100.cpp", ], - "mario_kart_tour/mario_kart_tour_capture_context1.angledata.gz", + [ "mario_kart_tour/mario_kart_tour_capture_context1.angledata.gz" ], ], [ "marvel_contest_of_champions", @@ -3488,7 +3488,7 @@ angle_restricted_traces = [ "marvel_contest_of_champions/marvel_contest_of_champions_capture_context1_frame009.cpp", "marvel_contest_of_champions/marvel_contest_of_champions_capture_context1_frame010.cpp", ], - "marvel_contest_of_champions/marvel_contest_of_champions_capture_context1.angledata.gz", + [ "marvel_contest_of_champions/marvel_contest_of_champions_capture_context1.angledata.gz" ], ], [ "messenger_lite", @@ -3505,7 +3505,7 @@ angle_restricted_traces = [ "messenger_lite/messenger_lite_capture_context1_frame009.cpp", "messenger_lite/messenger_lite_capture_context1_frame010.cpp", ], - "messenger_lite/messenger_lite_capture_context1.angledata.gz", + [ "messenger_lite/messenger_lite_capture_context1.angledata.gz" ], ], [ "minecraft", @@ -3522,7 +3522,7 @@ angle_restricted_traces = [ "minecraft/minecraft_capture_context1_frame009.cpp", "minecraft/minecraft_capture_context1_frame010.cpp", ], - "minecraft/minecraft_capture_context1.angledata.gz", + [ "minecraft/minecraft_capture_context1.angledata.gz" ], ], [ "mobile_legends", @@ -3539,7 +3539,7 @@ angle_restricted_traces = [ "mobile_legends/mobile_legends_capture_context1_frame009.cpp", "mobile_legends/mobile_legends_capture_context1_frame010.cpp", ], - "mobile_legends/mobile_legends_capture_context1.angledata.gz", + [ "mobile_legends/mobile_legends_capture_context1.angledata.gz" ], ], [ "nba2k20_800", @@ -3557,7 +3557,7 @@ angle_restricted_traces = [ "nba2k20_800/nba2k20_800_capture_context1_frame010.cpp", "nba2k20_800/nba2k20_800_capture_context1_frame011.cpp", ], - "nba2k20_800/nba2k20_800_capture_context1.angledata.gz", + [ "nba2k20_800/nba2k20_800_capture_context1.angledata.gz" ], ], [ "one_punch_man", @@ -3574,7 +3574,7 @@ angle_restricted_traces = [ "one_punch_man/one_punch_man_capture_context1_frame009.cpp", "one_punch_man/one_punch_man_capture_context1_frame010.cpp", ], - "one_punch_man/one_punch_man_capture_context1.angledata.gz", + [ "one_punch_man/one_punch_man_capture_context1.angledata.gz" ], ], [ "plants_vs_zombies_2", @@ -3591,7 +3591,7 @@ angle_restricted_traces = [ "plants_vs_zombies_2/plants_vs_zombies_2_capture_context1_frame009.cpp", "plants_vs_zombies_2/plants_vs_zombies_2_capture_context1_frame010.cpp", ], - "plants_vs_zombies_2/plants_vs_zombies_2_capture_context1.angledata.gz", + [ "plants_vs_zombies_2/plants_vs_zombies_2_capture_context1.angledata.gz" ], ], [ "pokemon_go", @@ -3698,7 +3698,7 @@ angle_restricted_traces = [ "pokemon_go/pokemon_go_capture_context2_frame099.cpp", "pokemon_go/pokemon_go_capture_context2_frame100.cpp", ], - "pokemon_go/pokemon_go_capture_context2.angledata.gz", + [ "pokemon_go/pokemon_go_capture_context2.angledata.gz" ], ], [ "professional_baseball_spirits", @@ -3905,7 +3905,7 @@ angle_restricted_traces = [ "professional_baseball_spirits/professional_baseball_spirits_capture_context1_frame199.cpp", "professional_baseball_spirits/professional_baseball_spirits_capture_context1_frame200.cpp", ], - "professional_baseball_spirits/professional_baseball_spirits_capture_context1.angledata.gz", + [ "professional_baseball_spirits/professional_baseball_spirits_capture_context1.angledata.gz" ], ], [ "pubg_mobile_battle_royale", @@ -4014,7 +4014,7 @@ angle_restricted_traces = [ "pubg_mobile_battle_royale/pubg_mobile_battle_royale_capture_context5_frame001.cpp", "pubg_mobile_battle_royale/pubg_mobile_battle_royale_frame001.cpp", ], - "pubg_mobile_battle_royale/pubg_mobile_battle_royale.angledata.gz", + [ "pubg_mobile_battle_royale/pubg_mobile_battle_royale.angledata.gz" ], ], [ "pubg_mobile_lite", @@ -4031,7 +4031,7 @@ angle_restricted_traces = [ "pubg_mobile_lite/pubg_mobile_lite_capture_context1_frame009.cpp", "pubg_mobile_lite/pubg_mobile_lite_capture_context1_frame010.cpp", ], - "pubg_mobile_lite/pubg_mobile_lite_capture_context1.angledata.gz", + [ "pubg_mobile_lite/pubg_mobile_lite_capture_context1.angledata.gz" ], ], [ "pubg_mobile_skydive", @@ -4140,7 +4140,7 @@ angle_restricted_traces = [ "pubg_mobile_skydive/pubg_mobile_skydive_capture_context5_frame001.cpp", "pubg_mobile_skydive/pubg_mobile_skydive_frame001.cpp", ], - "pubg_mobile_skydive/pubg_mobile_skydive.angledata.gz", + [ "pubg_mobile_skydive/pubg_mobile_skydive.angledata.gz" ], ], [ "ragnarok_m_eternal_love", @@ -4157,7 +4157,7 @@ angle_restricted_traces = [ "ragnarok_m_eternal_love/ragnarok_m_eternal_love_capture_context1_frame009.cpp", "ragnarok_m_eternal_love/ragnarok_m_eternal_love_capture_context1_frame010.cpp", ], - "ragnarok_m_eternal_love/ragnarok_m_eternal_love_capture_context1.angledata.gz", + [ "ragnarok_m_eternal_love/ragnarok_m_eternal_love_capture_context1.angledata.gz" ], ], [ "raid_shadow_legends", @@ -4174,7 +4174,7 @@ angle_restricted_traces = [ "raid_shadow_legends/raid_shadow_legends_capture_context1_frame009.cpp", "raid_shadow_legends/raid_shadow_legends_capture_context1_frame010.cpp", ], - "raid_shadow_legends/raid_shadow_legends_capture_context1.angledata.gz", + [ "raid_shadow_legends/raid_shadow_legends_capture_context1.angledata.gz" ], ], [ "real_commando_secret_mission", @@ -4191,7 +4191,7 @@ angle_restricted_traces = [ "real_commando_secret_mission/real_commando_secret_mission_capture_context1_frame009.cpp", "real_commando_secret_mission/real_commando_secret_mission_capture_context1_frame010.cpp", ], - "real_commando_secret_mission/real_commando_secret_mission_capture_context1.angledata.gz", + [ "real_commando_secret_mission/real_commando_secret_mission_capture_context1.angledata.gz" ], ], [ "real_cricket_20", @@ -4208,7 +4208,7 @@ angle_restricted_traces = [ "real_cricket_20/real_cricket_20_capture_context1_frame009.cpp", "real_cricket_20/real_cricket_20_capture_context1_frame010.cpp", ], - "real_cricket_20/real_cricket_20_capture_context1.angledata.gz", + [ "real_cricket_20/real_cricket_20_capture_context1.angledata.gz" ], ], [ "real_gangster_crime", @@ -4225,7 +4225,7 @@ angle_restricted_traces = [ "real_gangster_crime/real_gangster_crime_capture_context1_frame009.cpp", "real_gangster_crime/real_gangster_crime_capture_context1_frame010.cpp", ], - "real_gangster_crime/real_gangster_crime_capture_context1.angledata.gz", + [ "real_gangster_crime/real_gangster_crime_capture_context1.angledata.gz" ], ], [ "rise_of_kingdoms", @@ -4242,7 +4242,7 @@ angle_restricted_traces = [ "rise_of_kingdoms/rise_of_kingdoms_capture_context1_frame009.cpp", "rise_of_kingdoms/rise_of_kingdoms_capture_context1_frame010.cpp", ], - "rise_of_kingdoms/rise_of_kingdoms_capture_context1.angledata.gz", + [ "rise_of_kingdoms/rise_of_kingdoms_capture_context1.angledata.gz" ], ], [ "romancing_saga", @@ -4259,7 +4259,7 @@ angle_restricted_traces = [ "romancing_saga/romancing_saga_capture_context1_frame009.cpp", "romancing_saga/romancing_saga_capture_context1_frame010.cpp", ], - "romancing_saga/romancing_saga_capture_context1.angledata.gz", + [ "romancing_saga/romancing_saga_capture_context1.angledata.gz" ], ], [ "rope_hero_vice_town", @@ -4276,7 +4276,7 @@ angle_restricted_traces = [ "rope_hero_vice_town/rope_hero_vice_town_capture_context1_frame009.cpp", "rope_hero_vice_town/rope_hero_vice_town_capture_context1_frame010.cpp", ], - "rope_hero_vice_town/rope_hero_vice_town_capture_context1.angledata.gz", + [ "rope_hero_vice_town/rope_hero_vice_town_capture_context1.angledata.gz" ], ], [ "saint_seiya_awakening", @@ -4293,7 +4293,7 @@ angle_restricted_traces = [ "saint_seiya_awakening/saint_seiya_awakening_capture_context1_frame009.cpp", "saint_seiya_awakening/saint_seiya_awakening_capture_context1_frame010.cpp", ], - "saint_seiya_awakening/saint_seiya_awakening_capture_context1.angledata.gz", + [ "saint_seiya_awakening/saint_seiya_awakening_capture_context1.angledata.gz" ], ], [ "sakura_school_simulator", @@ -4330,7 +4330,7 @@ angle_restricted_traces = [ "sakura_school_simulator/sakura_school_simulator_capture_context2_frame029.cpp", "sakura_school_simulator/sakura_school_simulator_capture_context2_frame030.cpp", ], - "sakura_school_simulator/sakura_school_simulator_capture_context2.angledata.gz", + [ "sakura_school_simulator/sakura_school_simulator_capture_context2.angledata.gz" ], ], [ "scrabble_go", @@ -4369,7 +4369,7 @@ angle_restricted_traces = [ "scrabble_go/scrabble_go_capture_context2_frame031.cpp", "scrabble_go/scrabble_go_capture_shared.cpp", ], - "scrabble_go/scrabble_go.angledata.gz", + [ "scrabble_go/scrabble_go.angledata.gz" ], ], [ "shadow_fight_2", @@ -4386,7 +4386,7 @@ angle_restricted_traces = [ "shadow_fight_2/shadow_fight_2_capture_context1_frame009.cpp", "shadow_fight_2/shadow_fight_2_capture_context1_frame010.cpp", ], - "shadow_fight_2/shadow_fight_2_capture_context1.angledata.gz", + [ "shadow_fight_2/shadow_fight_2_capture_context1.angledata.gz" ], ], [ "slingshot_test1", @@ -4593,7 +4593,7 @@ angle_restricted_traces = [ "slingshot_test1/slingshot_test1_capture_context2_frame199.cpp", "slingshot_test1/slingshot_test1_capture_context2_frame200.cpp", ], - "slingshot_test1/slingshot_test1_capture_context2.angledata.gz", + [ "slingshot_test1/slingshot_test1_capture_context2.angledata.gz" ], ], [ "slingshot_test2", @@ -4800,7 +4800,7 @@ angle_restricted_traces = [ "slingshot_test2/slingshot_test2_capture_context2_frame199.cpp", "slingshot_test2/slingshot_test2_capture_context2_frame200.cpp", ], - "slingshot_test2/slingshot_test2_capture_context2.angledata.gz", + [ "slingshot_test2/slingshot_test2_capture_context2.angledata.gz" ], ], [ "sniper_3d", @@ -4817,7 +4817,7 @@ angle_restricted_traces = [ "sniper_3d/sniper_3d_capture_context1_frame009.cpp", "sniper_3d/sniper_3d_capture_context1_frame010.cpp", ], - "sniper_3d/sniper_3d_capture_context1.angledata.gz", + [ "sniper_3d/sniper_3d_capture_context1.angledata.gz" ], ], [ "sonic_the_hedgehog", @@ -4875,7 +4875,7 @@ angle_restricted_traces = [ "sonic_the_hedgehog/sonic_the_hedgehog_capture_context2_frame050.cpp", "sonic_the_hedgehog/sonic_the_hedgehog_capture_shared.cpp", ], - "sonic_the_hedgehog/sonic_the_hedgehog.angledata.gz", + [ "sonic_the_hedgehog/sonic_the_hedgehog.angledata.gz" ], ], [ "standoff_2", @@ -4892,7 +4892,7 @@ angle_restricted_traces = [ "standoff_2/standoff_2_capture_context1_frame009.cpp", "standoff_2/standoff_2_capture_context1_frame010.cpp", ], - "standoff_2/standoff_2_capture_context1.angledata.gz", + [ "standoff_2/standoff_2_capture_context1.angledata.gz" ], ], [ "subway_princess_runner", @@ -4909,7 +4909,7 @@ angle_restricted_traces = [ "subway_princess_runner/subway_princess_runner_capture_context2_frame009.cpp", "subway_princess_runner/subway_princess_runner_capture_context2_frame010.cpp", ], - "subway_princess_runner/subway_princess_runner_capture_context2.angledata.gz", + [ "subway_princess_runner/subway_princess_runner_capture_context2.angledata.gz" ], ], [ "subway_surfers", @@ -4926,7 +4926,7 @@ angle_restricted_traces = [ "subway_surfers/subway_surfers_capture_context1_frame009.cpp", "subway_surfers/subway_surfers_capture_context1_frame010.cpp", ], - "subway_surfers/subway_surfers_capture_context1.angledata.gz", + [ "subway_surfers/subway_surfers_capture_context1.angledata.gz" ], ], [ "summoners_war", @@ -4983,7 +4983,7 @@ angle_restricted_traces = [ "summoners_war/summoners_war_capture_context2_frame049.cpp", "summoners_war/summoners_war_capture_context2_frame050.cpp", ], - "summoners_war/summoners_war_capture_context2.angledata.gz", + [ "summoners_war/summoners_war_capture_context2.angledata.gz" ], ], [ "talking_tom_hero_dash", @@ -5000,7 +5000,7 @@ angle_restricted_traces = [ "talking_tom_hero_dash/talking_tom_hero_dash_capture_context1_frame009.cpp", "talking_tom_hero_dash/talking_tom_hero_dash_capture_context1_frame010.cpp", ], - "talking_tom_hero_dash/talking_tom_hero_dash_capture_context1.angledata.gz", + [ "talking_tom_hero_dash/talking_tom_hero_dash_capture_context1.angledata.gz" ], ], [ "temple_run_2", @@ -5017,7 +5017,7 @@ angle_restricted_traces = [ "temple_run_2/temple_run_2_capture_context1_frame009.cpp", "temple_run_2/temple_run_2_capture_context1_frame010.cpp", ], - "temple_run_2/temple_run_2_capture_context1.angledata.gz", + [ "temple_run_2/temple_run_2_capture_context1.angledata.gz" ], ], [ "temple_run_300", @@ -5035,7 +5035,7 @@ angle_restricted_traces = [ "temple_run_300/temple_run_300_capture_context1_frame010.cpp", "temple_run_300/temple_run_300_capture_context1_frame011.cpp", ], - "temple_run_300/temple_run_300_capture_context1.angledata.gz", + [ "temple_run_300/temple_run_300_capture_context1.angledata.gz" ], ], [ "toon_blast", @@ -5142,7 +5142,7 @@ angle_restricted_traces = [ "toon_blast/toon_blast_capture_context2_frame099.cpp", "toon_blast/toon_blast_capture_context2_frame100.cpp", ], - "toon_blast/toon_blast_capture_context2.angledata.gz", + [ "toon_blast/toon_blast_capture_context2.angledata.gz" ], ], [ "township", @@ -5159,7 +5159,7 @@ angle_restricted_traces = [ "township/township_capture_context2_frame009.cpp", "township/township_capture_context2_frame010.cpp", ], - "township/township_capture_context2.angledata.gz", + [ "township/township_capture_context2.angledata.gz" ], ], [ "trex_200", @@ -5177,7 +5177,7 @@ angle_restricted_traces = [ "trex_200/trex_200_capture_context1_frame010.cpp", "trex_200/trex_200_capture_context1_frame011.cpp", ], - "trex_200/trex_200_capture_context1.angledata.gz", + [ "trex_200/trex_200_capture_context1.angledata.gz" ], ], [ "whatsapp", @@ -5364,7 +5364,7 @@ angle_restricted_traces = [ "whatsapp/whatsapp_capture_context1_frame179.cpp", "whatsapp/whatsapp_capture_context1_frame180.cpp", ], - "whatsapp/whatsapp_capture_context1.angledata.gz", + [ "whatsapp/whatsapp_capture_context1.angledata.gz" ], ], [ "words_with_friends_2", @@ -5402,7 +5402,7 @@ angle_restricted_traces = [ "words_with_friends_2/words_with_friends_2_capture_context1_frame030.cpp", "words_with_friends_2/words_with_friends_2_capture_shared.cpp", ], - "words_with_friends_2/words_with_friends_2.angledata.gz", + [ "words_with_friends_2/words_with_friends_2.angledata.gz" ], ], [ "wordscapes", @@ -5440,7 +5440,7 @@ angle_restricted_traces = [ "wordscapes/wordscapes_capture_context3_frame030.cpp", "wordscapes/wordscapes_capture_shared.cpp", ], - "wordscapes/wordscapes.angledata.gz", + [ "wordscapes/wordscapes.angledata.gz" ], ], [ "world_of_kings", @@ -5508,7 +5508,7 @@ angle_restricted_traces = [ "world_of_kings/world_of_kings_capture_context3_frame060.cpp", "world_of_kings/world_of_kings_capture_shared.cpp", ], - "world_of_kings/world_of_kings.angledata.gz", + [ "world_of_kings/world_of_kings.angledata.gz" ], ], [ "world_of_tanks_blitz", @@ -5525,7 +5525,7 @@ angle_restricted_traces = [ "world_of_tanks_blitz/world_of_tanks_blitz_capture_context1_frame009.cpp", "world_of_tanks_blitz/world_of_tanks_blitz_capture_context1_frame010.cpp", ], - "world_of_tanks_blitz/world_of_tanks_blitz_capture_context1.angledata.gz", + [ "world_of_tanks_blitz/world_of_tanks_blitz_capture_context1.angledata.gz" ], ], [ "world_war_doh", @@ -5542,7 +5542,7 @@ angle_restricted_traces = [ "world_war_doh/world_war_doh_capture_context1_frame009.cpp", "world_war_doh/world_war_doh_capture_context1_frame010.cpp", ], - "world_war_doh/world_war_doh_capture_context1.angledata.gz", + [ "world_war_doh/world_war_doh_capture_context1.angledata.gz" ], ], [ "worms_zone_io", @@ -5559,6 +5559,6 @@ angle_restricted_traces = [ "worms_zone_io/worms_zone_io_capture_context1_frame009.cpp", "worms_zone_io/worms_zone_io_capture_context1_frame010.cpp", ], - "worms_zone_io/worms_zone_io_capture_context1.angledata.gz", + [ "worms_zone_io/worms_zone_io_capture_context1.angledata.gz" ], ], ] diff --git a/src/tests/restricted_traces/restricted_traces_autogen.h b/src/tests/restricted_traces/restricted_traces_autogen.h index a8a5e6407..90fc217d9 100644 --- a/src/tests/restricted_traces/restricted_traces_autogen.h +++ b/src/tests/restricted_traces/restricted_traces_autogen.h @@ -23,11 +23,8 @@ using GenericProc = void (*)(); using LoadProc = GenericProc(KHRONOS_APIENTRY *)(const char *); ANGLE_TRACE_LOADER_EXPORT void LoadEGL(LoadProc loadProc); ANGLE_TRACE_LOADER_EXPORT void LoadGLES(LoadProc loadProc); -} // namespace trace_angle -namespace angle -{ -static constexpr size_t kTraceInfoMaxNameLen = 32; +static constexpr size_t kTraceInfoMaxNameLen = 128; static constexpr uint32_t kDefaultReplayContextClientMajorVersion = 3; static constexpr uint32_t kDefaultReplayContextClientMinorVersion = 1; @@ -35,17 +32,30 @@ static constexpr uint32_t kDefaultReplayDrawSurfaceColorSpace = EGL_COLORSPA struct TraceInfo { + char name[kTraceInfoMaxNameLen]; uint32_t contextClientMajorVersion; uint32_t contextClientMinorVersion; - uint32_t startFrame; - uint32_t endFrame; + uint32_t frameEnd; + uint32_t frameStart; uint32_t drawSurfaceWidth; uint32_t drawSurfaceHeight; uint32_t drawSurfaceColorSpace; - char name[kTraceInfoMaxNameLen]; + uint32_t displayPlatformType; + uint32_t displayDeviceType; + int configRedBits; + int configBlueBits; + int configGreenBits; + int configAlphaBits; + int configDepthBits; + int configStencilBits; + bool isBinaryDataCompressed; + bool areClientArraysEnabled; + bool isBindGeneratesResourcesEnabled; + bool isWebGLCompatibilityEnabled; + bool isRobustResourceInitEnabled; }; ANGLE_TRACE_EXPORT const TraceInfo &GetTraceInfo(const char *traceName); -} // namespace angle +} // namespace trace_angle #endif // ANGLE_RESTRICTED_TRACES_AUTOGEN_H_ diff --git a/util/BUILD.gn b/util/BUILD.gn index e9c85751c..d2019244f 100644 --- a/util/BUILD.gn +++ b/util/BUILD.gn @@ -15,7 +15,6 @@ _util_sources = [ "OSWindow.cpp", "OSWindow.h", "com_utils.h", - "frame_capture_test_utils.h", "geometry_utils.cpp", "geometry_utils.h", "keyboard.h", @@ -154,6 +153,21 @@ angle_source_set("angle_util_loader") { ] } +if (angle_has_rapidjson) { + angle_source_set("angle_frame_capture_test_utils") { + testonly = true + sources = [ + "capture/frame_capture_test_utils.cpp", + "capture/frame_capture_test_utils.h", + ] + deps = [ + "$angle_root:angle_common", + "$angle_root:angle_compression", + "$angle_root/third_party/rapidjson", + ] + } +} + config("angle_util_config") { # Force users to include "util/header.h" instead of just "header.h". include_dirs = [ ".." ] diff --git a/util/capture/frame_capture_test_utils.cpp b/util/capture/frame_capture_test_utils.cpp new file mode 100644 index 000000000..afb6e6e23 --- /dev/null +++ b/util/capture/frame_capture_test_utils.cpp @@ -0,0 +1,116 @@ +// +// Copyright 2021 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// frame_capture_test_utils: +// Helper functions for capture and replay of traces. +// + +#include "frame_capture_test_utils.h" + +#include "common/string_utils.h" + +#include <rapidjson/document.h> +#include <rapidjson/istreamwrapper.h> +#include <fstream> + +namespace angle +{ +namespace +{ +bool LoadJSONFromFile(const std::string &fileName, rapidjson::Document *doc) +{ + std::ifstream ifs(fileName); + if (!ifs.is_open()) + { + return false; + } + + rapidjson::IStreamWrapper inWrapper(ifs); + doc->ParseStream(inWrapper); + return !doc->HasParseError(); +} +} // namespace + +bool LoadTraceNamesFromJSON(const std::string jsonFilePath, std::vector<std::string> *namesOut) +{ + rapidjson::Document doc; + if (!LoadJSONFromFile(jsonFilePath, &doc)) + { + return false; + } + + if (!doc.IsObject() || !doc.HasMember("traces") || !doc["traces"].IsArray()) + { + return false; + } + + // Read trace json into a list of trace names. + std::vector<std::string> traces; + + rapidjson::Document::Array traceArray = doc["traces"].GetArray(); + for (rapidjson::SizeType arrayIndex = 0; arrayIndex < traceArray.Size(); ++arrayIndex) + { + const rapidjson::Document::ValueType &arrayElement = traceArray[arrayIndex]; + + if (!arrayElement.IsString()) + { + return false; + } + + std::vector<std::string> traceAndVersion; + angle::SplitStringAlongWhitespace(arrayElement.GetString(), &traceAndVersion); + traces.push_back(traceAndVersion[0]); + } + + *namesOut = std::move(traces); + return true; +} + +bool LoadTraceInfoFromJSON(const std::string &traceName, + const std::string &traceJsonPath, + TraceInfo *traceInfoOut) +{ + rapidjson::Document doc; + if (!LoadJSONFromFile(traceJsonPath, &doc)) + { + return false; + } + + if (!doc.IsObject() || !doc.HasMember("TraceMetadata")) + { + return false; + } + + const rapidjson::Document::Object &meta = doc["TraceMetadata"].GetObject(); + + strncpy(traceInfoOut->name, traceName.c_str(), kTraceInfoMaxNameLen); + traceInfoOut->contextClientMajorVersion = meta["ContextClientMajorVersion"].GetInt(); + traceInfoOut->contextClientMinorVersion = meta["ContextClientMinorVersion"].GetInt(); + traceInfoOut->frameEnd = meta["FrameEnd"].GetInt(); + traceInfoOut->frameStart = meta["FrameStart"].GetInt(); + traceInfoOut->drawSurfaceHeight = meta["DrawSurfaceHeight"].GetInt(); + traceInfoOut->drawSurfaceWidth = meta["DrawSurfaceWidth"].GetInt(); + traceInfoOut->drawSurfaceColorSpace = meta["DrawSurfaceColorSpace"].GetInt(); + + traceInfoOut->displayPlatformType = meta["DisplayPlatformType"].GetInt(); + traceInfoOut->displayDeviceType = meta["DisplayDeviceType"].GetInt(); + + traceInfoOut->configRedBits = meta["ConfigRedBits"].GetInt(); + traceInfoOut->configGreenBits = meta["ConfigGreenBits"].GetInt(); + traceInfoOut->configBlueBits = meta["ConfigBlueBits"].GetInt(); + traceInfoOut->configAlphaBits = meta["ConfigAlphaBits"].GetInt(); + traceInfoOut->configDepthBits = meta["ConfigDepthBits"].GetInt(); + traceInfoOut->configStencilBits = meta["ConfigStencilBits"].GetInt(); + + traceInfoOut->isBinaryDataCompressed = meta["IsBinaryDataCompressed"].GetBool(); + traceInfoOut->areClientArraysEnabled = meta["AreClientArraysEnabled"].GetBool(); + traceInfoOut->isBindGeneratesResourcesEnabled = + meta["IsBindGeneratesResourcesEnabled"].GetBool(); + traceInfoOut->isWebGLCompatibilityEnabled = meta["IsWebGLCompatibilityEnabled"].GetBool(); + traceInfoOut->isRobustResourceInitEnabled = meta["IsRobustResourceInitEnabled"].GetBool(); + + return true; +} +} // namespace angle diff --git a/util/frame_capture_test_utils.h b/util/capture/frame_capture_test_utils.h index 0d7c24d9b..2c4c58121 100644 --- a/util/frame_capture_test_utils.h +++ b/util/capture/frame_capture_test_utils.h @@ -7,8 +7,8 @@ // Helper functions for capture and replay of traces. // -#ifndef UTIL_FRAME_CAPTURE_TEST_UTILS_H_ -#define UTIL_FRAME_CAPTURE_TEST_UTILS_H_ +#ifndef UTIL_CAPTURE_FRAME_CAPTURE_TEST_UTILS_H_ +#define UTIL_CAPTURE_FRAME_CAPTURE_TEST_UTILS_H_ #include <iostream> #include <memory> @@ -17,6 +17,7 @@ #include <vector> #include "common/angleutils.h" +#include "common/debug.h" #include "common/system_utils.h" #define USE_SYSTEM_ZLIB @@ -81,7 +82,10 @@ class TraceLibrary mTraceLibrary.reset(OpenSharedLibrary(traceName.c_str(), SearchType::ModuleDir)); } - bool valid() const { return mTraceLibrary != nullptr; } + bool valid() const + { + return (mTraceLibrary != nullptr) && (mTraceLibrary->getNative() != nullptr); + } void setBinaryDataDir(const char *dataDir) { @@ -129,6 +133,37 @@ class TraceLibrary std::unique_ptr<Library> mTraceLibrary; }; +static constexpr size_t kTraceInfoMaxNameLen = 128; + +struct TraceInfo +{ + char name[kTraceInfoMaxNameLen]; + uint32_t contextClientMajorVersion; + uint32_t contextClientMinorVersion; + uint32_t frameStart; + uint32_t frameEnd; + uint32_t drawSurfaceWidth; + uint32_t drawSurfaceHeight; + uint32_t drawSurfaceColorSpace; + uint32_t displayPlatformType; + uint32_t displayDeviceType; + int configRedBits; + int configBlueBits; + int configGreenBits; + int configAlphaBits; + int configDepthBits; + int configStencilBits; + bool isBinaryDataCompressed; + bool areClientArraysEnabled; + bool isBindGeneratesResourcesEnabled; + bool isWebGLCompatibilityEnabled; + bool isRobustResourceInitEnabled; +}; + +bool LoadTraceNamesFromJSON(const std::string jsonFilePath, std::vector<std::string> *namesOut); +bool LoadTraceInfoFromJSON(const std::string &traceName, + const std::string &traceJsonPath, + TraceInfo *traceInfoOut); } // namespace angle -#endif // UTIL_FRAME_CAPTURE_TEST_UTILS_H_ +#endif // UTIL_CAPTURE_FRAME_CAPTURE_TEST_UTILS_H_ |