src/tests/perf_tests/DrawCallPerf.cpp


Log

Author Commit Date CI Message
Olli Etuaho 2d676313 2017-01-04T10:44:36 Refactor common functionality out of draw call perf tests Common functionality across some perf tests is moved to a separate utility file, draw_call_perf_utils. This will make it simpler to add more perf tests, such as tests for multiview drawing. BUG=angleproject:1669 TEST=angle_perftests Change-Id: I2108d7425f7d8f43f333ea9daa6779e42862350b Reviewed-on: https://chromium-review.googlesource.com/422332 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill cd1b1226 2016-06-16T13:58:54 perf_tests: Work around stalls in gl_null test teardown. The Clear command in the draw call benchmark was not being properly no-op'ed. This would cause the driver to get a huge queue of GL command, which it would only flush when the test was torn down. This manifested as a 5+ second stall on test teardown. Looking at the clear command, it does some work with binding and then calling GL functions, so properly filtering out the driver commands would be a bit more complicated. For now, we can hack in a workaround for the draw call test (the only one that uses the GL NULL renderer at the moment) to not call clear when it would give us problems. BUG=620687 Change-Id: I64a2ed1883e8d3bf0d4c423c8bce0902ae9bf8df Reviewed-on: https://chromium-review.googlesource.com/352828 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 193c671d 2016-06-09T07:09:58 Add a perf test for render-to-texture. This perf test focuses on the hotspot we have in Framebuffer:: checkStatus. It's exactly the same as the standard draw call benchmark, but binds a Framebuffer before rendering. BUG=angleproject:1388 Change-Id: Icc7a99e399f469d765bf1ac6abe0562977b9a39d Reviewed-on: https://chromium-review.googlesource.com/348956 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 8047f065 2015-12-15T17:54:42 Improve perf testing framework The ANGLERenderTest subclasses have a parameter "iterations". Previously most of these tests would perform iterations^2 iterations, since the looping was done both in ANGLERenderTest and in the individual test classes. Do the looping only in the individual test classes instead. This enables getting rid of separate beginDrawBenchmark() and endDrawBenchmark() functions. Some other unused code is also removed: 1. stepBenchmark function 2. unused parameters to step() This makes the core loop of running tests simpler. The perf testing framework also now has shared logic for deciding when to end a given test. The score calculation for tests is also changed. Instead of reporting just the number of operations done, it is reported relative to the actual run time of the test. This should make the test results more accurate, since run time of the tests may have some variation. It also enables changing the run time of the tests without rebaselining them. In the tests that use GPU, GPU operations are also waited to finish before stopping the timer. BUG=angleproject:1261 TEST=angle_perftests Change-Id: I69e9aad8afd2d9dedd60e144f0a5d4203618feef Reviewed-on: https://chromium-review.googlesource.com/319381 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Olli Etuaho fecbed9f 2015-12-17T12:01:12 Fix code style in perf tests 1) Format switch/case with git cl format 2) Change NULL -> nullptr 3) Change int to GLint where appropriate 4) Use more appropriate variants of asserts BUG=angleproject:1261 TEST=angle_perftests Change-Id: I97d6260dbd72ef3897fff145682b7043bf323b76 Reviewed-on: https://chromium-review.googlesource.com/319380 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Austin Kinross 84b0c3b7 2015-11-05T15:15:28 Re-land "In D3D, cache static vertex buffers to prevent wasteful recreation" BUG=angleproject:197 Changes since first failed patch: - Optimized BufferD3D::getStaticVertexBuffer() - Removed loop to commit static buffers - Out-of-date static buffers (which are much rarer anyway after this patch) are marked for deletion at the *next* draw call, rather than searched for before each draw call. That search was expensive. The change should see a net improvement to DrawCallPerfBenchmark for D3D null. Change-Id: If4942e0afd9e8fefadce8820a1305e13636547ef Reviewed-on: https://chromium-review.googlesource.com/311115 Tested-by: Austin Kinross <aukinros@microsoft.com> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 5b58cae2 2015-11-05T14:51:47 Revert "In D3D, cache static vertex buffers to prevent wasteful recreation" Perf bisect traced performance regression to this CL: 8.1% regression in angle_perftests/DrawCallPerf_d3d9_null/score 6.2% regression in angle_perftests/DrawCallPerf_d3d11_null/score BUG=angleproject:197 This reverts commit 868651d334d060458af13c7ff9211c2f72be0cad. Change-Id: Iaba7eb4e574eb886496361e61fd5fe78ca14dcb8 Reviewed-on: https://chromium-review.googlesource.com/311150 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Austin Kinross 868651d3 2015-08-31T15:31:18 In D3D, cache static vertex buffers to prevent wasteful recreation BUG=angleproject:197 Change-Id: I66cd10609b2edbcf12b99530eafe1727511fe515 Reviewed-on: https://chromium-review.googlesource.com/296503 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Austin Kinross <aukinros@microsoft.com> Tested-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez f3357ee2 2015-07-22T14:10:19 EGLWindow: remove the unused width and height EGLWindow does nothing with it per se, but some code was relying on it to store it. Add width and height to ANGLETest and SampleApplication instead. Also fix a typo in PerfTestParams, widowWidth -> windowWidth. BUG=angleproject:1105 Change-Id: I26da607a2e6342864b508a50ee3cf8944608f868 Reviewed-on: https://chromium-review.googlesource.com/287379 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill b76e350f 2015-06-11T16:01:45 Fix the broken draw call perf test. This was broken by the angle test platforms refactor patch, https://chromium-review.googlesource.com/#/c/276460/. It was leading to the wrong tests be executed for the perf tests, and also had bugs with supporting a default platform. BUG=None TEST=angle_perftests Change-Id: Ib99342d4189fd98bf93dce088d15afcecc4a7e37 Reviewed-on: https://chromium-review.googlesource.com/277036 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Geoff Lang dd323e95 2015-06-09T15:16:31 Only run tests that the current hardware can support. For each config, determine if a context can be created at test instantiation time. This allows skipping of ES3 tests when the hardware does not support ES3. Updated the perf_tests to use the EGLPlatformParameters struct so that they can be filtered in the same way. Change-Id: If664604b057cec4005eb4b63bebd83cd4964b7b2 Reviewed-on: https://chromium-review.googlesource.com/276460 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 39fcf263 2015-06-08T14:39:07 Use both null and real renders for draw call perf. Introduce a "null" GL renderer for this specific benchmark, which does not do any work on drawArrays and drawElements. We could use the same kind of trick for buffer and texture updates, if we need it. This gives us a good baseline for comparing GL and D3D perf. BUG=angleproject:1040 Change-Id: I4bf7c75df01932de45ddd0a4e42e8fc82f15e37e Reviewed-on: https://chromium-review.googlesource.com/276192 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 80a50949 2015-05-21T10:54:14 Add perftest parameters for OpenGL BUG=angleproject:892 Change-Id: Ia22b8ab48456d6fbccb159404e943f9ef2650bdc Reviewed-on: https://chromium-review.googlesource.com/272610 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez b45a80db 2015-05-21T10:39:43 Make perftests use ANGLE_INSTANTIATE_TEST This also moves ANGLE_INSTANTIATE_TEST to its own header and makes it generic over the type of test parameter. BUG=angleproject:892 Change-Id: Id4e3929d7ad06964b3259015915be84a8ee414f9 Reviewed-on: https://chromium-review.googlesource.com/272553 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 304dcde8 2015-04-15T14:26:36 perftests: Use gtest asserts macro helpers. We still were using the old cassert code, with a boolean return value on our initialization code. We can make use of the gtest macros and helpers to check for a successful init or GL errors. BUG=476658 Change-Id: I09cbb3d40748cbeaf530ae8f23fb8a1b07e7611f Reviewed-on: https://chromium-review.googlesource.com/265837 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Jamie Madill 4a1858b8 2015-04-14T16:16:30 perftests: Fix simple draw call benchmark. Previously the code was only testing the validation logic. Fix this by testing validation-only and a simple single quad draw benchmark. BUG=468852 Change-Id: I510deea08fee5932f51ea39883ed91652be476df Reviewed-on: https://chromium-review.googlesource.com/265751 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 835be965 2015-04-13T14:17:49 perf_tests: Only print final score result. Don't print all the other measurements and values, since they'll just add noise to the perf bot dashboards. Also increase the run time of the DrawCallPerfTest to 10.0 seconds. BUG=angleproject:744 BUG=468852 Change-Id: If076055ad46b4e6923f39687edcaa25930b188a7 Reviewed-on: https://chromium-review.googlesource.com/265464 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 99f075da 2015-04-01T15:48:07 Split DrawCallPerf test from BufferSubData test. This will give us better dashboard encapsulation when we're running on the Chromium bots. It also paves the way for more specialized draw call tests, like for indexed draw, with uniform updates, instancing, etc. BUG=angleproject:744 Change-Id: I396de28c027f99da18a0904f959d23b59cac2010 Reviewed-on: https://chromium-review.googlesource.com/263505 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>