src/tests


Log

Author Commit Date CI Message
Yuxin Hu a412b149 2023-09-07T12:08:40 Suppress out of bounds on no robust contexts tests dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds_non_robust.reset_status.writes.uniform_block.vertex failed occasionally due to VVL error. The test first results in vulkan device lost, which is an acceptable behavior. When we clean up the vulkan resources, the VVL is complaning the resources have not finished execution. However, VVL should check if the vulkan device is already lost, as there is no way to finish resource execution when device is lost. Will remove the test from the skip list when the VVL issue filed https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/6310 is resolved. Bug: b/289544394 Change-Id: Ideb676e6629cc17a4f8101ccc083a331a1d3c864 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851049 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Roman Lavrov cdbc45a9 2023-09-07T15:45:11 Tests: capture_tests: remove ANGLE_FEATURE_OVERRIDES_ENABLED Unnecessary for this test, should only matter for tests involving serialization etc. Bug: b/296397568 Change-Id: I1b3e12b11358778cf23dd6d7a5aab69be41c1ab4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4850548 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Mark Lobodzinski 9c0748d3 2023-08-16T09:15:22 Capture/Replay: Trim inactive Texture resources As is done with Shader and Program objects, trim inactive Texture objects from default trace execution playback and update CapturedTest with new use cases. Bug: b/297031925 Change-Id: I734d8f1fa66a24be7790391deaeee24cf570d12a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4802281 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Shahbaz Youssefi 06411d16 2023-09-06T13:23:34 GL: Use the executable instead of program In a few places, the program was still being directly referenced instead of the executable (in particular when dealing with multiview). Bug: angleproject:8297 Change-Id: I15d0865bf58376a9f85efeec739dd93b49ceaea7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4846475 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7b0bb0f6 2023-09-01T13:52:28 Properly "install" program executables According to GL: - The program has an executable - The executable is overwritten during link. - After a failed link, queries of the executable may return half-linked information - On glUseProgram, the executable is installed in the context - On glUseProgramStages, the executable is installed in the program pipeline - After a successful link, the executable is updated wherever the previous executable of the program was installed. This change implements exactly the above: - The program's and the program pipeline's executables are now shared_ptr. References to an executable in the context and PPO are also through a shared_ptr. Installing an executable thus translates to sharing the executable. - The context and PPOs are made to not reference the program directly, but work solely through the executable. As a result, the program is free to create a new executable for link. With this change, the link job will be free to modify the executable as necessary because that will not be accessed until the link is done. Note that previous changes made the backend executable accessed through the frontend one, and moved all link results to the frontend and backend executables as appropriate. Bug: angleproject:6358 Bug: angleproject:8297 Change-Id: Ie636b23ff7420ad284d18b525ec4f5fb559dd9d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823089 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Roman Lavrov dcd62fc4 2023-08-31T15:35:39 Trace perf: clear blob cache before each test Cache eviction can happen during warmup causing cache misses while testing. Significant cycles are being spent evicting cache entries and throwing off power measurement. Since this is already a synthetic environment where we're lumping in a bunch of caches together, clear it between tests so that warmup correctly populates and no cache misses occur within the test run. If we clear the cache before warmup and everything fits, no eviction happens and we hit the cache every time post-warmup. This also improves reproducibility of perf results as they no longer depend on the specific cache state before running a particular test, the order in which tests are run etc. Also fixes acessing unset var when running without --power. Bug: b/298028816 Change-Id: I704073f70d8859e19a78b23d397e68f5836f3bb2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834073 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Alexey Knyazev 9666d4d5 2023-09-01T00:00:00 Disallow dynamic indexing of SecondaryFragData in WebGL 2.0 WebGL 2.0 disallows dynamic indexing of gl_FragData in ESSL 1.00 shaders. By extension, this rule should also apply to gl_SecondaryFragDataEXT. Bug: angleproject:1085 Change-Id: I5859356f72d25c4ffd1db92466dffc6eeacb6a64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4843628 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 17c4741d 2023-09-01T00:00:00 Metal: Disable blending for masked out attachments Avoid pipeline failure when the following conditions are simultaneously true for the same color attachment: * Dual-source blending is enabled * All color channels are masked out * There is no bound fragment output Bug: angleproject:8015 Change-Id: Ie60f4f6dff5a9023677ea9b581e920b0e1e53532 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4836558 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi ebf1e716 2023-08-31T17:19:44 Cache transform feedback varying names in the executable Currently, ANGLE actually does a full link of the programs inside PPOs. This was never the intention of the spec (hence why an explicit link doesn't exist). During this link operation, the transform feedback varying names are used, and they are retrieved from the program itself. This is not correct, because the transform feedback varyings may have changed, the program may have failed to relink, and the program pipeline is expected to continue functioning using the "installed" executable. Bug: angleproject:5486 Bug: angleproject:8297 Change-Id: I583dbd2abcc51e8536b4c460b92211bdddebda16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834055 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski 4e1053b9 2023-09-01T08:35:21 Tests: Limit CapturedTest to Vulkan backend Test: angle_end2end_tests --gtest_filter=CapturedTest.MultiFrame Bug: b/298612441 Change-Id: I865186ba544d3b72af700a9f2cf22aef719e875a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834704 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 18e2038e 2023-09-01T12:59:51 Revert "Gold tests: add temporary logging of angledata hashes" This reverts commit 4fffc9938375f2b84632eb661fc175457fb2ee77. Reason for revert: Hashes are ok - http://b/296921272#comment3 Original change's description: > Gold tests: add temporary logging of angledata hashes > > Should allow us to determine whether corruption happens between CAS and > local files on bots or something's wrong with the test harness. > > Bug: angleproject:8307 > Change-Id: I8a599777a38d7a1b5c56143eb8d02829895175a7 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4777836 > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> > Auto-Submit: Roman Lavrov <romanl@google.com> Bug: angleproject:8307 Change-Id: Idae3bf3bac810af63e44c0c7553e0c6e9bb6af5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834062 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Alexey Knyazev 9624db05 2023-08-21T00:00:00 Validate missing fragment outputs for dual-source blending * A secondary fragment output must be declared when dual-source blending is enabled in WebGL contexts. * Omitting locations for multiple fragment outputs is not allowed in WebGL contexts. Bug: angleproject:1085 Change-Id: I57febdc02c9ccc571971a81b6671869f19b0aa96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834672 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Charlie Lao 7c3c7b7b 2023-08-29T16:40:50 Add more test for GL_SRGB8 format And follow up changes from crrev.com/c/4819053 Bug: b/298037344 Change-Id: Ib27cc2fb8418d05d0b25f4abbdcf052d1f51c9ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4824046 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Yuly Novikov 262edacc 2023-08-31T18:45:45 Skip 2 DrawCallPerfBenchmark tests on Pixel 6 angle_perftests.DrawCallPerfBenchmark.Run/gles_offscreen_attrib_change angle_perftests.DrawCallPerfBenchmark.Run/gles_offscreen_prog_change Bug: b/298407224 Change-Id: I03e9f5daead86447cea456abc01cb46b229c8bbe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834211 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 6ff209bc 2023-08-30T00:02:30 Clean up InfoLog usage during link The info log doesn't really belong to ProgramExecutable; it belongs to ProgramState. However, it is placed there for convenience since many functions access it. This change cleans up usage of InfoLog so the one in ProgramExecutable is consistently used, but also that is turned into a reference to ProgramState's InfoLog. This is necessary for a follow up change that restores the previous executable on link failure (and would thus otherwise lose the info log of the failing link). Bug: angleproject:8297 Change-Id: I088408e3fce9ebb35b1ec4ad3dc599bdb90bf5c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4825624 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Jiawei Shao d4756a94 2023-08-29T15:26:15 D3D11: Fix register index of read-only storage images On D3D11 read-only storage images should consume SRV registers ("t") instead of UAV registers ("u"), so baseUAVRegister shouldn't be related to read-only storage images. fixed: angleproject:4404 Bug: angleproject:7121 Change-Id: I3ca35497992de599d0427fae10d750aff7cf7d9e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819797 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Stephen White <senorblanco@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov ed7e05be 2023-08-31T10:44:05 Cleanup: remove tests.csv Looks like it was added accidentally in https://crrev.com/c/4189028 Bug: b/242419750 Bug: angleproject:7882 Change-Id: I1d92b4a7001a1418bfea77e2b0945ee7a070dad5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4832095 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jiawei Shao 33472e77 2023-08-30T09:45:43 D3D11: Fix the compilation of vertex shader with storage image This patch adds the missing declaration of storage images in vertex shader. With this patch the vertex shaders with storage image declarations can be correctly compiled on D3D11 backends. Bug: angleproject:7121 Change-Id: I32b8c632df83a64a34318e9668e9aa8d376cca56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819792 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 2ed7d887 2023-08-31T09:42:55 Tests: EGLMakeCurrentPerfTest loads GLES Following https://crrev.com/c/4812049 which makes warmup call glFinish that requires GLES to be loaded. It's the only test that hits this - LoadUtilEGL isn't normally called by tests. Breaks on perf bots. Bug: b/297418214 Change-Id: Ib6a7eb863f75e6f461ea021d30dc57baf23afbdc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4832092 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jonah Ryan-Davis 1ab5d01d 2023-08-29T13:31:07 Metal: Fix dropped out arguments from functions with many args. RewriteOutArgs has an early-exit if it spots a potentially aliased arg. It's also responsible for marking out args as references, which caused an issue in Google Earth. Removing the early-exit fixes both issues. Bug: chromium:1474736 Change-Id: Ib68dd3f3e2e0a1e773e4e09edcdfa3a4bdfc1ef2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823006 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 0d67d1bb 2023-08-29T11:19:35 Vulkan: Support EGL_EXT_gl_colorspace_bt2020 Add support for following 3 BT2020 colorspace extensions 1. EGL_EXT_gl_colorspace_bt2020_hlg 2. EGL_EXT_gl_colorspace_bt2020_linear 3. EGL_EXT_gl_colorspace_bt2020_pq Bug: angleproject:8330 Tests: EGLSurfaceTest.CreateWithEGLConfig1010102Support* Change-Id: I3a6ca0daa9ad4400da3834f43678b0db816ba6e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4824045 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Alexey Knyazev 8b0af482 2023-08-21T00:00:00 Validate active draw buffers for dual-source blending Fail if more than MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT draw buffers are enabled when dual-source blending is used. Drive-by: Do not invalidate draw state on changing blend equations if KHR_blend_equation_advanced is not enabled. Bug: angleproject:1085 Bug: angleproject:7177 Change-Id: Ieff80ce777c53b1d8183e1d0a52b7d2224347448 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823164 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi bb135f0e 2023-08-24T15:29:11 Make ProgramExecutableImpl managed by ProgramExecutable This change allows both parts of the program executable to be safely backed up and swapped on link. Bug: angleproject:8297 Change-Id: I17e4b6c05e4e481a66a227d6047dbf943d2c2603 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812138 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov d6fd7eaf 2023-08-25T16:33:27 Trace/perf tests: remove calibration and most warmup options This removes calibration and warmup except for --warmup (which does what --warmup-steps=-1 used to do: render each frame once with glFinish) Trace and perf tests now default to no warmup. Unchanged by this CL: --fixed-test-time=x runs a single trial for x seconds. --fixed-test-time-with-warmup=x is effectively the above flag coupled with --warmup-steps=-1 --run-to-key-frame runs to the key frame (no longer disables warmup as it's now off by default) Bug: b/297418214 Change-Id: I7a0d3e490067dbde57c5f519c1b9092ba70b1480 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812049 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev 558df6f1 2023-08-21T00:00:00 Fix fragment output variables validation * Reject fragment shaders that assign out-of-range fragment locations * Reject fragment shaders that assign output variables of different types to the same location * Apply similar validation for fragment outputs bound via API calls * Ensure that masks for active output variables and draw buffer types are set after processing all fragment output bindings Bug: angleproject:1085 Change-Id: If29cbb58be1981279fc97c67739fe4136b0cdc98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4813656 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 7e41c5bc 2023-08-24T18:30:43 Remove scripts/perf_test_runner.py and references to it src/tests/run_perf_tests.py is similar and is maintained (runs on CI) Bug: b/297418214 Change-Id: I6fb12ac1fb856672b3bb83c0a4e34eb68afa1475 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812135 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 571b4cdb 2023-08-14T16:55:28 Vulkan: Move pipeline/desc-set layout creation to link job The pipeline and desc-set layout caches are consequently made thread-safe. The reference counter on the layouts are also made atomic. With this change, practically all of the link in the Vulkan backend is moved to the link job. Bug: angleproject:8297 Change-Id: Iba694ece5fc5510d34cce2c34441ae08ca5bb646 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4774787 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 98e351cf 2023-08-16T15:22:37 Traces: Update steps for upgrading traces We've settled on a streamlined method of upgrading traces. We consider the upgraded trace good if: - gets the same pixels for all frames, including after Reset - gets the same frame time and memory usage (or better) This moves away from using serialization, which is useful, but has become too heavyweight. We've preserved the steps as they are still useful in some scenarios. Also formalize a couple of scripts we've been using to compare trace screenshots. It supports two scenarios: - comparing screenshots between ANGLE and native - verifying screenshots after an upgrade Example usages: compare_trace_screenshots.py versus_upgrade \ --before <path> --after <path> --outdir <path> compare_trace_screenshots.py versus_native \ --screenshot-dir /tmp/screenshots --trace-list-path src/tests/restricted_traces Bug: b/294882956 Change-Id: Ifc59d8b31648abb3614da2d8919a1f90a0b6b68f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791916 Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Roman Lavrov 893325b8 2023-08-24T10:03:51 Perf tests: call base class SetUp in all tests https://crrev.com/c/4799388 moved code to SetUp assuming base class SetUp was always called but a few cases were missing this. Changes ASSERT to a check that is enabled in release builds (e.g. perf bots) Bug: b/291604008 Change-Id: I1c3fb123903f09631ef348e311f3dc1c77b4e221 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4810187 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu f0d3e8b3 2023-08-22T14:25:43 Remove test skips on dEQP-EGL.functional.swap_buffers* Below changes fixed dEQP-EGL.functional.swap_buffers* on pixel devices, too: https://chromium-review.googlesource.com/c/angle/angle/+/4794979. Update the tests to only skip on Win OS. The tests running on other platforms will be reported as Not Supported due to lack of readScreenPixels() implementation on other platforms. Tests failures on Win OS needs further investigations. Bug: angleproject:2341 Bug: b/224537784 Change-Id: I46a59dd8708e621b2d91ac3c46584bdad4ff759e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804568 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 68f2c10c 2023-08-15T22:47:32 Remove program executable backup during link This was added in https://chromium-review.googlesource.com/c/angle/angle/+/2181450/30 to support the case where a program fails to relink, but needs to still be usable. However, this does not seem to be an issue anymore. New tests are specifically added for this, and they, along with every other test, pass. If this needs to be reintroduced, it needs to be rethought. It does not play well with parallel link as it changes the executable pointer while link is in progress (and it was done on the assumption that everything needing the executable is linked serially). A better solution would likely be an `mLastSuccessfullyLinkedExecutable` that normally points to `mExecutable`, but not during link. On `resolveLink`, it would either make `mExecutable` point back to `mLastSuccessfullyLinkedExecutable`, or the other way around based on whether the link was successful or not. Bug: angleproject:8297 Change-Id: Ic9d55bccb75fff0253fe299a244bf1e4bbc416a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781632 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop b0777def 2023-08-21T13:54:08 Traces: Upgrade octopath_traveler Test: angle_trace_tests --gtest_filter=TraceTest.octopath_traveler Bug: b/294882956 Change-Id: I690f4f6ad65542cd015ce61ee246f009f0907740 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794728 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 865eceaa 2023-08-21T15:17:02 Trace perf: power metric uWs/frame -> W, exclude startup&teard Switching from uWs/frame to W, which is easier to measure as we don't need to know how many frames were rendered between the measurements and just need to avoid warmup, turndown. Also, W is a more "natural" metric as it reports actual power usage that can be reasoned about in terms of device thermals etc. Changing starting point to post-warmup by waiting for test message in logcat. The logcat -> script delay seems very small in my tests. Turndown also shows spikes in some traces so avoiding that by shifting the time for end point collection to 1s before the test is expected to finish (which makes this only compatible with --fixedtime) Also made device selection set env var instead of a global variable and passing via args it slighlty simplifies subprocess(adb) handling. Bug: b/291604008 Change-Id: I2109da0d75eba167eec939df88a34d9a9b7f330b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4799391 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 72c00885 2023-08-23T08:00:03 Tests: Skip injustice_2 on Windows/Nvidia Bug: angleproject:8316 Change-Id: I5bdef9df9bc6f922a15f3377e4af31cc60db73a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4807130 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 9f258f8a 2023-08-21T00:00:00 GL: Add disableRenderSnorm workaround Disable the extension on Mesa versions that clamp negative snorm values to zero on read. Fixed: angleproject:8315 Change-Id: I5459db40cb08c546fba15f5e6d70578029a8218a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804324 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Roman Lavrov 0ef565c5 2023-08-22T17:50:36 end2end test with --use-gl fails with a note Bug: None Change-Id: I7e6e40c912910d0ffc8d4690e9b9b4c8599342db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804368 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Roman Lavrov d41ac4da 2023-08-18T11:25:05 Cleanup: 'am instrument' readability and consistency Reconcile android_helper and restricted_trace_perf formatting of 'am instrument' command. The only real difference is that restricted_trace_perf uses 'shell=True' in subprocess which requires escaping spaces inside "" Bug: b/292249127 Change-Id: I002e49ae5b2913db46b92a7b643bc12d21abce1e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794430 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 84576a5b 2023-08-18T12:08:04 Trace perf: log script args in the spreadsheet Excludes the --output-tag flag Example: ... Source: raw_data.android.20230818.csv Args: -f *blade_and_soul_revolution --fixedtime 1 --power --loop-count 2 --sleep 1 Bug: b/292249127 Change-Id: Ic40666921fe49845032d47f32ecda9609ba7b044 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794431 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 9e2d4c0b 2023-08-18T10:25:48 Trace perf: add test crash handling When missing time and no '[ PASSED ]' tag in stdout, assume test crashed. Example stdout: trace wall_time gpu_time ... Starting run 1 with native at 2023-08-18 10:23:17 native_blade_and_soul_revolution crashed 0 ... raw_data: trace,wall_time(ms),gpu_time(ms),... native_blade_and_soul_revolution,crashed,0,... summary: 1,blade_and_soul_revolution,-1.000,-0.00%,-1.000,... Set cpu_time to 0 on a crash for consistency with other metrics. Bug: b/292249127 Change-Id: I9533c0ee7aa9a3b45f360ad1618984eb620d657f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794428 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 864de574 2023-08-18T09:49:30 Trace perf: subprocess.wait() -> subprocess.communicate() subprocess.wait() deadlocks when enough output is produced by the command to fill the stdout/stderr buffers. https://docs.python.org/3/library/subprocess.html#subprocess.Popen.wait recommends .communicate() instead. Replaced result.process.stdout with result.stdout which is a string rather than a stream. Bug: b/292249127 Change-Id: I172ac058ebc6aafda82edab7c45787252d612013 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794288 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Mark Lobodzinski 823de3a3 2023-08-22T07:40:39 Tests: Add Injustice 2 trace Test: angle_trace_tests --gtest_filter=TraceTest.injustice_2 Bug: b/296913308 Change-Id: I35f1e17767f924c4f31d4e00a2c9f737c6c4822b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4802266 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi f3c1de36 2023-08-17T15:29:24 Make shader recompile while parallel linking safe Prior to this change, Program* objects held references to Shader* objects. This poses a problem where a shader recompile can race with a program link, if the program link is done in parallel. As a result, a good chunk of the link job is done serially and under the share group lock. After this change, that is no longer a problem, and most of the link can be made lockless/parallelized. This change separates out the "compiled state" from the rest of the shader state. This was already done for the front-end state (for the sake of caching), but is also now done for the backends that need it. The compiled state in turn is placed in a shared_ptr, and is shared with the program. When a shader is compiled, its own shared_ptr is replaced with a new object, leaving all programs currently compiling unaffected and using the previous compilation results. Once a program is linked, its references to compiled shader states is updated. Bug: angleproject:8297 Change-Id: Iff7094a37088fbad99c6241f1c48b0bd4c820eb2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791065 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jeff Vigil 1bd45c4f 2023-07-17T14:18:53 Add tiling mode for GL_EXT_memory_objects Add set and get TexParameter for pName GL_TEXTURE_TILING_EXT Add test case to VulkanImageTest for import LINEAR memory object Bug: angleproject:8274 Change-Id: I4432093e41f45e3926a27e3dee00d48c0438cae5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4752793 Reviewed-by: Jeff Vigil <j.vigil@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Yuxin Hu d0730eba 2023-08-18T14:41:03 Disable NativeWindow screen read capability on non-win32 platform NativeWindow::readScreenPixels() only returns true on win32 platform. Enable CAPABILITY_READ_SCREEN_PIXELS on DE_OS_WIN32 only. Bug: b/296487949 Bug: angleproject:8261 Change-Id: I964870a3a5c6911a16382e2b9bb9d2cecea2b706 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794979 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Jonah Ryan-Davis 280e79e1 2023-08-10T14:08:00 Rescope globals only used in one function to function-local. We can demote global variables when they are only used in one function. This has performance implications on Metal. Bug: angleproject:8311 Change-Id: Id666e6b167be771c14768cd73efa61fdacd897d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4771215 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mike Frysinger 71c90dfd 2023-08-18T21:50:22 gtest: disable legacy test case API Remove APIs that upstream has deprecated so we make sure no one uses them anymore in new tests. Bug: chromium:1474588 Change-Id: Ic760439ec41131a5bb5a30a59e23b9166c7fd23d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794112 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Mike Frysinger <vapier@chromium.org>
Roman Lavrov 54770d82 2023-08-21T11:44:12 Perf tests: move calibration out of run() to SetUp() calibrateStepsToRun is called from SetUp for ANGLERenderTest subclasses, but direct ANGLEPerfTest subclasses call it from run() instead. Moving it to SetUp for consistency - just need a check to avoid doing this for render tests and we already have a hack to do that. Bug: b/291604008 Change-Id: Ifddb60d55c6404660b0dff938a079fcd0545a6fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4799388 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 2c624a5e 2023-08-17T15:36:37 android_helper cleanup: remove smoke test and timeout This was added to help debug cases of stuck tests on bots, but this doesn't seem to have happened in over a year and the code (and timeout) keeps getting in the way. Bug: angleproject:7242 Change-Id: Ic30d976408bd32a745d830921f6e4d98d17e863c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4789845 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mike Schuchardt 8f5a6124 2023-08-18T17:13:18 Tests: Add Stumble Guys trace Test: angle_trace_tests --gtest_filter=TraceTest.stumble_guys Bug: b/296557360 Change-Id: Iebf81920eaaf8a3b52a3ffed0027aeb01ebed16b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794756 Commit-Queue: Mike Schuchardt <mikes@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mike Schuchardt be60f879 2023-06-28T17:29:45 Workaround for tex buffer type mismatch In the event of a mismatch between a texture buffer format (eg GL_R32F) and the shader sampler type (eg usamplerBuffer), adjust the tex buffer format to match the sampler (eg GL_R32UI). Test: angle_end2end_tests \ --gtest_filter="TextureBufferTestES31.TexBufferFormatMismatch*" Bug: b/233119699 Change-Id: I3461bcecabfe1d96be6350c43c15b32d35265b23 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4769137 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mike Schuchardt <mikes@lunarg.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski d85de0e9 2023-08-09T14:15:56 Capture/Replay: Add optional replay of trimmed resources This CL: - Adds '--include-inactive-resources' option to angle_trace_tests - Removes the 'trim-enabled' option - Outputs all previously trimmed shaders/programs to trace file in a new Setup function, SetupReplayContextSharedInactive() which is executed only if the new option is specified - Modifies CaptureTest to add inactive resources, but does not set the include-inactive-resources flag Bug: b/296055694 Change-Id: I33b18d5da727d55c90c2012c2bf64b1413521429 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781552 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Yuxin Hu 88341a52 2023-08-15T18:07:42 Update deqp_gles31 test expectations files Skip below test on Pixel 4 vulkan backend only dEQP-GLES31.functional.atomic_counter.* Bug: angleproject:5185 Bug: b/224537784 Change-Id: Ibc8e93f2dbe483fa6ef07104d14eaeab9d069ead Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4782155 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Roman Lavrov d85b2905 2023-08-15T16:50:03 Android: improve error message due to missing trace libs I think this only happens when angle_restricted_traces wasn't set in gn args, resulting in traces outside of the apk. Previously we'd get a confusing error about missing gen/tracegz... files, now we get this: I15:55:48.527742Z Syncing harry_potter_hogwarts_mystery trace (1/1) Error: missing library: libangle_restricted_traces_harry_potter_hogwarts_mystery.so Is angle_restricted_traces set in gn args? Also removed swallowing errors in _PushLibToAppDir, crashing seems better than running with out of date files. Bug: b/294861737 Change-Id: I5696f35a910f6db2310d90e112a83881af3a8f50 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781569 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuxin Hu d425a6bb 2023-08-15T17:20:32 Update deqp_gles3* test expectations Restrict below test failure expectation on vulkan backend, nvidia driver only: dEQP-GLES3.functional.rasterization.flatshading.* Add buganizer ticket to track the progress of below test failure investigation: dEQP-EGL.functional.color_clears*other dEQP-EGL.functional.render*other Bug: angleproject:3430 Bug: b/295394803 Bug: b/224537784 Change-Id: I14c064a55ab81764c7dc7e4bdb894c964bc46858 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4782154 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov 124e90af 2023-08-17T13:07:46 Retrace: copy get_min_reqs data over when upgrading Bug: angleproject:7639 Change-Id: I9a6e3a5ca75d6dcd5b537123948d2498e6bb47f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4789844 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 8e744e9f 2023-08-14T14:40:41 Android: support dEQP in android_helper and add bundle script Example: autoninja -C out/Android angle_deqp_gles31_tests && (cd out/Android; ../../src/tests/run_angle_android_test.py --suite=angle_deqp_gles31_tests --gtest_filter='dEQP-GLES31.functional.image_load_store.3d.*') For angle_deqp_bundle.py example usage see comments at the top of the file. Note: this change is not supposed to have any impact on CI. dEQP tests are still ran using Chromium's test runner, not android_helper. Bug: b/293590167 Change-Id: I605102ebea8b135f3239ffac012ce5dc13e84943 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776109 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev aa8d60aa 2023-08-14T00:00:00 D3D11: Normalize blend state for MIN/MAX operations Use default blend factors for MIN/MAX operations to reduce the number of unique keys and to avoid D3D11 state allocation failures. Fixed: angleproject:8305 Change-Id: I6abcf93240653de8d7d8e174c1f8109d12de63e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776071 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 4ba4af61 2023-08-17T11:28:18 Revert recompile blocking on link Causing timeouts on some platforms. An alternative implementation will follow. This change also reverts two changes that depend on it: Vulkan: Move SPIR-V set up to link job 10f54902e816fa7e4cf314384e00590e2b9bfa1d. Vulkan: Move default uniform init to link job d8cd4dcdc9c55c88f030f7fca41357e99e600ed2. Bug: angleproject:8297 Change-Id: I9a258460e7bcaeac214be5e63c16c20681e0bcde Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4789843 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Roman Lavrov 5d2a1749 2023-08-17T09:52:57 Add an assert that capture_tests isn't supported on Android Bug: b/286067106 Change-Id: I3657faa7e2733ad28d1db844cb74e5224a6f47c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4790522 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Roman Lavrov <romanl@google.com>
Roman Lavrov 59b0c7d7 2023-03-27T10:10:11 Add regression test for VVL AlphaToCoverage bug https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5520 Bug: b/264062978 Change-Id: I0619cb28495c16d0d8d83635ad7a93f0c47cea6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374098 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi ba41a4d8 2023-08-16T13:52:57 Suppress parallel-link tests on Asan/Windows/SwiftShader They are flaky with no clear reason. Bug: angleproject:8306 Change-Id: I1331c6d792417edccad6b337e55b3816df2c2f12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4783055 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 4fffc993 2023-08-15T14:10:58 Gold tests: add temporary logging of angledata hashes Should allow us to determine whether corruption happens between CAS and local files on bots or something's wrong with the test harness. Bug: angleproject:8307 Change-Id: I8a599777a38d7a1b5c56143eb8d02829895175a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4777836 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com>
Alexey Knyazev 59f158c1 2023-08-10T00:00:00 GL: Add explicitFragmentLocations workaround Some drivers produce incorrect results when a fragment output has an implicit location and gl_SampleMask[] is written to. Fixed: angleproject:8308 Change-Id: I615952ef61b1cb611984ec7defb189d89ab3281c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4777702 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi d8cd4dcd 2023-08-09T16:51:13 Vulkan: Move default uniform init to link job Bug: angleproject:8297 Change-Id: I5bab916f452439d92afa65b9172574000ee0b587 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4762838 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Cody Northrop f4e5c327 2023-08-03T13:48:51 Tests: Upgrade blade_and_soul_revolution Created with: export TRACE_GN_PATH=out/Debug export TRACE_NAME=blade_and_soul_revolution src/tests/restricted_traces/retrace_restricted_traces.py \ upgrade $TRACE_GN_PATH retrace-wip -f $TRACE_NAME Bug: b/291929395 Bug: b/294882956 Change-Id: I7b1e721c5a125fa695fffa6c83dd0418d5331d91 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4760425 Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 2fd33fc4 2023-07-17T17:07:52 Android: Make .gz sync faster by only checking last bytes In particular, some angledata.gz are hundreds of megabytes, which results in multiple seconds spend on some traces which adds up to a few minutes when running all traces. Gzip format includes an 8-byte trailer with the CRC-32 and the length of the uncompressed data https://en.wikipedia.org/wiki/Gzip#File_format Instead of checking hash(file) check hash(tail(file)). Check more than just 8 bytes (arbitrarily picked 4096) so that in a rare event of a collision we're still likely to see different bytes as compressed streams tend to diverge when data changes. This reduces the already-fully-synced sync from ~130s to ~60s in my tests. Bug: b/276742336 Change-Id: I899b80ac90ef4def498c8cb52d6b096d8b1ef826 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4691962 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 1db320c8 2023-08-08T13:31:04 Docs: Update steps for using experimental CIPD Bug: b/294882956 Change-Id: I2bcdd1874cbf44fac939d43cebd19b3e8903927b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4763611 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 9d7bddc1 2023-08-03T16:46:41 Trace Replay: Allow screenshots of all frames As part of upgrading our traces to the latest format, we want to ensure we get the same rendering results for all frames, including after Reset. To do this, add the ability to pass -1 as the frame to save: angle_trace_tests --gtest_filter=TraceTest.blade_and_soul_revolution \ --use-angle=swiftshader --max-steps-performed 200 \ --screenshot-dir retrace-wip --screenshot-frame -1 In the above solution, there are 100 frames in the trace, but we'll get 200 screenshots (two loops). Bug: b/294882956 Change-Id: I9169403fe716bbe3ea9ba66ce36dfd5a0c58937b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4760424 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 16cfa28e 2023-08-08T22:08:24 Vulkan: Basic infra for parallel link This change moves pipeline warm up to a parallelizable task, mostly as an exercise to put in the infrastructure for parallel link in the Vulkan backend. Follow up changes will move more of the link step to this task. The end goal is to be able to make the link task independent of ContextVk, which would allow it to be run as an UnlockedTailCall, even if not using a worker thread. Bug: angleproject:8297 Change-Id: I17047162b2a41f0d681d9e3ee33f2e0239b4280d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4764231 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 394699d3 2023-08-10T10:28:01 tests: skip SwiftShader tests when building without SwiftShader If we are building without SwiftShader, we shouldn't be forced to add a gtest_filter of "-*SwiftShader*" in order to run the various tests. Bug: angleproject:8291 Change-Id: Ic3513445d5d4bb402535a6f41bba818c0d15fd7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4769826 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Alexey Knyazev 6092e0b7 2023-08-10T00:00:00 D3D11: Ensure that clip depth mode is synced Syncing clip depth mode driver uniform should not depend on a viewport state. Bug: angleproject:6554 Change-Id: I6ff2549a88fe3795eef20acfc48d0e945f19c4e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4775599 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 4a195ce0 2023-08-10T11:28:31 Vulkan: Fix SPIR-V id assignment to user-defined webgl_* names The code was incorrectly assuming that webgl_* names are only from ANGLE variables. An explicit check that the symbols are AngleInternal was missing. Bug: b/287166117 Change-Id: Ib8140cfabd74000492d12c11163f318a9ec3b98f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4770236 Commit-Queue: Solti Ho <solti@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Solti Ho <solti@google.com>
Steven Noonan 833f7f69 2023-08-09T10:49:51 Vulkan: improve XFB feature dependency checks Some features need to account for the possible override of supportsTransformFeedbackExtension == false. Since we now frontload the overrides, we also can remove the explicit overrides for the dependent features in TransformFeedbackTest. Bug: angleproject:8291 Change-Id: I0ec54dc0fce440ef3e7bfe9987d0ea19fb9dafaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4763096 Auto-Submit: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan f395f34b 2023-08-03T13:58:43 features: frontload feature overrides This allows us to have features that depend on the state of other features more reliably. For example, let's say you have two features: ANGLE_FEATURE_CONDITION(&mFeatures, allowX, (benefitsFromX || isSpecificHardware) && !isBadHardware); ANGLE_FEATURE_CONDITION(&mFeatures, supportsX, hardware.featureXSupported && mFeatures.allowX.enabled); Before this change, if you overrode allowX, the override would be applied too late for the supportsX test. This also helps with disabling dependent features via overrides. For example, if you disable "supportsRenderpass2", it will also disable features depending on it, such as "supportsDepthStencilResolve" and "supportsFragmentShadingRate". By frontloading the feature overrides, we can have cross-dependencies between "feature supported on this platform" and "allow this feature by policy". Bug: angleproject:8291 Change-Id: Id6da2c89428fa896d677fe8d5a41369277a21b31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749524 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 7c69116f 2023-08-08T10:14:47 Vulkan: Fix data race with DynamicDescriptorPool Right now DynamicDescriptorPool::destroyCachedDescriptorSet can be called from garbage clean up thread, while simultaneously accessed from context main thread, and data race will happen and cause bugs. This can only happen when the buffer is not being suballocated. In this case, suballocation owns the bufferBlock and bufferBlock gets destroyed when suballocation is destroyed from garbage collection thread. If buffer is suballocated, the shared group owns pool which owns bufferBlocks and they gets destroyed from shared group with the share group lock. This CL avoids this race problem by release the shared cacheKey when the buffer is released, while we still had the shared group lock. Bug: chromium:1469542 Change-Id: Ic1f99e6b6083d63e4efb9c3f408921da62c006ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4761365 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu a990ba34 2023-08-02T17:21:00 Fix write out of bounds on non robust contexts crashes dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds_non_robust.reset_status.writes.* tests are failing, because the test expectes EGL_SUCCESS upon eglMakeCurrent(EGL_NO_CONTEXT), regardless of whether the context was lost. This CL: 1) Changes the validation function of eglMakeCurrent: if the EGLContext passed to eglMakeCurrent is EGL_NO_CONTEXT, do not return EGL_CONTEXT_LOST even if the context is already lost. 2) Adds a lost context check in checkOneCommandBatch. If the context is lost, do not check fence status and assume all of the vulkan commands have finished execution, so that we can properly destroying all the resources before destroying the context. 3) Changes the GL error code from GL_INVALID_OPERATION to GL_CONTEXT_LOST when there is a vulkan device lost. Bug: b/286921997 Bug: b/289544394 Change-Id: I91e8a4105f0d7a3ec3b59bae58da80bc64ffa94a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4728466 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Mohan Maiya e50d3876 2023-08-04T14:47:41 Vulkan: Retain loadOp when there is a resolve attachment Rendertargets with resolve attachments cannot optimize away loadOp Load or Clear even if they are marked ResourceAccess::Unused and storeOp is RenderPassStoreOp::DontCare. Bug: angleproject:4836 Bug: angleproject:5981 Tests: ImageTest.SourceAHBTarget2DMSRTTInteraction* Change-Id: I39ec67a457de6876ed0bd47d66a963cc59fab064 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4753735 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang f4e901b4 2023-08-07T10:52:09 Validate program binaries are the same CPU bit-ness. ANGLE's program binary serialize/deserialize logic uses size_t and other non-fixed sized integer types. This can cause crashes if the CPU architecture changes between saving and loading of binaries. Bug: chromium:1470074 Bug: angleproject:8223 Change-Id: Ib2529e0e6e66e28a184aa1ec94075e343e1f1d5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4752265 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kenneth Russell 8ba04f1c 2023-08-05T00:48:35 Metal: disable fastmath less often. Stop disabling fastmath if atan is used in the shader. Application developers will surely prefer the significant performance improvement of the fastmath optimizations over corner-case differences in precision. Make disabling fastmath more precise: only if it's forcibly disabled as a driver bug workaround, or if the shader uses invariance and preserveInvariance is not available. Suppress the test: dEQP-GLES[23].functional.shaders.invariance.lowp.loop_2 which fails when fastmath is enabled for shaders using atan and invariance. Fixed: chromium:1320111 Change-Id: I6e33b14b1d05faedc15373f24af3e22a4074a35b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754018 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kenneth Russell <kbr@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Steven Noonan 30bd0149 2023-08-02T08:06:47 ANGLETest: fix crashes when switching between GLESDriverTypes The condition for mLastLoadedDriver was incorrect. We never initialized it, so it never switched to the correct EGL implementation when alternating between tests using different GLESDriverTypes. This was reproducible with: angle_end2end_tests.exe --gtest_filter="SimpleOperationTest.DrawSingleSampleWithAlphaToCoverage/ES3_D3D11:SimpleOperationTest.DrawSingleSampleWithAlphaToCoverage/ES3_ANGLE_Vulkan_Secondaries_SwiftShader:SimpleOperationTest.DrawSingleMultiSampleWithAlphaToCoverage/ES3_D3D11" The above does three tests: - D3D11 test (using GLESDriverType::AngleEGL) - Vulkan test (using GLESDriverType::AngleVulkanSecondariesEGL) - D3D11 test (using GLESDriverType::AngleEGL) What would happen is this: - the first test would initialize a D3D11 EGLDisplay - the second test would switch the API entry points to use AngleVulkanSecondariesEGL - the third test begins reuses the first test's EGLDisplay, but fails to notice the GLESDriverType change and uses the AngleVulkanSecondariesEGL entry points - when eglQueryString is called with the D3D11 EGLDisplay, the VulkanSecondaries library has no knowledge of this display and fails the call Bug: angleproject:8286 Change-Id: I1f22060e2c5725dad5e410a76385e2802b627844 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749296 Auto-Submit: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 1b94197a 2023-08-03T13:45:34 Metal: Enable fast math based on runtime OS version checks. Chrome compiled with a recent SDK but a low minimum required OS version so fast math was always disabled at compile time. Turn this into a two- part check: Use macros to make sure preserveInvariance can be compiled and @available to do the runtime OS check. Fix the UseFastMathForShaderCompilation check. It was incorrectly inverting two negative conditions. Mark some dEQP precision tests as failing due to fast math. We would prefer to have the performance improvement over some precision loss. Bug: chromium:1468346 Bug: angleproject:8287 Change-Id: I31d9c732a12841cb4d0bc1a555ea1f1ea8a434fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4750199 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Igor Nazarov c95ffadf 2023-07-24T13:00:32 Perform Display terminate(InternalCleanup) from makeCurrent() Current state: - Call to `eglTerminate()` is canceled if there are Contexts current. - All not current Contexts are invalidated in `eglTerminate()` call. - Full Display termination will happen only when last Context is actually destroyed in `eglDestroyContext()` or last active thread terminates (Android only). Problem: - Context is not marked invalid after it is unmade from current when `eglTerminate()` was already called. - If `eglDestroyContext()` was called while context was current, it will be destroyed when unmade from current - in this case actual Display termination will NOT happen. After this change: - Context immediately invalidated after it is unmade from current when `eglTerminate()` was already called. - Full Display termination will happen after the last Context is unmade from current (all Contexts are invalid). Bug: angleproject:6798 Test: angle_end2end_tests --gtest_filter=EGLDisplayTest.ContextLeakAfterTerminate* Change-Id: Idcce94b041649db58d3d879858fba99109347baf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4708328 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Igor Nazarov 959ccb96 2023-08-02T13:40:16 Add EGL_BAD_ACCESS validation into ValidateMakeCurrent Current code does not generate EGL_BAD_ACCESS in `eglMakeCurrent()` according to the specification: - If context is current to some other thread, or if either draw or read are bound to contexts in another thread, an EGL_BAD_ACCESS error is generated. Additional changes: - replace `Context::getRefCount()` with `isReferenced()` for consistency with added `Surface::isReferenced()` method. - remove duplicate `ValidateSurface` call for the `drawSurface` in case if `readSurface` is the same. - remove duplicate `ValidateCompatibleSurface()` call for the `readSurface` in case if `drawSurface` is different. - Fix EGLContextASANTest.DestroyContextInUse test. - Fix EGLContextSharingTestNoSyncTextureUploads.NoSync test. Bug: angleproject:8282 Change-Id: I2af0d7f50019c2445b42279bdd0e0197dd8ad20f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4742382 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Cody Northrop cb9dd1c9 2023-08-01T14:48:40 Tests: Add Tesla trace Test: angle_trace_tests --gtest_filter=TraceTest.tesla Bug: b/294106875 Change-Id: Ice844dd989a29cbef5190acf077f0484f17c7e3f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4739721 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Alan Zhao 5d4b3645 2023-07-31T14:04:01 Fix a missing symbol with ANGLE e2e tests angle_end2end_tests has the same issue as CaptureRelayTests which was fixed in https://crrev.com/c/4728461 where a symbol was not found during link-time on Windows due to __declspec(dllimport). Bug: chromium:1468150 Change-Id: Id943967b0f32d30ff69dfc013aafa69bd812ccaf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4735273 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
angle-autoroll cb4b1f36 2023-07-31T14:32:41 Manual Roll VK-GL-CTS from e7b180ad5366 to 00cccd7cf562 (37 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/e7b180ad5366..00cccd7cf562 2023-07-28 jbolz@nvidia.com Remove early-outs that break objectreservation counts in VulkanSC 2023-07-28 syoussefi@google.com Fix fence status check in VK_EXT_swapchain_maintenance1 test 2023-07-28 jbolz@nvidia.com Fix extended_dynamic_state tests to run in VulkanSC 2023-07-28 jbolz@nvidia.com Fix shaderexecutor and subgroup supported stage checks 2023-07-28 rgarcia@igalia.com Test PGQ with the availability bit 2023-07-28 rgarcia@igalia.com Check Vulkan version before getting device function pointers 2023-07-28 rgarcia@igalia.com Test dynamic depth clamp and static depth clip 2023-07-28 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.9 into vk-gl-cts/main 2023-07-28 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6 into vk-gl-cts/main 2023-07-21 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-cts-4.6.3 into vk-gl-cts/main 2023-07-21 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.9 into vk-gl-cts/main 2023-07-21 ziga@lunarg.com Add dynamic state stencil op tests with multiple pipelines 2023-07-21 rgarcia@igalia.com Check acceleration structure creation does not touch buffers 2023-07-21 rgarcia@igalia.com Test VkDescriptorSetVariableDescriptorCountLayoutSupport 2023-07-21 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6 into vk-gl-cts/main 2023-07-20 aitor@lunarg.com Advance glslang to fix link error for ndk26 2023-07-14 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6 into vk-gl-cts/main 2023-07-14 rgarcia@igalia.com Test strides smaller than vertex attribute sizes 2023-07-14 rgarcia@igalia.com Test RGBA expansion in vertex inputs 2023-07-14 rgarcia@igalia.com Vertex input attribute offset tests 2023-07-14 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6 into vk-gl-cts/main 2023-07-14 javed@igalia.com Add tests for 128b multisample color attachments 2023-07-14 rgarcia@igalia.com Test queries with multiview and availability bit 2023-07-14 dneto@google.com Test round-to-zero behaviour of OpConvertFToU 2023-07-14 dneto@google.com Test round-to-zero behaviour of OpConvertFToS 2023-07-10 slawomir.cygan@intel.com Fix checking support in cooperative matrix test 2023-07-07 rgarcia@igalia.com Test sample shading with dynamic sample counts 2023-07-07 ziga@lunarg.com Add more primitives generated query tests 2023-07-07 ewerness@nvidia.com Add testing for VK_KHR_ray_tracing_position_fetch 2023-07-07 aitor@lunarg.com Add required defines for Android builds with SDK33+ 2023-07-07 piotr.byszewski@mobica.com Test pipeline statistics when blitting 2023-07-07 mohd.faisal@arm.com Fix validation errors in ext_shader_tile_image CTS 2023-07-07 michal.jakubek@mobica.com Removal of copying protected image to host visible buffer 2023-07-07 rgarcia@igalia.com More dynamic rasterization sample count tests 2023-07-07 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6 into vk-gl-cts/main 2023-07-05 ziga@lunarg.com Update vulkan-docs to current version 2023-07-04 slawomir.cygan@intel.com Build fix for MSVC C++ If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,yuxinhu@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Tbr: yuxinhu@google.com Change-Id: Ib62a4c52e37902c8f605068f6ca1a786ae58bc49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4732743 Reviewed-by: Solti Ho <solti@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Mark Lobodzinski 0d886b62 2023-07-14T11:24:53 Check that MRTSS bit is supported by format Bit was added without checking ImageFormatProperties causing failures in some end2end tests. Bug: angleproject:8262 Test: Texture2DTestES3.TexStorage2D*/ES3_Vulkan* Change-Id: I7f9a4ee7c14610ee239ab1f86e4ba2c649ce76b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4684549 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 7f6e5354 2023-07-31T13:02:35 Vulkan: Skip vertex conversion if the draw has 0 vertices. If the draw call start vertex is beyond the end of the buffer, vertex conversion will no-op and no conversion buffer is created. Just skip the entire conversion process in this case and bind the empty buffer. Fix GetVertexCount not taking 0 stride into account. Bug: chromium:1464690 Change-Id: Iaffcd329595c3319fe9cd5317aef2402f9db6b1e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4734811 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 143fa68f 2023-07-27T00:00:00 Disallow read type conversions for signed 16-bit color buffers Signed 16-bit color buffers should not be converted to unsigned or 8-bit pixel types during readPixels operations. Bug: angleproject:8048 Change-Id: I27eaeb3d543732b5079bd53ef4fad1711ce3c3ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727392 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alan Zhao 391bfa35 2023-07-27T16:43:09 Fix a missing symbol issue with CaptureReplayTests The constructor for PlatformMethods is declared with __declspec(dllimport) when included in CaptureReplayTests.cpp, Ordinarily, this would fail to link on Windows because this test doesn't link against a library that has an exported definition. This test currently builds on Windows because Clang generates an available_externally definition in the object file for CaptureReplayTests.cpp for inlining. However, this doesn't build if inlining is disabled, and will no longer build once an upcoming Clang change is rolled in. To fix this, we add the config libANGLE_config to the test to change the symbol declaration to __declspec(dllexport), which appears to be what other ANGLE tests do. Bug: chromium:1468150 Change-Id: Ia92dde31ab624bbfe64d2e81fad18956abebc41b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4728461 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Steven Noonan 613eefa3 2023-06-23T03:28:14 D3D11: fix invalidation of depth/stencil attachments This caused a crash when invalidating the depth/stencil attachments of the default framebuffer. But for non-default framebuffers, discarding depth/stencil just did nothing because "rtv.valid()" would be false. Bug: angleproject:8228 Change-Id: Ic22a29f521256af0ed4fc9c203cd6d750fcc00e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639494 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Charlie Lao 5446e87e 2023-07-24T16:46:56 Improve ProgramExecutable::load performance We are calling push_back for each vector inside ProgramExecutable. This causes c++ run time to constantly re-allocate storage and copy the vector over to new storage, and impacts performance negatively. Since the vector size is know when we load program from cache, this CL calls resize to the correct size first and then update each element as we walk over, thus reduces the vector storage reallocation. This CL reduces blade_and_soul_revolution frame time from 4.48 ms to 4.35 ms on pixel 7 pro. This CL also changes ProgramBinaryTest tests to use slightly more complicated program instead of the simplest program. Bug: b/275102061 Change-Id: I8d92117b07a9ad2d0851850e473ea1b86f9868f8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4713685 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov d5ddb710 2023-07-27T15:27:52 Suppress 2 end2end tests on iOS Metal GLSLTest_ES3.LiteralInfinityOutput/ES3_Metal GLSLTest_ES3.LiteralNegativeInfinityOutput/ES3_Metal Started failing when testing was switched to iPhone 14 iOS 17.0 Bug: angleproject:8278 Change-Id: Ieca08edd02ea4350fc8362cf98d43d8ab4f0adb5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4725466 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Roman Lavrov 2d999f74 2023-07-24T11:53:02 Android: Add a way to prepare traces without running tests Example: % out/Android/angle_trace_tests --gtest_filter='*gacha_life' --prepare-only ... Prepared traces: {'gacha_life'} Can be used as a setup for running restricted_trace_perf.py Bug: b/292249127 Change-Id: I901c086a19e1d182c64ec4150ced98c198e21c4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4711826 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Mohan Maiya 4515b270 2023-07-18T14:39:42 Account for implementations that support large gl_PointSize values The PointSizeAboveMaxIsClamped end2end test intends to render a point with gl_PointSize that is 2x the implementation's max value to test if this value is clamped correctly. However, when the max gl_PointSize is large enough, like with AMD drivers, it results in the center of the point being outside of the viewport which according to the spec can be discarded. Update the test to render to a framebuffer, instead of the default window surface, one large enough to contain a point of implementation defined max point size. Bug: angleproject:2113 Test: PointSpritesTest.PointSizeAboveMaxIsClamped* Change-Id: I724440495bf5a3c93c76cc28109937a56c45f274 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4697681 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Hailin Zhang 6eea5ff4 2023-07-18T12:52:37 Vulkan: fix default MSAA framebuffer clear issue. Bug: b/290813597 Change-Id: I134c5a99382ca30dbd885a17dfa3c7ac227480ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4698113 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Shahbaz Youssefi 52fe3116 2023-07-17T16:20:54 Vulkan: Deduplicate share group's context set tracking Bug: angleproject:8224 Change-Id: I7a59a37229682fb91ff777f31e02e05d7ab2b80f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4690345 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 85095480 2023-07-17T12:31:48 Android: Update script with sync progress When running lots of traces, there can be a long pause when syncing traces to the device. Add a small update so it is clear that work is happening. Example output: I12:21:51.806619Z Syncing 1945_air_force trace (1/238) I12:21:52.178401Z Syncing 20_minutes_till_dawn trace (2/238) I12:21:52.463608Z Syncing 2_3_4_player_mini_games trace (3/238) ... Test: angle_trace_tests Bug: b/276742336 Change-Id: Id81d69b3fc678cb94c2e683a907c44950ead2117 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4690745 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Saifuddin Hitawala a64537f9 2023-07-14T17:06:37 Angle: Copy multiplanar d3d11 texture for readPixels This change performs a copy to an intermediate texture for multiplanar d3d11 textures before reading from the source texture. This is needed as we cannot read a plane directly from a multiplanar d3d11 texture. It also passes the correct format for the plane for multiplanar formats when initializing the texture instead of getting the format using the internal format. We also add a unittest performing glReadPixels for NV12/P010/P016 formats. Bug: angleproject:7998, chromium:1463924 Change-Id: I9a1708f5a846ace28ac3b6593ea80f1863348333 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4688118 Commit-Queue: Vasiliy Telezhnikov <vasilyt@chromium.org> Auto-Submit: Saifuddin Hitawala <hitawala@chromium.org> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 0518a3ff 2023-07-14T14:53:39 Android: Simplify power metrics collection Also check for missing values and dupes Bug: b/291604008 Change-Id: I909ca2bf53d3aa0bf5ba66f7168e9925cfd7da3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4685323 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>