src/tests/perf_tests/TracePerfTest.cpp


Log

Author Commit Date CI Message
Jamie Madill a2d670c5 2020-08-15T21:13:33 Run trace tests against Vulkan Mock ICD. Required an upstream fix: https://github.com/KhronosGroup/Vulkan-Tools/pull/437 Also a workaround filed as an issue: https://github.com/KhronosGroup/Vulkan-Tools/issues/445 Bug: angleproject:4950 Change-Id: I21333464d2a8e52d5d85d35654f0e6372f9650db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2358517 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop c4a82aaa 2020-08-17T11:16:22 Tests: Add COD:Mobile trace Test: angle_perftests --gtest_filter=TracePerfTest.Run/*cod_mobile* Bug: b/164426913 Bug: angleproject:4048 Change-Id: I306714632b635c728fa212ed793f076c6b889227 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2360047 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 1780609d 2020-08-03T17:01:21 Trace Tests: Disable timestamp queries. This framebuffer changing timing code adds overhead so it should stay disabled unless turned on explicitly. This was causing a performance regression in the native benchmark for some trace tests like egypt. Bug: angleproject:4845 Change-Id: I51c77d544cae063ba185aa4f20d028d9ffa7a2ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335021 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2d0265fa 2020-08-02T12:01:46 Trace Tests: Scale results based on frames in capture. This now reports averaged time per frame instead of per "step". Scores in general will be divided by 11. Results still reported in nanoseconds. Bug: angleproject:4920 Change-Id: I6f9dca75885cce358c3c7d1e871441969d8aa3d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334095 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill bd7cef28 2020-07-31T11:18:27 Trace Tests: Fix Win/x86 crash. A missing KHRONOS_APIENTRY annotation was causing a crash due to stack corruption in Win/x86 only. Bug: angleproject:4845 Bug: chromium:1111764 Change-Id: I60b30ce8bc409c71d223eaedd74dc0c1ae034f7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2331739 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill f3a38d97 2020-07-23T19:00:34 Add a custom trace tests loader. This custom loader will disambiguate the trace tests gl layer from the util GL/EGL loader. Bug: angleproject:4845 Change-Id: I5e8340eb50f736d931302f71f15f556fd9e52081 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2315627 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Manh Nguyen <nguyenmh@google.com>
Jamie Madill 52d25633 2020-07-27T17:37:46 Disable GPU time tracking in trace tests. Adds considerable overhead to wall time on Adreno. Not tested on other platforms. Bug: angleproject:4879 Change-Id: Ib219f14162fb5768e484f717ed2a870478bd1c86 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2321404 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9faf0cdc 2020-07-20T10:30:55 Capture/Replay: Use custom GL header. This will let us override the util loader for all new traces. It will also be easier to maintain going forward if we have to change the header again. The end goal is to run the trace tests with a custom GL layer that can intercept certain API calls. Bug: angleproject:4845 Change-Id: I028a1afdadf638998805d7b9a2cc6717cf5f0148 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2308029 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 4fa75b5c 2020-07-17T12:58:50 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: Cody Northrop <cnorthrop@google.com>
Cody Northrop 6fe87f4a 2020-07-10T09:13:39 Tests: Change screen orientation for traces on Android This CL adds a reverse JNI call to our Android Native Activity that sets the orientation of the screen based on width and height. To achieve this we: * Attach to the java thread once at the beginning to grab JNI env. * Detach from the thread once when platform sends APP_CMD_DESTROY * Set the orientation during test init Bug: angleproject:4327 Change-Id: Ifbe31a6a84dd60a0dfe7d7032962c99b290d8b81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2289054 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Manh Nguyen bdf91e5f 2020-06-29T13:47:13 Refactor frame_capture_utils.h to frame_capture_test_utils.h frame_capture_utils.h is only used in tests so changing the name to be frame_capture_test_utils.h is more appropriate. Also frame_capture_utils.h will now be a file in libANGLE_with_capture library where serialization code is stored. Bug: angleproject:4806 Change-Id: I7482693a75b2d0edda7e84ae9b777fd3f46f1855 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2273917 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop c028fc73 2020-06-19T09:06:03 Tests: Update traces to include draw surface width/height The traces now contain the original resolution they ran with, so we can set that based on testID. This fixes correctness problems on Android, where only a fraction of the screen could be seen during replay. Bug: b/159238311 Test: angle_perftests --gtest_filter="*Trace*" Change-Id: I47b92ee31681998260bad059cde0856a25ae0fc6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2250863 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill aad69df9 2020-06-11T13:27:52 Run TracePerfTests in WGL configs. Uses the "native" naming pattern. Bug: angleproject:4728 Change-Id: I28cafcdb8c5c1fb48bba51adeca641e88bfe3446 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241619 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 4360c6b9 2020-06-04T16:58:16 Perf: Ensure last frame is replayed for traces This is now required for upcoming buffer mapping resets. Test: Angry Birds 2 MEC Bug: b/157672184 Change-Id: I6358acf42ca9b92bfff621f12f207be7c3655e52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231801 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 6de7ee52 2020-05-25T17:00:01 Clean up overlay RenderPass count reporting. This fixes the trace perf test to accurately report how many RPs in each frame. Instead of counting the RPs on a flush we now count only on a swap call. This won't work for offscreen surfaces which is fine - the overlay doesn't really have the same use for offscreen rendering. Also ignores the first frame in graph data so we can ignore the first setup frame in the trace tests. Also skips the redundant extra "flush" call that would generate an empty space in the RP graph. Gives a cleaner measurement for optimizing the XFB RP count. Bug: angleproject:4622 Change-Id: I5762c500cdb216700247095984ae62b4f8741602 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2215309 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 3a909841 2020-05-12T14:19:06 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>
Jamie Madill 5b35c7f6 2020-05-07T13:40:55 Fix up screenshot saving for trace tests. Now works when run in a sequence. Also saves RGB images to avoid issues with the alpha being inconsistent and also flips images vertically to fix the rendering. Bug: angleproject:4615 Change-Id: I8d3b38c5d914e0ca2227320ac42a0e28acd12c4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2187971 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill bcd2c592 2020-05-06T15:49:41 Revert "Capture/Replay: Update traces to include Reset" This reverts commit 968bb06d94369b782eacb9b7c6a3f1f2171b5f85. Reason for revert: Broke angle_perftests on the P2 bots: https://ci.chromium.org/p/chromium/builders/ci/Android%20FYI%2064%20Perf%20(Pixel%202)/30223 Original change's description: > Capture/Replay: Update traces to include Reset > > Now that our traces can reset state back to how it started with MEC: > > * Update the code generation to include that call. > * Update existing traces to include that call. > * Add a capture of Temple Run. > > Test: angle_perftests.exe --gtest_filter="Trace*" > Bug: b/152512564 > Bug: angleproject:3662 > Bug: angleproject:4599 > Change-Id: I4062271b75b5c6fc9122b301d1af443d79770edc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2182911 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> > Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> TBR=cnorthrop@google.com,courtneygo@google.com,jmadill@chromium.org Change-Id: Icea86c2fbfbabe4a1e7738954cecc176b5574a16 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: b/152512564, angleproject:3662, angleproject:4599 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2184705 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 968bb06d 2020-05-05T12:38:40 Capture/Replay: Update traces to include Reset Now that our traces can reset state back to how it started with MEC: * Update the code generation to include that call. * Update existing traces to include that call. * Add a capture of Temple Run. Test: angle_perftests.exe --gtest_filter="Trace*" Bug: b/152512564 Bug: angleproject:3662 Bug: angleproject:4599 Change-Id: I4062271b75b5c6fc9122b301d1af443d79770edc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2182911 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 930b2641 2020-03-23T14:47:03 Allow tests to run on native EGL. Adds support for Linux and Android native EGL testing. This can be useful for doing performance comparisons of ANGLE vs a native GL driver. Only enabled for the trace perf tests due to limitations in the test harness. Bug: angleproject:4596 Change-Id: Iba6d3ccd7c1275cf095893fab824a0ea33dc3a79 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2116254 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 92b3a720 2020-04-27T15:52:56 Capture/Replay: Generate code integration. This sources the trace list from a json file and uses that to make the "glue" that works with each individual trace test. Bug: angleproject:4590 Change-Id: I40808cbd0e00f9ed01f93c4cfbd678401db3fec0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2168539 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Corentin Wallez 1e81dd4a 2020-04-01T17:46:58 Suppress failures after Win Intel driver upgrade. Bug: angleproject:4533 Change-Id: I482c4caa79fb5fdc9cd4a068f7e7e05890121fa2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2130227 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop b69c4e14 2020-03-24T15:02:06 Capture/Replay: Update CaptureReplay sample for compression * Move DecompressBinaryData to a shared helper * Start using it in CaptureReplay sample * Error out if decompress callback isn't set correctly Test: AngryBirds and CandyCrush captures replay on desktop Test: angle_perftests --gtest_filter="*Trace*" Bug: angleproject:4484 Change-Id: I0432004fdb0cfb0fd61f9a66f792591c9aa40d9b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118790 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 78c77361 2020-03-20T13:50:24 Perf: Add a single Manhattan trace Now that TRex is up and working and Manhattan runs cleanly: * Add a single compressed Manhattan trace. * Allow errors from tests to fail the test * Restore the working directory between each trace test Test: angle_perftest --gtest_filter=TracePerfTest* Bug: b:151349786 Bug: angleproject:3630 Bug: angleproject:4496 Change-Id: I9e9d9342efb23431380f484befb9a19915c4bd0a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113230 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop a4337121 2020-03-19T15:31:00 Perf: Limit TracePerfTest to single compressed TRex Update the TRex trace to: * Incorporate recent fixes for compressed textures * Incorporate support for compressing the trace * Simplify the tag on the trace (drop the end frame) Update TracePerfTest to: * Temporarily support only a single trace (TRex200). Test: angle_perftests --gtest_filter="*Trace*" Bug: angleproject:4484 Bug: angleproject:4488 Bug: angleproject:4496 Change-Id: Ice0c4ee9de3ad9ae4596305a93c51c6eac842123 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112629 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 7e453a25 2020-03-15T22:11:03 Capture/Replay: Use zlib to compress data files. Gives about a 2-3x reduced data file size. Should help reduce the time we spent transferring trace files on Android. This feature is implemented as a parameter to the capture/replay tool. This keeps backwards compatiblity if we ever need to integrate a cpp replay into an environment that doesn't have access to zlib for decompression. We'll need to update the traces to take advantage of the compression. Bug: angleproject:4484 Change-Id: Id7994efe3c0d529b85fa7e7f1b00444e630dd2cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104555 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill a8631f68 2020-03-15T20:38:20 Fix running trace tests in non-standard directories. The change to make the trace tests load the data files using a relative path only worked when running the tests from the "standard" out path. By setting the CWD to the executable dir in test setup we are able to run the tests from any local dir when testing. Also cleans up some repeated code in the test init switch statement. Bug: angleproject:3630 Change-Id: I8e9e5e6e1e9cd31c5b3c7b2f52420d0ba75cf76b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104548 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 391f38c9 2020-03-05T12:18:34 Capture/Replay: Add Manhattan to TracePerfTest This CL also adds the ability for a perf test to elect to ignore GL errors during replay. Otherwise, errors will cause the test to fail. We have known failures with Manhattan that don't affect replay. Test: angle_perftests.exe --gtest_filter="*Trace*" Bug: angleproject:4091 Change-Id: I36268a9f80754f338e52208273e889d2404b7eed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2090663 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9acaf662 2020-02-28T14:58:17 Add timer query support to TracePerfTests. This can allow us to get some profiling measurements on ANGLE vs a native driver. We correlate host times with GL times using the blocking timestamp query. We also time RenderPasses/FBO switches using the trace instrumentation we added in an earlier patch combined with timer queries. Not currently instrumented for the current tests. We'll need to re-run capture to get the callbacks working correctly. Bug: angleproject:4433 Change-Id: I8f61774a3a090ac9460a378d34715a72954d1331 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080597 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 39087f4a 2020-02-16T11:53:23 Refactor DrawCallPerf test parameters. Use the new combiners functions added in an earlier CL. Makes it easy to maintain bigger lists of test combinations. Also a few other changes: - removes some D3D9 perf testing since we don't maintain this config - removes the "validation only" tests. these were mostly redundant - makes the tests permutation combinations more consistent Bug: angleproject:3630 Change-Id: I175d887a01b21123f83f9fa4f64dacaa2644147a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2059468 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 49010904 2020-02-15T12:21:17 Refactor test parameters to TracePerfTest. Reduces much of the code duplication by adding some new helper methods. The helpers allow combining test parameters similarly to how the GoogleTest Combine() and Values() generators work. They are more general and work by returning collections of test parameters instead of combining generator functions. Also updates the GLMark2 benchmark runner to use the new methods. Bug: angleproject:3630 Change-Id: Ibc10f9afb401e119d67a7119974a1a8d9b5abb60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057353 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 080d711b 2020-01-08T13:04:44 Tests: Add a perf test using traces This test will load traces and cycle through a set of frames. The new tests are: TracePerfTest.Run/gl_trex_200_210 TracePerfTest.Run/gl_trex_800_810 TracePerfTest.Run/gl_trex_900_910 TracePerfTest.Run/gl_trex_1300_1310 To download the traces, you must be granted access and authenticate with the cloud. See the steps in RestrictedTraces.md for this. Then add the following to the end of your .gclient file: "custom_vars": { "checkout_angle_internal":"True" }, And run `glcient runhooks`. To enable building the test, add the following GN arg: build_angle_trace_perf_tests = true See the new markdown document for ways to execute the tests. Bug: angleproject:3630 Change-Id: Ic25cd94fb36b35fcf187e88d3bf9548c65f59755 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1949605 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>