src/tests


Log

Author Commit Date CI Message
Chris Dalton a4db9477 2022-10-06T10:35:39 Implement pixel local storage with metal::read_write textures Metal's programmable blending feature isn't available on non-Apple Silicon, so on these devices we have to polyfill pixel local storage using read_write textures, which can also be coherent if raster_order_groups are supported. This change leverages the existing PLS transformation to images, and implements just enough shader image functionality in Metal to support the pixel local storage usecase. Missing shader image features are marked with UNIMPLEMENTED(). Bug: angleproject:7279 Bug: angleproject:7792 Bug: angleproject:7794 Bug: angleproject:7797 Bug: angleproject:7803 Change-Id: Ia96a714693d352d57351a1bae4f45437dde000e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3993363 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Shahbaz Youssefi fa37af38 2022-07-12T22:47:22 Translator: Support SSO's built-in redeclaration EXT_separate_shader_objects requires that gl_Position and gl_PointSize be redeclared in the vertex shader. This is not adopted by GLES3.2, but is nevertheless required to be supported if the shader enables this extension explicitly. Bug: angleproject:6590 Change-Id: I3428851ff9f00fb63573e4322bb62fe04bf0a095 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3757918 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 7f4caaf5 2022-11-23T15:40:53 Vulkan: Fix VulkanPerformanceCounterTest.SubmittingOutsideCom VulkanPerformanceCounterTest.SubmittingOutsideCommandBufferDoesNotCollectRenderPassGarbage depends on the implementation detail on how we flush and submit commands. The recent change crrev.com/c/4038095 fixes one issue that we are now having one less submission on pixel 6 device. This CL adjust the test to account for that. This CL also changed to set mHasDeferredFlush to true only when there is a started renderpass upon FBO bind. This CL also opt in swiftshader into preferSubmitAtFBOBoundary feature for test coverage and ease of debugging since ARM GPU (which enables this flag) is not been tested on CI. Bug: b/255414841 Change-Id: I295cec33a8ca257a5d5a98604b8c4c0c29e97cdf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4054101 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Jason Macnak 2de99d47 2022-11-17T12:19:35 Reset instance/device extensions in RendererVk::onDestroy() RendererVk::initialize() adds a nullptr to the end of RendererVk::mEnabledInstanceExtensions (presumably to ensure the VK implementation crashes if it tries to read past?). If RendererVk::onDestroy() fails to clear this nullptr, it can lead to a crash when sorting the extension lists when the renderer is re-initialized the second time. Bug: b/249457381 Test: cvd start --gpu_mode=guest_swiftshader Test: EGLDisplayTest.InitalizeTerminateInitalize/ES3_Vulkan_NoFixture Change-Id: Ib24af11024cad6b28284f3a75cc862c48abec258 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4035646 Commit-Queue: Jason Macnak <natsu@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Junji Watanabe 3cfdb191 2022-11-28T14:42:34 Change ninja path to third_party/ninja/ninja It also removes `.exe` extension as it seems not necessary. Bug: chromium:1338373 Change-Id: Ic94426771d56c54b8c03627cdff6dccccec1a267 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4060128 Auto-Submit: Junji Watanabe <jwata@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Takuto Ikuta <tikuta@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Yuxin Hu d5ce0b80 2022-11-23T12:16:46 Skip crashed test on Pixel6 due to a bug in precision matching fixer We recently need to add back the code that does spriv precision match fixer to help IMG fix a triangle clipping issue. However, the code added back is causing Pixel 6 to crash on this test: dEQP-GLES31.functional.shaders.linkage.es31.tessellation.varying.rules.internal_different_precision We are skipping this test for now until we add a feature to enable the code path on IMG only. Bug: angleproject:7488 Change-Id: I0fb2738d2faabe2ca78077e0383af3d100c75b03 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4053100 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cody Northrop 71ead7b4 2022-11-20T15:56:42 Tests: Add Diablo Immortal trace Test: angle_trace_tests --gtest_filter="*diablo_immortal*" Bug: angleproject:7402 Bug: angleproject:7837 Change-Id: I7c7ccc0099707714213564740f58f04f7965a275 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4041134 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 6384f76b 2022-11-16T21:47:04 Vulkan: Move PipelineCacheAccess to namespace vk In preparation for a change that uses it in that namespace. Bug: angleproject:7369 Change-Id: Icc75b8839d702fd3e6d3d00c1d8f81619cdd89cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031150 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao c5724a8d 2022-11-17T15:48:16 Vulkan: Retain mCurrentGraphicsPipeline if RP started ContextVk::mCurrentGraphicsPipeline is created before renderpass started. Right now we retain mCurrentGraphicsPipeline immediately. In future CL of per context queue serial, renderpass will not have queue serial until started, which means we can only retain pipeline object after renderpass started. This CL moves the mRenderPassCOmmands.retain(mCurrentGraphicsPipeline) call to renderpass start time. This exposed a bug that ContextVk may have a dangling mCurrentGraphicsPipeline pointer to an already destroyed object, if the program has been destroyed. When ProgramExecutableVk::resetLayout() calls ContextVk::onProgramExecutableReset () we early out because executable no longer matches. This causes mCurrentGraphicsPipeline still point to now deleted pipeline object. This CL fix this dangling pointer bug by always clear mCurrentGraphicsPipeline to null in ContextVk::onProgramExecutableReset() without checking if program executable is the one gets reset. Bug: b/255414841 Change-Id: I6d698c517d7a948b65c465eaaa59ea0bca24e2c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4035107 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Alexey Knyazev fc1c8cd1 2022-11-01T00:00:00 Refactor validation of partial compressed texture uploads Optimized ValidCompressedSubImageSize for valid usage and simplified its control flow. Fixed false negative validation when the replaced image region does not fill the entire level but nevertheless reaches the image boundaries. Updated InternalFormat::getCompressedImageMinBlocks to use IsPVRTC1Format helper function. Fixed InternalFormat::computeCompressedImageSize for 3D compressed texture blocks. Removed redundant checks from ValidateES3TexImageParametersBase. Optimized IsPVRTC1Format helper function to be a constexpr. Adjusted tests, added suppressions for Intel and Adreno. Bug: angleproject:7473 Change-Id: I6fadce949785a35e2706b06eeb00e878aa3710a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4037671 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi 68b47e58 2022-11-16T10:46:59 Vulkan: Initial support for VK_EXT_graphics_pipeline_library When available, this change uses VK_EXT_graphics_pipeline_library to create pipelines. Currently, it is only used when graphicsPipelineLibraryFastLinking is available. This restricts the use of this extension to devices where monolithic pipelines are not any more performant than linked libraries. A future change adds support for other implementations by providing async pipeline creation. Bug: angleproject:7369 Change-Id: I1e3b7ac4aa56e75c7d6f4d0d5ea91cb0b862e581 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031489 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Steven Noonan <steven@valvesoftware.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 1f69f580 2022-11-18T14:33:20 Perf tests: Add --fixed-test-time-with-warmup Warmup trials combined with fixed-test-time was broken recently. It was already fragile and only worked when parameters were provided in the right order. On Android we're relying on this combination to get steady results without hitting thermal limits. To address this: - Add a new parameter that encapsulates the combination - ASSERT that flags aren't provided in unsupported combinations Test: python3 restricted_trace_perf.py --fixedtime 10 Bug: angleproject:7755 Change-Id: I56fce1f65d4f0538e623951163a9c8736cb3fb03 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4027282 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 202fcb8d 2022-11-21T15:05:13 TraceTest: Route EGLSync entry points through WGL Test: diablo_immortal trace Bug: angleproject:7402 Bug: angleproject:7839 Change-Id: I8897337bac38cb1923e58a9503de01454766158d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4044865 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
angle-autoroll 356b2a59 2022-11-18T18:50:03 Roll VK-GL-CTS from c4fe10a0c86d to 2db7b0a1c310 (7 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/c4fe10a0c86d..2db7b0a1c310 2022-11-18 tapani.palli@intel.com Fix for the string query tests on desktop GL 2022-11-18 aitor@lunarg.com Add tests for out-param aliasing against other variables 2022-11-18 cturner@igalia.com Fix a typo setupVertexInputStete -> setupVertexInputState 2022-11-18 rgarcia@igalia.com Improve failure error messages in format_feature_flags2 tests 2022-11-18 amber@igalia.com Add tests for linearly tiled images 2022-11-17 quic_mnetsch@quicinc.com Merge vk-gl-cts/vulkan-cts-1.3.4 into vk-gl-cts/main 2022-11-16 ziga@lunarg.com Merge vk-gl-cts/dev/VK_EXT_pipeline_protected_access into vk-gl-cts/main 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 jonahr@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: jonahr@google.com Change-Id: Ia91e36411440ba5fe572d0971b54ae6857bbeb9c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4037817 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Alexey Knyazev 81e9dc56 2022-11-04T00:00:00 Reland "Metal: Skip disabled draw buffers" This is a reland of commit 4b084310d7bbb33631d58a461eb5814c12220926 Do not try to create a command encoder with no attachments since it may crash some Metal drivers. Do not reset pipeline descriptors. Original change's description: > Metal: Skip disabled draw buffers > > When creating render pass descriptors, do not > assign textures to disabled color attachments. > > When creating pipeline descriptors, reset > pixel formats of disabled color attachments. > > Exit early when MTLRenderCommandEncoder is not created. > > Added: > * DrawBuffersTest.None > * DrawBuffersTest.NoneWithDepth > * DrawBuffersTest.NoneWithStencil > * DrawBuffersTestES3.DrawWithDisabledIncompatibleAttachment > > Fixes: > * conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html > > Bug: angleproject:6430 > Change-Id: I7f650c761f757985b027388c350c01340a83fd51 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4003180 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Bug: angleproject:6430 Change-Id: I13977bd7ef32c4c85420706215b4f4d3a65629ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4030310 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Stephen White 386ef2ee 2022-11-17T13:16:27 Fix EGL validation of core robustness attribute. Implement EGL validation of EGL_CONTEXT_OPENGL_ROBUST_ACCESS. Previously, only the _EXT flavour was validated. Note that EGLRobustnessTest was changed to only exercise the core version. Bug: chromium:1385480 Change-Id: I51f93d6cd344d073cd9656c9fff9636ca4eac99d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4030882 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Austin Eng 91ee237f 2022-11-17T03:19:34 Revert "Metal: Skip disabled draw buffers" This reverts commit 4b084310d7bbb33631d58a461eb5814c12220926. Reason for revert: Crashing in webgl2_conformance_metal_passthrough_tests https://chromium-review.googlesource.com/c/angle/angle/+/4003180/comments/6e35ee21_38288238a Original change's description: > Metal: Skip disabled draw buffers > > When creating render pass descriptors, do not > assign textures to disabled color attachments. > > When creating pipeline descriptors, reset > pixel formats of disabled color attachments. > > Exit early when MTLRenderCommandEncoder is not created. > > Added: > * DrawBuffersTest.None > * DrawBuffersTest.NoneWithDepth > * DrawBuffersTest.NoneWithStencil > * DrawBuffersTestES3.DrawWithDisabledIncompatibleAttachment > > Fixes: > * conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html > > Bug: angleproject:6430 > Change-Id: I7f650c761f757985b027388c350c01340a83fd51 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4003180 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Bug: angleproject:6430 Change-Id: I485691bdcc4214ed6958f606591f23331bfbea53 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4032391 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Austin Eng <enga@google.com> Reviewed-by: Austin Eng <enga@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov b205207a 2022-11-16T14:39:00 Lock gpu clocks using nvidia-smi to avoid overheating For now only applies to Windows Nvidia (GTX 1660) bots where I tested this. Default clocks boost to 1800+ reporting 110W+ initial power usage which can't be dissipated by the setup and and gpu quickly hits ~90C and enters aggressive throttling. Locking to 1410MHz yield a much more modest 50~60W usage with reasonable gpu temps in the 70C~80C range over long runs at 100% utilization. Also log gpu temperature before/after running tests. Bug: angleproject:7671 Change-Id: Id43bede3b1d6a445f8caee6bbbaa43f7f380199b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031495 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Alexey Knyazev 4b084310 2022-11-04T00:00:00 Metal: Skip disabled draw buffers When creating render pass descriptors, do not assign textures to disabled color attachments. When creating pipeline descriptors, reset pixel formats of disabled color attachments. Exit early when MTLRenderCommandEncoder is not created. Added: * DrawBuffersTest.None * DrawBuffersTest.NoneWithDepth * DrawBuffersTest.NoneWithStencil * DrawBuffersTestES3.DrawWithDisabledIncompatibleAttachment Fixes: * conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html Bug: angleproject:6430 Change-Id: I7f650c761f757985b027388c350c01340a83fd51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4003180 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Roman Lavrov e6491c2f 2022-11-15T19:35:47 Revert "Add temporary logging of gold_session.Initialize stdout." This reverts commit 05d86e06003bc9bcfdf62d769d6c6229e7680f5e. Reason for revert: this helped caught an issue https://anglebug.com/7550#c6, but recent outputs seem normal so no longer needed Original change's description: > Add temporary logging of gold_session.Initialize stdout. > > Normally looks like: > Loaded 1549 known hashes > ... > > Suspecting that in failure cases it's going to result in something > different. > > Bug: angleproject:7550 > Change-Id: I0190d4f679fc4161fc36a3008ba2e7d6d4764277 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3804752 > Commit-Queue: Roman Lavrov <romanl@google.com> > Reviewed-by: Brian Sheedy <bsheedy@chromium.org> Bug: angleproject:7550 Change-Id: I7c6e1569299ca4c834f29fcd01c3e707e373de16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4024759 Reviewed-by: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Roman Lavrov <romanl@google.com>
Roman Lavrov d8d85253 2022-11-15T12:38:05 Add gFixtures.clear() to ReleaseFixtures Not necessary as we only call it on termination but if ReleaseFixtures is called for e.g. eviction testing, it leaves bad state behind. Bug: b/258723409 Change-Id: I345c9197742f78ec952cacecdc9ba55b518f9f53 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4024757 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Cody Northrop 124ba087 2022-11-14T15:14:37 Tests: Add Minetest trace Test: angle_trace_tests --gtest_filter="*minetest*" Bug: angleproject:7831 Change-Id: If182136cd14207d7243a2fcd56737dd0ea28b2de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4022260 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Roman Lavrov f67d1224 2022-11-15T10:55:50 Delete osWindow and eglWindow in ReleaseFixtures valgrind rightfully reports these as leaks Bug: b/258723409 Change-Id: I02dbd771c6f7bd9e7df2269c77d8bd95af593044 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4025992 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Alexey Knyazev 44d8fef8 2022-11-01T00:00:00 Add ANGLE_provoking_vertex spec Renamed provoking vertex enums to use _ANGLE suffix. The newly defined enums alias those from the desktop OpenGL extensions. Updated tests to use the new enum names. Bug: angleproject:2829 Change-Id: I72b686773536d3d54a653114cee5292007510a55 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4013700 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Dan Glastonbury 40e4bc63 2022-11-09T12:40:48 Make DrawRangeElements validation consistent with DrawElements According to the WebGL specification, when an empty buffer is bound to GL_ELEMENT_ARRAY_BUFFER binding point, one of the possibilities is to return an error when trying to draw with an index count other than zero. This is the behavior of DrawElements variants but not DrawRangeElements. This change brings variants of DrawRangeElements behavior in line with that of DrawElements. Bug: angleproject:7822 Change-Id: I6844efd1038d95c652b72e52209dfdd74f006f9b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4015418 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Jonah Ryan-Davis fe3b0e38 2022-11-14T13:05:56 Skip flaky PBOExtension tests on Win until fix lands. An extra buffer is allocated by CoherentBufferTracker::canProtectDirectly that is being caught by the Capture/Replay context serializations. Bug: angleproject:7814 Change-Id: Id0b375d8fe7213fe0a34b667b721300fbc3908f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4023668 Auto-Submit: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Roman Lavrov d13c14d0 2022-11-11T10:32:13 Crash with a mesage when OSWindow::New returns nullptr Happens when !IsX11WindowAvailable() Bug: b/258723409 Change-Id: Ib16f7ffa9c9cd7ca75cb5659ae393b87d1e96326 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4023025 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 518209e8 2022-11-10T16:37:20 Fix Mac build sprintf was deprecated Bug: angleproject:7824 Change-Id: If261426f1bf4e8d7997f051b87ea4817d1e3a264 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4020418 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop fbf2d2f3 2022-11-05T23:00:51 Tests: Add Hungry Shark Evolution trace Test: angle_trace_tests --gtest_filter=TraceTest.hungry_shark_evolution Bug: angleproject:7820 Change-Id: I6e83efbb566d512c8e60bd27f00144c8c28593e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4007226 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 5459baf9 2022-11-05T21:47:12 Tests: Add 1945 Air Force trace Test: angle_trace_tests --gtest_filter=TraceTest.1945_air_force Bug: angleproject:7819 Change-Id: I90ed9e74e206bd6e2d2b1ca0071d8526f582b353 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4007225 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 7fefd230 2022-10-20T00:00:00 GL: Adjust APPLE_clip_distance exposure Partial revert of I458cad29c10b9d9193c5233e24bac53361ba104e APPLE_clip_distance cannot be implemented on top of EXT_clip_cull_distance because the former is defined both for ES 2.0 and ES 3.0 while the latter is defined only for ES 3.0. Although some ES 3.0+ drivers allow gl_ClipDistance built-in in ESSL 1.00 shaders, this behavior is not specified so ANGLE should not allow it. Added independent ESSL 3.00 gl_ClipDistance and gl_MaxClipDistances definitions. Adjusted translator unit tests. Bug: angleproject:4452 Change-Id: Ib582ce0ac7ccb65f0200ef1d17eaab0c83b228cf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963745 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 78e28cb8 2022-11-03T11:05:48 Vulkan: Remove glslang fallback ANGLE's SPIR-V generator is battle tested by now. Bug: angleproject:6210 Change-Id: I2ed88642e3ede435e3f906fbd701133be6873fb7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4002868 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Roman Lavrov 6b3e4d8b 2022-11-07T09:32:33 Ensure replay is at the first frame on startTest(). Currently trials continue from the next frame after warmup, so the frame that they start from fluctuate depending on how the warmup went. This was supposed to be tackled by aligning to frameCount() but the first warmup trial wasn't aligned as it would stop after a condition was reached. Only stop on mTrialNumStepsPerformed % stepAlignment == 0 Bug: angleproject:7671 Change-Id: I0da74d89547eda6e78762ee7745204d0da6fe73a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4008998 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Gert Wollny 98469694 2022-11-02T12:13:35 retrace: better error reporting For a resonable error reporting the output must be captured. Print the output on error only, if it is not written anyway. Bug: angleproject:7800 Change-Id: Ie0ca819b7e269317073f8f1c79819e35a33a4325 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4003220 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Yuly Novikov ea86e8a2 2022-11-07T14:33:57 Skip PixelLocalStorageTest.DrawStateReset on Pixel 6 Fails similarly to existing suppressions on Pixel 4 Bug: angleproject:7771 Change-Id: I4b73728827408be71de3f9e9cc2b1808c2cb0597 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4009018 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Chris Dalton 9bda9a79 2022-10-22T22:05:11 Add Store Ops to pixel local storage Browsers will need the ability to pre-empt pixel local storage, which means every plane will need a backing store to dump to. Store Ops allow the app to still avoid memory transactions at the end of PLS even if their plane has a backing texture. Bug: angleproject:7279 Change-Id: I3a3efa21773f87c03cd346a996e3c638028c68ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3974652 Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Chris Dalton 54f29c4a 2022-11-04T09:57:36 Suppress PixelLocalStorageTest.ClearState on iOS (simulator) Update the suppression after a rename of the test. Bug: angleproject:7756 Change-Id: Ia389b87d9ca2356b0a76c1a2d389bc8f5e1eed7c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4006413 Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Chris Dalton 3605b399 2022-10-20T17:00:02 Move PLS clear values back into context state The API that required packing raw data into a buffer was un-ergonomic for developers and difficult to implement for WebGL vendors. Bug: angleproject:7279 Change-Id: If7c98908c285462c5775e8e2d8811883be139f64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3972376 Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 71d28a9b 2022-11-02T13:19:20 Vulkan: Remove unused ShaderAndSerial The serial in the ShaderAndSerial is unused. This CL removed ShaderAndSerial and replaced with ShaderModule directly. Bug: b/257116399 Change-Id: I50d42af7818a12888309a80423531d75135e0bfd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3998747 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Dalton 5e95a4d9 2022-10-07T00:52:38 Add an EXT_shader_pixel_local_storage impl of PLS Translates ANGLE_shader_pixel_local_storage shaders directly to EXT_shader_pixel_local_storage. Polyfills load/store operations using internal fullscreen draws. Since the ANGLE extension needs the ability to preserve all active PLS planes to textures, we can only support this extension when the backend context also has access to ES 3.1 shader images. Bug: angleproject:7279 Bug: angleproject:7771 Change-Id: Id348bde412efcc081ff29ee05ec59ad652f77569 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3966075 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny e3d0bee6 2022-11-01T13:54:16 retrace: Check for the output json file after upgrade To check the success of writing a new trace we have to look in the output directory, otherwise even skipped traces will report success. Bug: angleproject:7800 Change-Id: Icd2d79c3ebe55cd02f55635b1ccf48d19f46acea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3996704 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Cody Northrop bae82cfa 2022-10-31T17:11:45 TraceTest: Route eglGetError through WGL eglGetError is not implemented, but shouldn't crash on Windows. Bug: angleproject:7799 Change-Id: I61158ab21b86539020b5d492486333a56908ab69 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3995984 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Sean Risser f3e047b5 2022-10-12T16:28:32 Add new retrace command get_min_reqs `retrace_restricted_traces.py get_min_reqs` finds the minimum required GLES version and extensions and record them to a trace's json file. TracePerfTest has also been modified to use the new "RequiredExtensions" json field to determine if it should run a test or not. This allows several lines to be removed from TracePerfTest's constructor. get_min_reqs uses a divide-and-conquer strategy to find the extensions. This approach should be faster for traces where the number of required extensions is less than 20. This adds a new command to retrace_restricted_traces.py called get_min_reqs. This runs an existing trace multiple times to find what the minimum required GLES version is, then records that version to the trace's json file. Bug: angleproject:7639 Change-Id: I42530e438054efec1ad79ababebe06d221d5c695 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3884175 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Sean Risser <srisser@google.com>
Chris Dalton 9f693aa3 2022-10-22T14:45:59 Implement an allow list for PLS In order to guarantee no data is lost while using the EXT_shader_pixel_local_storage extension, we need to restrict applications to a small subset of commands while pixel local storage is active. This CL implements the allow list for GL entrypoints using wildcard matching inside the code generator, and adds custom validation for the more specific restrictions that go into effect when PLS is active. Bug: angleproject:7279 Change-Id: I5dd48bd93c10e8775f32be32a4fcf17855eb2f0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3932552 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Gert Wollny 9737c632 2022-10-24T11:34:51 retrace: Add --show-test-stdout arg to validation This argument is checked when running validation, so we have to define it. Bug: angleproject:7800 Change-Id: Ia24a8c8a82a8bdcefcf707bd9c9183ead4ee095d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3990622 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny 822471f0 2022-10-24T08:08:03 retrace: Add a catch-all clause to report all errors With that running the a batch of tests from an external script can bail out early when a trace fails. Bug: angleproject:7800 Change-Id: I5041e863a8cdc212b7057b88e3f0fd68a5115470 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3990621 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev adcda453 2022-11-01T00:00:00 Suppress new clip distance tests on iOS Bug: angleproject:7768 Change-Id: Ib61efbb97dd9d6b238d4a59fc50983515f9d89fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3996442 Auto-Submit: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Alexey Knyazev 805e00b8 2022-10-27T00:00:00 D3D11: Add clip and cull distance support Added gl_ClipDistance and gl_CullDistance support to HLSL translator. Added enabled clip distance GL state emulation. Added limitSimultaneousClipAndCullDistanceUsage limitation. Expanded and optimized related end2end tests. Bug: angleproject:4452 Change-Id: Id66312505254ceff43d5258d486ddcdb0462db47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3990944 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Cody Northrop 9d9b8b07 2022-10-24T15:56:42 Docs: Fix up trace replay options The restricted_traces README was missed in prior update. Bug: angleproject:7755 Change-Id: I65380ef902d3b8a39cec16829c3e0e8170e2667b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3975599 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill a9868110 2022-09-15T17:29:04 Add support for testing with Mesa + Zink. To run a trace test with zink, use --use-gl=zink. Bug: angleproject:7689 Change-Id: I70073756f903db1c224fe6175d55be4cad637aca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3899382 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Roman Lavrov a77a80a1 2022-10-25T13:54:33 Wait for DestroyNotify and ConfigureNotify events. There appears to be a race condition where XDestroyWindow+XCreateWindow ignores the new size (the same window normally gets reused but this only happens sometimes on some X11 versions). Wait until we get the destroy notification which should avoid races between termination and initialization. However, it turns out just doing that breaks things because tests get to termination before even giving the window a chance to set up fully (e.g. ConfigureNotify) which only happens after making the window visible.. so additionally block in setVisible until we get ConfigureNotify. aaand turns out RobustBufferAccessBehaviorTest requires setVisible(true) - tests fail when running on my local Linux and pass now that I added setWindowVisible! Bug: angleproject:7620 Change-Id: I93f2f05cb9d1c62776636bec976d94ead4cf0fd1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3979168 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Greg Schlomoff 81a244de 2022-10-10T15:32:25 Adding a class to perform ASTC texture decompression on the CPU This significantly improves performance by caching and re-using the ASTC decoder context, and using multi-threaded decompression. This code was originally written for gfxstream. Bug: b/250688943 Change-Id: I1727447907f2e25cf9b854ffcc9ccfc04db2fb91 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3929008 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 1c197e06 2022-10-24T16:53:01 Remove dEQP suppression for tests that already passed Bug: b/224537784 Bug: angleproject:6898 Bug: angleproject:6910 Bug: angleproject:6918 Change-Id: I25f1d0d6fb3147d11cdf352290a683beed5082f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3976789 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Constantine Shablya ef8350a6 2022-10-21T06:30:51 GLES1Renderer: Handle GL_BGRA the same way we handle GL_RGBA Fixes minetest Bug: angleproject:7774 Change-Id: Iacbe8cb9aa434ec624bfaf056092b77bda468b3f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3970417 Commit-Queue: Constantine Shablya <constantine.shablya@collabora.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Constantine Shablya <constantine.shablya@collabora.com>
Roman Lavrov 30439960 2022-10-24T17:30:18 Unbreak run_angle_android_test. Broken by ListTests removed in https://crrev.com/c/3963651 Move helper to angle_test_util. Bug: angleproject:7755 Change-Id: I1eec442cf3e2bf6c24335d4c294a68e7e868b814 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3975353 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Cody Northrop 11a3e06b 2022-10-24T11:26:05 Android: Fix restricted_trace_perf.py Test: restricted_trace_perf.py --fixedtime 10 --power --loop-count 5 Bug: angleproject:7755 Change-Id: Idbd2ccc73bd7409e2538346897b254403c1fd5d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3975592 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill dc62b3ee 2022-10-10T21:00:16 Capture/Replay: Add trace interpreter. Also adds a self-test using the retrace script. Bug: angleproject:7752 Change-Id: I1985b47250bef99726d2ca2d90bef859208e357e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3965128 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Jamie Madill bc2e9eea 2022-10-15T14:38:15 Refine sampling of trace perf tests. - The warmup algorithm now computes an accurate steps estimate. - Bump up the trials, samples, and trial time in the runner. Bug: angleproject:7671 Change-Id: I89a73472fd72af73f695c9107119cbc559d2d6e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956946 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Solti 97beb2f7 2022-10-21T18:21:16 disable pixel6 for VertexAttributeTestES31 tests Bug: angleproject:7770 Change-Id: Icc5d750ab222d2757e9551cbe3c2e7816b77a040 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3971009 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Solti Ho <solti@google.com>
Solti f9c58274 2022-10-21T18:00:06 Disable test: FramebufferTest_ES3.DrawWithDifferentPreRotations Bug: angleproject:7778 Change-Id: I02d71e031bb0c8455599014bcae975a1e5f5200f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3971006 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Solti Ho <solti@google.com>
Jamie Madill a41c6173 2022-10-16T08:28:53 Simplify trace test names. Originally we had a lot of conditionally enabled test configs in angle_perftests, that we enabled behind a flag because the total runtime would be too large if we left everything enabled. This CL switches to using a single test set, one for each trace, and using a the same command-line API we use in dEQP and the ANGLE samples to pick a single configuration. This makes it easier to pick exactly what configurations you want from the command line. Because we only run one configuration each time, we don't need to specialize the test name to include the configuration info. We can also simplify TracePerfTest -> TraceTest since these tests are run for both perf and correctness. Old name: TracePerfTest.Run/vulkan_trex_200 New name: TraceTest.trex_200 Example for tests that don't use default arguments: Old args: --enable-all-trace-tests Old name: TracePerfTest.Run/native_offscreen_trex_200 New args: --use-gl=native --offscreen New name: TraceTest.trex_200 Bug: angleproject:7755 Change-Id: Id93cf5725eff2e2c6b3b14804bc2902f38306e7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3966535 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Jamie Madill 0c3b4fe8 2022-10-21T10:17:31 Reduce --use-angle spam in TracePerfTest. Instead of recalculating the back-end for every trace, we can do it once in the test instantiation and pass the results around. Bug: angleproject:7755 Change-Id: I492c639d91ee6ad6a325cff090813aaeb900b2d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3971080 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 0d635faf 2022-10-21T09:43:13 Enable capture by default on release non-Android bots. This will enable running the trace interpreter tests with ANGLE. Also this cleans up a case where we now default turning off the trace tests when we're building with non-clang. Bug: angleproject:7752 Change-Id: I7019bb969d859e06fafc7621e8620b8a2375261e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3971079 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Jamie Madill <jmadill@chromium.org>
Roman Lavrov cc35022f 2022-10-21T08:42:31 Only allow missing output file when listing tests. Avoids potentially swallowing an error in non-list-test mode Bug: angleproject:7755 Change-Id: I4e7fba6a5d110d568d71c31585fffdb189ec12a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3971078 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Jamie Madill 06ecc918 2022-10-10T20:59:38 Capture/Replay: Optionally emit C sources. This adds an option that controls if we can write out simplified C replays. Once the work is finished we can remove the option and only allow emitting C instead of both C and CPP. Required emitting multi-line strings differently, as well as conditionalizing a few other language differences. Bug: angleproject:7713 Change-Id: I3303134316ed3fc1b4286bcd32961e8f7ecfbb06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3953339 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi adde4265 2022-10-19T23:33:48 Vulkan: Separate pipeline cache query and insertion In preparation for VK_EXT_graphics_pipeline_library usage, the query and insertion functions of the graphics pipeline cache are separated. This will allow the implementation using VK_EXT_graphics_pipeline_library to query the monolithic pipeline cache, and if a pipeline is not found, create it through the pipeline library caches. Bug: angleproject:7369 Change-Id: Iebf7669ae3ea95e180646198c4861cc59d67e580 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963854 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 5c0b329e 2022-10-19T16:59:58 Vulkan: Clean up rotation spec const update Update during makeCurrent was done by invalidating the program, and then at pipeline creation time the spec const was updated. This is changed so that makeCurrent updates the spec const directly, and avoid invalidating the pipeline. Also removes spec const usage calculation, as it's unused. Bug: angleproject:7369 Change-Id: I79444ce4173c4db9c6800fb02afd9e8447a25f82 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963853 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 873650f4 2022-10-19T16:51:53 run_perf_tests.py: Fix test list unexpected error. The tests were failing because of a failure to pull the test json output from the device after --list-tests. This failure was benign because the test lists still came through to the test runner and it was able to proceed, but it was causing an error message. Also changes the runner to fail early if there's any error during --list-tests. Bug: angleproject:7755 Change-Id: I67bceec6b69fd2856136313d5e456e3c1f1caccf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3964753 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Auto-Submit: Jamie Madill <jmadill@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Jamie Madill 4bfb749f 2022-10-10T20:59:48 Capture/Replay: Move shared trace code into src/common. This will let them be accessible to the test harnesses. The trace tests interpreter will need direct access to the classes that we move in this CL. This CL also moves the GLenum utils into the common folder, where they were already used by some other tests. Bug: angleproject:7752 Change-Id: I97ad607938ef29bc316f6d40098478e002ea8128 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963362 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 8403e4c5 2022-10-10T20:59:29 EGL: Resource IDs for Surface, Context and EGL Image. This will make these classes play nicely with resource maps. As these objects are used in a lot of places, and simplified C can't handle unordered_map, it's necessary to index the maps by simple packed IDs in capture/replay code. This indirection will also have increased safety as we validate EGL resource ID handle values before accessing the memory directly. Also hides some of the other EGL capture methods behind helper methods to simplify the C code and hide assignments and other complex maps. Bug: angleproject:7758 Change-Id: Ibc7bb56430d3068bd38877c9dfb011979d4ea234 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3957164 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 7b4b56f0 2022-10-19T00:05:22 Vulkan: Missing output mask in GraphicsPipelineDesc Currently, there's some program state used in creating pipelines alongside what's in GraphicsPipelineDesc. This works because the pipeline cache lives in the program executable. With VK_EXT_graphics_pipeline_library however, we could create vertex input and fragment output partial pipelines that are independent from and are shared between multiple programs. To support this, any program state that's necessary for pipeline creation should be part of the GraphicsPipelineDesc structure. This change places the state affecting fragment output in GraphicsPipelineDesc. Bug: angleproject:7369 Change-Id: I2e48fc9da220475e1b2ed376fc947ce13489610e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963652 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi f0e3d8f9 2022-10-18T13:51:31 Vulkan: Shader component type in GraphicsPipelineDesc Currently, there's some program state used in creating pipelines alongside what's in GraphicsPipelineDesc. This works because the pipeline cache lives in the program executable. With VK_EXT_graphics_pipeline_library however, we could create vertex input and fragment output partial pipelines that are independent from and are shared between multiple programs. To support this, any program state that's necessary for pipeline creation should be part of the GraphicsPipelineDesc structure. This change places the state affecting vertex input in GraphicsPipelineDesc. A follow up change will do the same for state affecting fragment output. Bug: angleproject:7369 Change-Id: Iccf691a1597d786efa1625f7b1c22f906201f2e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3964751 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev d8fe28dd 2022-10-19T00:00:00 Suppress clip distance tests on iOS Bug: angleproject:4452 Bug: angleproject:7768 Change-Id: Iabea037ded6ee3cfa0c325c59099772ac6adbbc6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963134 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi 025504b9 2022-10-17T17:03:03 Pass worker pools to image load functions In preparation for the ASTC decoder using threaded decoding. Bug: b/250688943 Change-Id: I70d669bcb57b900dbb633304182e174aec362203 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3961339 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Greg Schlomoff <gregschlom@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi fbd7d5fa 2022-10-17T17:20:09 Move thread pool classes to common/ In preparation for access by image_util files. Bug: b/250688943 Change-Id: I24777269a5071eae9a60f939635d01ed7246461f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3961454 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill e495e7fd 2022-10-14T13:52:47 Redo perf and trace test parameters. - Moves common argument parsing code into test_util. - Changes the perf test arg parsing to use the common functions. - Adds new --use-angle and --use-gl parameters to the trace tests. - Also adds new --offscreen and --vsync parameters to the traces. - Removes the now unneeded --enable-all-trace-tests argument. - Both --arg=value and --arg value work in test suites now. Now, instead of using --enable-all-trace-tests you can specify the backend with --use-angle=swiftshader, --offscreen, or combinations of those parameters. The test names are the same as they were before, but only the configured tests will run in a session. We could opt to simplify the test names in later CLs if we want to simplify the test running. Ideally we'd keep the perf reporting the same because then we'd keep the time series the same on the test infra. This also allows us to split up the trace tests into separate targets on the bots, which will better allow us to control the workloads and sampling of the tests. For example: - angle_perftests becomes - angle_perftests (microbenchmarks) - angle_trace_perf_vulkan_tests (traces with vulkan back-end) - angle_trace_perf_native_tests (traces with system GL) Bug: angleproject:7755 Change-Id: I537168f3a6de96425dfda05ed98220eff9b19b76 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956937 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 03eccad2 2022-10-18T10:39:53 Tests: Add reduced crashing shader test Reduced case of a shader that crashes an app during SPIR-V compile. Test: GLSLTest_ES3.NestedPowFromUniform Bug: b/217922015 Change-Id: I8d0ccd8b2c4f4e8e51ac39c9dbfaafbf48423157 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3965051 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill d6ca85bd 2022-10-18T17:10:41 run_perf_tests.py: Remove unneeded Android args. These only apply to the Chromium Android test runner, which we no longer use for this script. Bug: angleproject:7755 Change-Id: I311ac204e1999a77872a76f6d0b9d149f7ac409e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963651 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev fec93f40 2022-10-14T00:00:00 GL: Support clip and cull distance extensions Use EXT_clip_cull_distance on OpenGL ES to expose APPLE_clip_distance; use ARB_cull_distance on OpenGL to expose EXT_clip_cull_distance. Added disableClipCullDistance OpenGL workaround. Bug: angleproject:4452 Change-Id: I458cad29c10b9d9193c5233e24bac53361ba104e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956075 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 11f8f537 2022-10-17T16:59:50 Capture/Replay: Improvements to self-test. - print errors in the replay test - catch missing serialization - clean stale json output files before each replay - add flag to show replay stdout - fix help message Bug: angleproject:7731 Change-Id: Ibeb780f417bdbed4b249038920963dd1bd68f4aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3962248 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill e0d2c7f2 2022-10-18T15:07:25 retrace script: Update trace test suite name. Bug: angleproject:7755 Change-Id: I1322543b199aacb4f083b67f0bc4f8bf93ea65b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963359 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Roman Lavrov d22edf57 2022-10-18T14:57:55 Perf Tests: fail test on GL_CONTEXT_LOST after glFinish(). Interrupts the test in the case I ran into: ../../src/tests/perf_tests/ANGLEPerfTest.cpp:383: Failure Failed Context lost Warm-up trial took 1.11 seconds. [ FAILED ] TracePerfTest.Run/vulkan_dr_driving, where GetParam() = vulkan_dr_driving (1476 ms) [----------] 1 test from TracePerfTest (1476 ms total) Bug: angleproject:7762 Change-Id: Iaf416dbdaa0eb846b744bdb4d1eb596f0c2bb1a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963360 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Jamie Madill 0d203aef 2022-10-16T10:08:01 EGL: Add ID types for egl::Surface and egl::Image. This is in preparation for using resource maps for Context, Surface and EGLImage. The map change will make it much easier to work with the trace fixture. It will also have a small benefit in safety as we will longer be casting raw pointers for these types. As these objects are used in a lot of places, and simplified C can't handle unordered_map, it's necessary to index the maps by simple packed IDs in capture/replay code. Bug: angleproject:7758 Change-Id: Ib1d19622a4f2a6f0458cc28f5bbe30bb9f349b98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3957163 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tiago Vignatti 4be8294c 2022-10-06T09:50:28 Tests: Enable EGL_ANGLE_iosurface_client_buffer tests on iOS This enables EGL_ANGLE_iosurface_client_buffer extension tests on iOS platform. A few OpenGLES related tests had to be suppressed though. I'm getting the following: [==========] 96 tests from 1 test suite ran. (960 ms total) [ PASSED ] 66 tests. [ SKIPPED ] 30 tests, listed below: [ SKIPPED ] IOSurfaceClientBufferTest.RenderToBGRX8888IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToBGRX8888IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToRG88IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToRG88IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToR8IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToR8IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToR16IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToR16IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToR16IOSurface/ES2_Metal [ SKIPPED ] IOSurfaceClientBufferTest.RenderToR16IOSurface/ES3_Metal [ SKIPPED ] IOSurfaceClientBufferTest.RenderToBGRA1010102IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToBGRA1010102IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromBGRA1010102IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromBGRA1010102IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToRGBA16FIOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToRGBA16FIOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToRGBA16FIOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToRGBA16FIOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToYUV420IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToYUV420IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToYUV420IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToYUV420IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToP010IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.RenderToP010IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToP010IOSurface/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToP010IOSurface/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.MakeCurrent/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.MakeCurrent/ES3_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromBGRX8888IOSurfaceWithTexBaseMaxLevelSetToZero/ES2_OpenGL [ SKIPPED ] IOSurfaceClientBufferTest.ReadFromBGRX8888IOSurfaceWithTexBaseMaxLevelSetToZero/ES2_Metal Test: iPhone 13 and ./iossim -d 'iPhone 13' -c \ '--gtest_filter=\*IOSurfaceClientBufferTest\*' angle_end2end_tests.app Bug: angleproject:5491 Change-Id: Id7c489ae41b11442a2dd06174b2c279894e83401 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3957539 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Gregg Tavares 968041b5 2022-08-19T12:11:23 Metal: Optimized BufferSubData per device Adds a staging buffer path which means there are 4 paths for bufferSubData. 1. direct copy * get a pointer to the buffer * copy the new data to the buffer * if the buffer is managed, tell metal which part was updated 2. use a shadow copy * copy the data to a shadow copy * copy the entire shadow to a new buffer * start using the new buffer 3. use a new buffer * get a new buffer (or unused) * put the new data in the new buffer * blit any unchanged data from the old buffer to the new buffer * start using the new buffer 4. use a staging buffer * get a staging buffer * put the new data in the staging buffer * blit from the staging buffer to the existing buffer. Further, there are 3 types of memory storage modes. Managed, Staged, Private. Based on the GPU type different storage modes and different paths in different sitatutions are more performant. So, add feature flags to select paths by GPU. Bug: angleproject:7544 Change-Id: I741dd1874201043416374194bd2001ded8dbd9b4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3842641 Reviewed-by: Kyle Piddington <kpiddington@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Jamie Madill 0e0ea026 2022-10-13T18:29:33 Split trace tests out into angle_trace_tests. This makes angle_perftests strictly for microbenchmarks. The trace tests are a better separated target because they are for both gold correctness tests and performance. You can now use the GN arg "build_angle_trace_tests" to control building the trace tests. "build_angle_trace_perf_tests" is still supported for compatibility. Updates the infra scripts to use this new trace tests target. Also updates the build so by default we'll build the trace tests if you check them out, without needing a custom arg. Also updates docs. Bug: angleproject:7755 Change-Id: I2b1ae67799234cc1aefe7cda5f3af945c3f867fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3953340 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 09b079bb 2022-10-14T14:28:10 Vulkan: Move pipeline subset out of pipeline desc This way, the same pipeline desc can be used to query multiple caches with different subsets. This design requires the pipeline cache to be templated, while the previous design required the desc to be copied (so the subset bits would be different). Bug: angleproject:7369 Change-Id: Id3fd92e6f9b059069952ff092a5c867e79287604 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956940 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuly Novikov b354aa4d 2022-10-17T13:18:17 Skip some end2end tests failing on iOS Bug: angleproject:7756 Change-Id: Ia9a7d9260feb97d094b2e58104d7cdb4a866e5b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3960968 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi eaa71709 2022-10-14T11:47:07 Vulkan: s/ContextVk/Context in pipeline creation With VK_EXT_graphics_pipeline_library, pipeline creation may happen on a thread. This change prepares the interface such that only a vk::Context is needed, instead of ContextVk. Bug: angleproject:7369 Change-Id: Ib7e9e7e140e27a4af71bffee069c88e3d7f47dfa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956935 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 19fb11b6 2022-10-14T11:12:20 Vulkan: Merge warmed up compute cache into renderer It was done for graphics, but was accidentally missing for compute. Bug: angleproject:5881 Bug: angleproject:7629 Change-Id: I28a4c2e38b07b08e1636b443f2c0963130965ebb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956496 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Jamie Madill 09a1aec4 2022-10-14T08:59:07 Expand suppression for async timer tests. Flaking on SwiftShader as well. Bug: angleproject:7548 Change-Id: I419c602184c03141c75b21bf3a0b66d8b2a34303 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956494 Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi 94b45181 2022-10-12T14:54:14 Vulkan: Rearrange graphics pipeline desc bits In preparation for use of VK_EXT_graphics_pipeline_library, the pipeline state is split in three contiguous regions: - Vertex input - Pre-rasterization and fragment stages ("Shaders" for short) - Fragment output There is some state that affects both Shaders and Fragment output, which is split and placed in between the two. This will allow the hash and compare functions to eventually access each of those pipeline subsets as a contiguous piece of memory. Bug: angleproject:7369 Change-Id: Iedc4cf15ed6c7fed6ba93039889fbf5dd191e041 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949914 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 0b7f3f5e 2022-10-12T17:47:06 More robustness tests Similar test to what was introduced in https://chromium-review.googlesource.com/c/angle/angle/+/3943534, but for vertex and compute shaders. Bug: angleproject:7629 Change-Id: I743233136125358edb6a15760b1ece63c36d3f85 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949915 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu c22f091d 2022-09-29T18:58:33 Replace Hard-Coded egl image attribs This change is adapted from https://crrev.com/c/3838866 Added two hash maps to track below information: EGLImage* --> EGLint* attrib TextureID --> EGLImage* During the CaptureShareGroupMidExecutionSetup, when we iterate through all the textures the app created, if the texture is bound to External target, we will refer to the hash map TextureID --> EGLImage* to find the EGLImage* pointer, and then use the result as the key to refer to the other hash map EGLImage* --> EGLint* attrib to find the attributes used to create that EGLImage object. We can then use the attributes to populate eglCreateImage or eglCreateImageKHR calls in the trace calls. Bug: angleproject:7570 Change-Id: I729de4ddea59242ccbe6243e036451f290545185 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3928212 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 135022e4 2022-10-11T00:03:11 Vulkan: Create robust pipelines based on context state Previously, pipelines were made robust based on whether any context in the share group has so far been made robust. This means that pipelines created on non-robust contexts would still be compiled as robust. Inefficiency aside, this was buggy because robustness was not part of the pipeline cache key, so if a pipeline was created as non-robust first, then recreated in a robust context, it would reuse the non-robust variant. With VK_EXT_pipeline_protected_access, a similar situation arises for context protected-ness. However, it is incorrect in that case to create pipelines as protected unnecessarily. This change makes pipeline robustness a part of the pipeline cache key, in preparation for protectedness to be added similarly. Compute programs may now generate multiple pipelines as a result too. Bug: angleproject:7629 Change-Id: Ie95f10eff878f8c8b221c1018da44385c7aad15e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3943534 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 9b5fff82 2022-10-05T21:56:00 Vulkan: Emulate shader stencil export for MSRTT The MSRTT emulation code had one corner case issue that could lead to performance and memory inefficiencies. That is when stencil needs to be unresolved and VK_EXT_shader_stencil_export is not supported. This change adds a path to emulate VK_EXT_shader_stencil_export and removes this inefficiency. This should help Chromium on older Android devices that lack both this and the recent VK_EXT_multisampled_render_to_single_sampled extensions. Chromium frequently breaks the render pass (crbug.com/1336981), which easily leads to this situation. Bug: angleproject:4836 Change-Id: Ifceec43f7f3807b7e32f4b379edcd4351ae76414 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3935892 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 76f377c5 2022-06-17T16:05:16 Vulkan: Break renderpass when switch from query to non-query getQueryResult will wait for query result to be available, which means a potential CPU bubble if the result is not yet available. On tiler GPUs it will at least wait for renderpass to complete. Usually query enabled draws are very tiny (usually just draw a point to see if it is occluded or not), and query disabled draws are expensive. Some apps do issue a glFlush when switch from query draw to non-query draw, but app like dead_by_daylight does not issue such flush. In order to reduce the bubble, this CL ends renderpass and issue a flush when we switch from query enabled draws to non-query enabled draw so that the result will be available much earlier, this reduce the CPU bubble. This result in dead_by_daylight frame time improves from 5.45ms to 3.5ms (35% improvement). Bug: b/250706693 Change-Id: Ia3a32a9fb336e6f256809b3cad83f61a45415fb1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3931739 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Lubosz Sarnecki a217dd56 2022-10-06T11:25:31 Tests: Add The Witcher: Monster Slayer trace. Test: angle_perftests --gtest_filter="*the_witcher_monster_slayer*" Bug: angleproject:7747 Change-Id: I1851fc00cb665485b6111b4e01b0075d2440e62a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3942649 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Roman Lavrov 6eff905c 2022-10-11T10:08:12 Make Android gold tests populate os and os_version correctly. os = Android os_version = {ro.build.fingerprint} These show up in Skia gold. Currently set to Linux info. Bug: None Change-Id: If2ffe5e8a6620fde9bd0a983f9c0d11ffe6a75c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3946179 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill d0a024f9 2022-10-09T16:47:33 Lower perf tests resource usage further. This reduces the warmup trials from 2->1 and the trial time from 5s -> 4s. Old: (2 warmup + 3 trials) * 5s / trial ~= 25s per sample New: (1 warmup + 3 trials) * 4s / trial ~= 16s per sample The tests should run in about 2/3 the time as it took prior. A future change will likely have to split up the tests so we can run shorter shards in sequential groupings between tests. Bug: angleproject:7738 Change-Id: Ic6c744be838174b61f4eb832189ccad14f89103d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3939917 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>