Commit 4fa75b5c by Jamie Madill Committed by Commit Bot

Move restricted trace functions to cpp file.

This is a refactoring change only. It will facilitate moving these functions to a shared library. A shared library will allow us to more easily override GL functions with an interception layer. The intercept layer will allow us to do emulation for features like offscreen tests. Bug: angleproject:4845 Change-Id: I0e00c0c22a26f1bb8faec30a825c71953033f8a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2305039 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com>
parent 23211585
......@@ -6,15 +6,17 @@
"src/tests/perf_tests/restricted_traces/egypt_1500.tar.gz.sha1":
"e675648c5b16fc52077998621e6300ba",
"src/tests/perf_tests/restricted_traces/gen_restricted_traces.py":
"aa5043eaa7ba7d620ff2a3b40d67bae2",
"015c2f50f94cd1ff295b2320d0b1c644",
"src/tests/perf_tests/restricted_traces/manhattan_10.tar.gz.sha1":
"7f5e3e8b4d7ec07232c54d41964006ea",
"src/tests/perf_tests/restricted_traces/restricted_traces.json":
"de1d1c2086bd4f5249f5bdbdf0d2a854",
"src/tests/perf_tests/restricted_traces/restricted_traces_autogen.cpp":
"17e146f0d8a17a002587d5c26a0db008",
"src/tests/perf_tests/restricted_traces/restricted_traces_autogen.gni":
"25de059705d29d797e246aae027498ec",
"src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h":
"68a11667d674549018cf06e1a759c383",
"78cd1e872ef05e05330eb481f800739d",
"src/tests/perf_tests/restricted_traces/subway_surfer_500.tar.gz.sha1":
"a47a797dd227f5025439b47cee80dbc9",
"src/tests/perf_tests/restricted_traces/temple_run_300.tar.gz.sha1":
......
......@@ -293,6 +293,7 @@ if (is_win || is_linux || is_android || is_mac || is_fuchsia) {
import("perf_tests/restricted_traces/restricted_traces_autogen.gni")
sources = [
"perf_tests/TracePerfTest.cpp",
"perf_tests/restricted_traces/restricted_traces_autogen.cpp",
"perf_tests/restricted_traces/restricted_traces_autogen.h",
]
......
......@@ -45,7 +45,7 @@ struct TracePerfParams final : public RenderTestParams
std::string story() const override
{
std::stringstream strstr;
strstr << RenderTestParams::story() << "_" << kTraceInfos[testID].name;
strstr << RenderTestParams::story() << "_" << GetTraceInfo(testID).name;
return strstr.str();
}
......@@ -135,7 +135,7 @@ void TracePerfTest::initializeBenchmark()
angle::SetCWD(exeDir.c_str());
}
const TraceInfo &traceInfo = kTraceInfos[params.testID];
const TraceInfo &traceInfo = GetTraceInfo(params.testID);
mStartFrame = traceInfo.startFrame;
mEndFrame = traceInfo.endFrame;
SetBinaryDataDecompressCallback(params.testID, DecompressBinaryData);
......@@ -316,7 +316,7 @@ void TracePerfTest::saveScreenshot(const std::string &screenshotName)
{
// Render a single frame.
RestrictedTraceID testID = GetParam().testID;
const TraceInfo &traceInfo = kTraceInfos[testID];
const TraceInfo &traceInfo = GetTraceInfo(testID);
ReplayFrame(testID, traceInfo.startFrame);
// RGBA 4-byte data.
......@@ -363,10 +363,12 @@ TEST_P(TracePerfTest, Run)
TracePerfParams CombineTestID(const TracePerfParams &in, RestrictedTraceID id)
{
const TraceInfo &traceInfo = GetTraceInfo(id);
TracePerfParams out = in;
out.testID = id;
out.windowWidth = kTraceInfos[id].drawSurfaceWidth;
out.windowHeight = kTraceInfos[id].drawSurfaceHeight;
out.windowWidth = traceInfo.drawSurfaceWidth;
out.windowHeight = traceInfo.drawSurfaceHeight;
return out;
}
......
......@@ -34,7 +34,7 @@ header_template = """// GENERATED FILE - DO NOT EDIT.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Types and enumerations for trace tests.
// {filename}: Types and enumerations for trace tests.
#ifndef ANGLE_RESTRICTED_TRACES_H_
#define ANGLE_RESTRICTED_TRACES_H_
......@@ -65,14 +65,49 @@ struct TraceInfo
char name[kTraceInfoMaxNameLen];
}};
using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &);
using FramebufferChangeCallback = void(*)(void *userData, GLenum target, GLuint framebuffer);
const TraceInfo &GetTraceInfo(RestrictedTraceID traceID);
void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex);
void ResetReplay(RestrictedTraceID traceID);
void SetupReplay(RestrictedTraceID traceID);
void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir);
void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback);
void SetFramebufferChangeCallback(RestrictedTraceID traceID, void *userData, FramebufferChangeCallback callback);
}} // namespace angle
#endif // ANGLE_RESTRICTED_TRACES_H_
"""
source_template = """// GENERATED FILE - DO NOT EDIT.
// Generated by {script_name} using data from {data_source_name}
//
// Copyright 2020 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.
//
// {filename}: Types and enumerations for trace tests.
#include "{filename}.h"
#include "common/PackedEnums.h"
namespace angle
{{
namespace
{{
constexpr angle::PackedEnumMap<RestrictedTraceID, TraceInfo> kTraceInfos = {{
{trace_infos}
}};
}}
using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &);
using FramebufferChangeCallback = void(*)(void *userData, GLenum target, GLuint framebuffer);
const TraceInfo &GetTraceInfo(RestrictedTraceID traceID)
{{
return kTraceInfos[traceID];
}}
inline void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex)
void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex)
{{
switch (traceID)
{{
......@@ -84,7 +119,7 @@ inline void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex)
}}
}}
inline void ResetReplay(RestrictedTraceID traceID)
void ResetReplay(RestrictedTraceID traceID)
{{
switch (traceID)
{{
......@@ -96,7 +131,7 @@ inline void ResetReplay(RestrictedTraceID traceID)
}}
}}
inline void SetupReplay(RestrictedTraceID traceID)
void SetupReplay(RestrictedTraceID traceID)
{{
switch (traceID)
{{
......@@ -108,7 +143,7 @@ inline void SetupReplay(RestrictedTraceID traceID)
}}
}}
inline void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir)
void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir)
{{
switch (traceID)
{{
......@@ -120,7 +155,7 @@ inline void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir)
}}
}}
inline void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback)
void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback)
{{
switch (traceID)
{{
......@@ -132,7 +167,7 @@ inline void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, Decompres
}}
}}
inline void SetFramebufferChangeCallback(RestrictedTraceID traceID, void *userData, FramebufferChangeCallback callback)
void SetFramebufferChangeCallback(RestrictedTraceID traceID, void *userData, FramebufferChangeCallback callback)
{{
switch (traceID)
{{
......@@ -144,11 +179,8 @@ inline void SetFramebufferChangeCallback(RestrictedTraceID traceID, void *userDa
}}
}}
}} // namespace angle
#endif // ANGLE_RESTRICTED_TRACES_H_
"""
def reject_duplicate_keys(pairs):
found_keys = {}
for key, value in pairs:
......@@ -200,6 +232,10 @@ def get_header_name(trace):
return "%s/%s_capture_context%s.h" % (trace, trace, get_context(trace))
def get_source_name(trace):
return "%s/%s_capture_context%s.cpp" % (trace, trace, get_context(trace))
def get_sha1_name(trace):
return "%s.tar.gz.sha1" % trace
......@@ -212,31 +248,20 @@ def get_cases_with_context(traces, function_start, function_end, args):
return "\n".join(funcs)
def gen_header(traces, header_file, format_args):
includes = ["#include \"%s\"" % get_header_name(trace) for trace in traces]
trace_infos = [
"{RestrictedTraceID::%s, {%s}}" % (trace, get_trace_info(trace)) for trace in traces
]
format_args["includes"] = "\n".join(includes)
format_args["trace_ids"] = ",\n".join(traces)
format_args["trace_infos"] = ",\n".join(trace_infos)
format_args["replay_func_cases"] = get_cases_with_context(traces, "ReplayContext", "Frame",
"frameIndex")
format_args["reset_func_cases"] = get_cases_with_context(traces, "ResetContext", "Replay", "")
format_args["setup_func_cases"] = get_cases_with_context(traces, "SetupContext", "Replay", "")
format_args["set_binary_data_dir_cases"] = get_cases(traces, "SetBinaryDataDir", "dataDir")
format_args["decompress_callback_cases"] = get_cases(traces, "SetBinaryDataDecompressCallback",
"callback")
format_args["on_fb_change_callback_cases"] = get_cases(traces, "SetFramebufferChangeCallback",
"userData, callback")
def gen_header(header_file, format_args):
header_data = header_template.format(**format_args)
with open(header_file, "w") as out_file:
out_file.write(header_data)
return True
def gen_source(source_file, format_args):
source_data = source_template.format(**format_args)
with open(source_file, "w") as out_file:
out_file.write(source_data)
return True
def read_json(json_file):
with open(json_file) as map_file:
return json.loads(map_file.read(), object_pairs_hook=reject_duplicate_keys)
......@@ -246,6 +271,7 @@ def main():
json_file = 'restricted_traces.json'
gni_file = 'restricted_traces_autogen.gni'
header_file = 'restricted_traces_autogen.h'
source_file = 'restricted_traces_autogen.cpp'
json_data = read_json(json_file)
if 'traces' not in json_data:
......@@ -256,7 +282,7 @@ def main():
# auto_script parameters.
if len(sys.argv) > 1:
inputs = [json_file] + [get_sha1_name(trace) for trace in traces]
outputs = [gni_file, header_file]
outputs = [gni_file, header_file, source_file]
if sys.argv[1] == 'inputs':
print ','.join(inputs)
......@@ -276,10 +302,32 @@ def main():
print('.gni file generation failed.')
return 1
if not gen_header(traces, header_file, format_args):
includes = ["#include \"%s\"" % get_header_name(trace) for trace in traces]
trace_infos = [
"{RestrictedTraceID::%s, {%s}}" % (trace, get_trace_info(trace)) for trace in traces
]
format_args["filename"] = "restricted_traces_autogen"
format_args["includes"] = "\n".join(includes)
format_args["trace_ids"] = ",\n".join(traces)
format_args["trace_infos"] = ",\n".join(trace_infos)
format_args["replay_func_cases"] = get_cases_with_context(traces, "ReplayContext", "Frame",
"frameIndex")
format_args["reset_func_cases"] = get_cases_with_context(traces, "ResetContext", "Replay", "")
format_args["setup_func_cases"] = get_cases_with_context(traces, "SetupContext", "Replay", "")
format_args["set_binary_data_dir_cases"] = get_cases(traces, "SetBinaryDataDir", "dataDir")
format_args["decompress_callback_cases"] = get_cases(traces, "SetBinaryDataDecompressCallback",
"callback")
format_args["on_fb_change_callback_cases"] = get_cases(traces, "SetFramebufferChangeCallback",
"userData, callback")
if not gen_header(header_file, format_args):
print('.h file generation failed.')
return 1
if not gen_source(source_file, format_args):
print('.cpp file generation failed.')
return 1
return 0
......
// GENERATED FILE - DO NOT EDIT.
// Generated by gen_restricted_traces.py using data from restricted_traces.json
//
// Copyright 2020 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.
//
// restricted_traces_autogen: Types and enumerations for trace tests.
#include "restricted_traces_autogen.h"
#include "common/PackedEnums.h"
namespace angle
{
namespace
{
constexpr angle::PackedEnumMap<RestrictedTraceID, TraceInfo> kTraceInfos = {
{RestrictedTraceID::angry_birds_2_1500,
{angry_birds_2_1500::kReplayFrameStart, angry_birds_2_1500::kReplayFrameEnd,
angry_birds_2_1500::kReplayDrawSurfaceWidth, angry_birds_2_1500::kReplayDrawSurfaceHeight,
"angry_birds_2_1500"}},
{RestrictedTraceID::candy_crush_500,
{candy_crush_500::kReplayFrameStart, candy_crush_500::kReplayFrameEnd,
candy_crush_500::kReplayDrawSurfaceWidth, candy_crush_500::kReplayDrawSurfaceHeight,
"candy_crush_500"}},
{RestrictedTraceID::egypt_1500,
{egypt_1500::kReplayFrameStart, egypt_1500::kReplayFrameEnd,
egypt_1500::kReplayDrawSurfaceWidth, egypt_1500::kReplayDrawSurfaceHeight, "egypt_1500"}},
{RestrictedTraceID::manhattan_10,
{manhattan_10::kReplayFrameStart, manhattan_10::kReplayFrameEnd,
manhattan_10::kReplayDrawSurfaceWidth, manhattan_10::kReplayDrawSurfaceHeight,
"manhattan_10"}},
{RestrictedTraceID::subway_surfer_500,
{subway_surfer_500::kReplayFrameStart, subway_surfer_500::kReplayFrameEnd,
subway_surfer_500::kReplayDrawSurfaceWidth, subway_surfer_500::kReplayDrawSurfaceHeight,
"subway_surfer_500"}},
{RestrictedTraceID::temple_run_300,
{temple_run_300::kReplayFrameStart, temple_run_300::kReplayFrameEnd,
temple_run_300::kReplayDrawSurfaceWidth, temple_run_300::kReplayDrawSurfaceHeight,
"temple_run_300"}},
{RestrictedTraceID::trex_200,
{trex_200::kReplayFrameStart, trex_200::kReplayFrameEnd, trex_200::kReplayDrawSurfaceWidth,
trex_200::kReplayDrawSurfaceHeight, "trex_200"}}};
}
const TraceInfo &GetTraceInfo(RestrictedTraceID traceID)
{
return kTraceInfos[traceID];
}
void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::ReplayContext3Frame(frameIndex);
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::ReplayContext2Frame(frameIndex);
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::ReplayContext1Frame(frameIndex);
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::ReplayContext1Frame(frameIndex);
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::ReplayContext4Frame(frameIndex);
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::ReplayContext3Frame(frameIndex);
break;
case RestrictedTraceID::trex_200:
trex_200::ReplayContext1Frame(frameIndex);
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
void ResetReplay(RestrictedTraceID traceID)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::ResetContext3Replay();
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::ResetContext2Replay();
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::ResetContext1Replay();
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::ResetContext1Replay();
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::ResetContext4Replay();
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::ResetContext3Replay();
break;
case RestrictedTraceID::trex_200:
trex_200::ResetContext1Replay();
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
void SetupReplay(RestrictedTraceID traceID)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::SetupContext3Replay();
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::SetupContext2Replay();
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::SetupContext1Replay();
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::SetupContext1Replay();
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::SetupContext4Replay();
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::SetupContext3Replay();
break;
case RestrictedTraceID::trex_200:
trex_200::SetupContext1Replay();
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::trex_200:
trex_200::SetBinaryDataDir(dataDir);
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::trex_200:
trex_200::SetBinaryDataDecompressCallback(callback);
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
void SetFramebufferChangeCallback(RestrictedTraceID traceID,
void *userData,
FramebufferChangeCallback callback)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::trex_200:
trex_200::SetFramebufferChangeCallback(userData, callback);
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
} // namespace angle
......@@ -5,7 +5,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Types and enumerations for trace tests.
// restricted_traces_autogen: Types and enumerations for trace tests.
#ifndef ANGLE_RESTRICTED_TRACES_H_
#define ANGLE_RESTRICTED_TRACES_H_
......@@ -50,230 +50,18 @@ struct TraceInfo
char name[kTraceInfoMaxNameLen];
};
constexpr angle::PackedEnumMap<RestrictedTraceID, TraceInfo> kTraceInfos = {
{RestrictedTraceID::angry_birds_2_1500,
{angry_birds_2_1500::kReplayFrameStart, angry_birds_2_1500::kReplayFrameEnd,
angry_birds_2_1500::kReplayDrawSurfaceWidth, angry_birds_2_1500::kReplayDrawSurfaceHeight,
"angry_birds_2_1500"}},
{RestrictedTraceID::candy_crush_500,
{candy_crush_500::kReplayFrameStart, candy_crush_500::kReplayFrameEnd,
candy_crush_500::kReplayDrawSurfaceWidth, candy_crush_500::kReplayDrawSurfaceHeight,
"candy_crush_500"}},
{RestrictedTraceID::egypt_1500,
{egypt_1500::kReplayFrameStart, egypt_1500::kReplayFrameEnd,
egypt_1500::kReplayDrawSurfaceWidth, egypt_1500::kReplayDrawSurfaceHeight, "egypt_1500"}},
{RestrictedTraceID::manhattan_10,
{manhattan_10::kReplayFrameStart, manhattan_10::kReplayFrameEnd,
manhattan_10::kReplayDrawSurfaceWidth, manhattan_10::kReplayDrawSurfaceHeight,
"manhattan_10"}},
{RestrictedTraceID::subway_surfer_500,
{subway_surfer_500::kReplayFrameStart, subway_surfer_500::kReplayFrameEnd,
subway_surfer_500::kReplayDrawSurfaceWidth, subway_surfer_500::kReplayDrawSurfaceHeight,
"subway_surfer_500"}},
{RestrictedTraceID::temple_run_300,
{temple_run_300::kReplayFrameStart, temple_run_300::kReplayFrameEnd,
temple_run_300::kReplayDrawSurfaceWidth, temple_run_300::kReplayDrawSurfaceHeight,
"temple_run_300"}},
{RestrictedTraceID::trex_200,
{trex_200::kReplayFrameStart, trex_200::kReplayFrameEnd, trex_200::kReplayDrawSurfaceWidth,
trex_200::kReplayDrawSurfaceHeight, "trex_200"}}};
using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &);
using FramebufferChangeCallback = void (*)(void *userData, GLenum target, GLuint framebuffer);
inline void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::ReplayContext3Frame(frameIndex);
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::ReplayContext2Frame(frameIndex);
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::ReplayContext1Frame(frameIndex);
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::ReplayContext1Frame(frameIndex);
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::ReplayContext4Frame(frameIndex);
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::ReplayContext3Frame(frameIndex);
break;
case RestrictedTraceID::trex_200:
trex_200::ReplayContext1Frame(frameIndex);
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
inline void ResetReplay(RestrictedTraceID traceID)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::ResetContext3Replay();
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::ResetContext2Replay();
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::ResetContext1Replay();
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::ResetContext1Replay();
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::ResetContext4Replay();
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::ResetContext3Replay();
break;
case RestrictedTraceID::trex_200:
trex_200::ResetContext1Replay();
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
inline void SetupReplay(RestrictedTraceID traceID)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::SetupContext3Replay();
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::SetupContext2Replay();
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::SetupContext1Replay();
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::SetupContext1Replay();
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::SetupContext4Replay();
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::SetupContext3Replay();
break;
case RestrictedTraceID::trex_200:
trex_200::SetupContext1Replay();
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
inline void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::SetBinaryDataDir(dataDir);
break;
case RestrictedTraceID::trex_200:
trex_200::SetBinaryDataDir(dataDir);
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
inline void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::SetBinaryDataDecompressCallback(callback);
break;
case RestrictedTraceID::trex_200:
trex_200::SetBinaryDataDecompressCallback(callback);
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
inline void SetFramebufferChangeCallback(RestrictedTraceID traceID,
void *userData,
FramebufferChangeCallback callback)
{
switch (traceID)
{
case RestrictedTraceID::angry_birds_2_1500:
angry_birds_2_1500::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::candy_crush_500:
candy_crush_500::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::egypt_1500:
egypt_1500::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::manhattan_10:
manhattan_10::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::subway_surfer_500:
subway_surfer_500::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::temple_run_300:
temple_run_300::SetFramebufferChangeCallback(userData, callback);
break;
case RestrictedTraceID::trex_200:
trex_200::SetFramebufferChangeCallback(userData, callback);
break;
default:
fprintf(stderr, "Error in switch.\n");
assert(0);
break;
}
}
const TraceInfo &GetTraceInfo(RestrictedTraceID traceID);
void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex);
void ResetReplay(RestrictedTraceID traceID);
void SetupReplay(RestrictedTraceID traceID);
void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir);
void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback);
void SetFramebufferChangeCallback(RestrictedTraceID traceID,
void *userData,
FramebufferChangeCallback callback);
} // namespace angle
#endif // ANGLE_RESTRICTED_TRACES_H_
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment