Perf: Add Reset call to trace tests

The traces are already updated to contain the Reset calls, now
actually call them from TracePerfTests.

Test: angle_perftests --gtest_filter="*Trace*"
Bug: b/152512564
Bug: angleproject:4599
Change-Id: I18b6726bc98b96f132c3245c51420cbfed1b84d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197284
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
diff --git a/scripts/code_generation_hashes/restricted_traces.json b/scripts/code_generation_hashes/restricted_traces.json
index c4ccf02..04d01c7 100644
--- a/scripts/code_generation_hashes/restricted_traces.json
+++ b/scripts/code_generation_hashes/restricted_traces.json
@@ -1,6 +1,6 @@
 {
   "src/tests/perf_tests/restricted_traces/gen_restricted_traces.py":
-    "ff51ca78ed52c33ddfcc4a7e795f217c",
+    "f61ccd2c8ce98674527909d567083963",
   "src/tests/perf_tests/restricted_traces/manhattan_10.tar.gz.sha1":
     "b4d333cd5cf3977c339350be0a819928",
   "src/tests/perf_tests/restricted_traces/restricted_traces.json":
@@ -8,7 +8,7 @@
   "src/tests/perf_tests/restricted_traces/restricted_traces_autogen.gni":
     "54343c0c0a3a15f076516ad26f2ada5a",
   "src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h":
-    "d0b8cfda99009a6e042989ffa0ea3608",
+    "e08aec5cfa97c2239e3cccc6afccb1b0",
   "src/tests/perf_tests/restricted_traces/trex_200.tar.gz.sha1":
     "605cf71846da2309a002baa78abf28e1"
 }
\ No newline at end of file
diff --git a/src/tests/perf_tests/TracePerfTest.cpp b/src/tests/perf_tests/TracePerfTest.cpp
index 5f22d18..55b883b 100644
--- a/src/tests/perf_tests/TracePerfTest.cpp
+++ b/src/tests/perf_tests/TracePerfTest.cpp
@@ -190,6 +190,8 @@
         endInternalTraceEvent(frameName);
     }
 
+    ResetReplay(GetParam().testID);
+
     // Process any running queries once per iteration.
     for (size_t queryIndex = 0; queryIndex < mRunningQueries.size();)
     {
diff --git a/src/tests/perf_tests/restricted_traces/gen_restricted_traces.py b/src/tests/perf_tests/restricted_traces/gen_restricted_traces.py
index bae12f1..5354aed 100644
--- a/src/tests/perf_tests/restricted_traces/gen_restricted_traces.py
+++ b/src/tests/perf_tests/restricted_traces/gen_restricted_traces.py
@@ -49,6 +49,7 @@
 }};
 
 using ReplayFunc = void (*)(uint32_t);
+using ResetFunc = void (*)();
 using SetupFunc = void (*)();
 using DecompressFunc = uint8_t *(*)(const std::vector<uint8_t> &);
 using SetBinaryDataDirFunc = void (*)(const char *);
@@ -81,6 +82,18 @@
     }}
 }}
 
+inline void ResetReplay(RestrictedTraceID traceID)
+{{
+    switch (traceID)
+    {{
+{reset_func_cases}
+        default:
+            fprintf(stderr, "Error in switch.\\n");
+            assert(0);
+            break;
+    }}
+}}
+
 inline void SetupReplay(RestrictedTraceID traceID)
 {{
     switch (traceID)
@@ -206,6 +219,7 @@
     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",
diff --git a/src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h b/src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h
index 189874c..97a1532 100644
--- a/src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h
+++ b/src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h
@@ -24,6 +24,7 @@
 };
 
 using ReplayFunc           = void (*)(uint32_t);
+using ResetFunc            = void (*)();
 using SetupFunc            = void (*)();
 using DecompressFunc       = uint8_t *(*)(const std::vector<uint8_t> &);
 using SetBinaryDataDirFunc = void (*)(const char *);
@@ -63,6 +64,23 @@
     }
 }
 
+inline void ResetReplay(RestrictedTraceID traceID)
+{
+    switch (traceID)
+    {
+        case RestrictedTraceID::manhattan_10:
+            manhattan_10::ResetContext1Replay();
+            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)