src


Log

Author Commit Date CI Message
Cody Northrop d667ad2f 2020-08-11T16:09:36 Tests: Add Mobile Legends trace Test: angle_perftests --gtest_filter=TracePerfTest.Run/*mobile* Bug: b/163619545 Bug: angleproject:4048 Change-Id: I8ed176afe10b758a22b539d526bf02a9fe35ab92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2350582 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop a7cbb3f0 2020-08-10T09:53:54 Capture/Replay: Allow starting capture at an unknown frame This CL adds a new way to set the start frame of a capture. It adds a new environment variable called ANGLE_CAPTURE_TRIGGER that, when set, will be used instead of frame start and end. By setting ANGLE_CAPTURE_TRIGGER to a non-zero value, ANGLE will capture that many frames when the value changes. For example, on Android, we can set it with: adb shell setprop debug.angle.capture.trigger 20 When we reach the target content, set the value back to zero: adb shell setprop debug.angle.capture.trigger 0 and ANGLE will start capturing 20 frames. Currently only hooked up for Android, but should be possible to support on other platforms. Test: Capture application frames using trigger Bug: angleproject:4949 Change-Id: I469ef5c48feb78c85b8cda2fefd5df59e495bbe2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2347858 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Manh Nguyen <nguyenmh@google.com>
Jamie Madill 48d951e2 2020-07-30T15:32:03 Perf Tests: Handle logError callback. This will force errors when ANGLE runs into Vulkan Validation Layer failures and other internal bugs. Currently we could sometimes fail silently. Especially on Android where the error would only show up in logcat. Bug: angleproject:4909 Change-Id: Ie2888805c577d9fbad417d45a33e3269966b7b25 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2330091 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Ian Elliott 6eb7756d 2020-08-07T17:41:39 Vulkan: tell ContextVk when swapchain is re-created For an app that only draws to the swapchain, if the swapchain is recreated with a different rotation (as done by the ANGLE perf tests when switching from Angry Birds 2 to Candy Crush), ContextVk is not informed, and so the new rotation is ignored. Use the subject-observer pattern to set the appropriate dirty bits. Test: run_angle_perftests --gtest_filter=TracePerfTest.Run/vulkan_angry*:*vulkan_candy* --verbose --local-output Bug: angleproject:4910 Bug: b/163126746 Change-Id: Ib5303e9c4095db1b3e736911f483589e40a73d0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341768 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 5e5b7537 2020-08-10T21:02:50 Vulkan: Optimize resource tracking in CommandBufferHelper. Introduces a FastUnorderedMap class that uses FastVector. This type uses static storage for up to a small fixed number of elements and uses dynamic storage for anything larger. Local testing shows this almost fully solves the regression from using unordered_map. It's still slightly slower than using no tracking (<5%). Very degenerate cases which track dozens or more buffers will still have significant overhead. For almost all applications that use only a few buffers per RenderPass this will be very fast. Test: angle_perftests, *vulkan_null_index_buffer_changed_ushort Bug: angleproject:4950 Bug: angleproject:4429 Change-Id: I39edeaaa159124167f1ea23ad2e6eac5e9220d0b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2348108 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 9385eb35 2020-08-02T23:21:54 Metal: Generate default shaders to separate files. Generate default shaders' OS specific versions to separate files to avoid mtl_default_shaders_autogen.inc becoming too big. Bug: angleproject:2634 Change-Id: Ie2a39971ec46c36ce13bf5cb72f998f2cbc0ab64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332145 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Le Hoang Quyen f37f1dcb 2020-08-02T19:38:54 Metal: Init format table using Metal-Feature-Set-Tables.pdf - Format table is now initialized using informations from https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf. Previously, it was setup using gl::GenerateMinimumTextureCaps(). - This CL also adds InitializeTextureDataFunction and LoadFunctionMap to mtl::Format. They are needed to properly initialize/convert textures with non-normalized formats. - This CL is prerequisite for integer & floating point format supports. - New test: DXT1CompressedTextureTest.DXT1Alpha (this test was added in the past but was reverted for some reasons). Bug: angleproject:2634 Change-Id: I5eaad812909a49c4c138d0f65fd21a6a199fcb22 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332144 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 05b6740c 2020-08-09T12:23:42 TestRunner: Fix test result handling. The bots expect us to explicitly label "is_unexpected" for all unexpected results (e.g. failures). Also they construct a test filter from our test names so our result names have to match the tests exactly. That means removing prefixes like we have for the test suite name. Bug: angleproject:3162 Change-Id: I1a02ff8e26545b10a8829a3ee47be91f7459aa65 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2345028 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov ba7398c8 2020-08-10T21:04:38 Skip WebGL2CompatibilityTest.CopyMip1ToMip0 on Mac Intel GL Flaky. Aleady skipped on Win Intel GL. Bug: angleproject:4805 Change-Id: I206d66079ca4beabfee12f6c9989d960ca461877 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2347463 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 48bfb8ef 2020-08-10T19:34:23 Suppress dEQP-GLES3 failures on D3D11 NVIDIA dEQP-GLES3.functional.shaders.texture_functions.texturesize.* started failing when driver was upgraded to 451.48 Bug: angleproject:4948 Change-Id: Idc547702cabc3a106829be85baf8400e4769e271 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2347454 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 275a495d 2020-08-10T16:11:59 Vulkan: Remove TODO. Bug: angleproject:3200 Change-Id: Iaa5fb596a29b5488e45dec5636266e24ab4d97b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2347118 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 5921a040 2020-08-06T17:39:56 Vulkan: Refactor image dependency commands. Uses commands similar to the Buffer APIs. Also updates docs. Bug: angleproject:4911 Change-Id: I1f2ec9bdd1d725d4ec3d6601e63bcb0c045e2121 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2342287 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Manh Nguyen bbfbea9d 2020-08-10T10:55:58 Invalid calls' pointer params are no longer captured Changes call capture methods generation so that invalid calls no longer capture pointer params. Bug: angleproject:4817 Change-Id: I2d83d4d3334da8ba34925f80aed2de859a10fae5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2346749 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jonah Ryan-Davis f9de2e20 2020-08-04T11:53:05 Enable required extensions for Chromium to use the Metal backend. This includes: EGL_ANGLE_display_texture_share_group EGL_ANGLE_display_semaphore_share_group EGL_ANGLE_robust_resource_initialization GL_EXT_debug_marker Bug: angleproject:4847 Bug: angleproject:4930 Bug: angleproject:4929 Bug: chromium:1112800 Bug: angleproject:4946 Change-Id: Ibacb6badf9f784dae3ca42514142ef13ee7297b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332863 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Manh Nguyen 2e2fcfb5 2020-08-05T14:43:24 Implement param capture for glGetUniform calls and extensions Implement glGetUniform calls to fix crashes in UniformTest test group. Tests: UniformTest test group Bug: angleproject:4817 Change-Id: I132c61e053665b0642667aad51f1f3220d101d14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2339542 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen a0880831 2020-08-06T19:11:40 Metal: Implement CHROMIUM_copy_texture Bug: angleproject:4930 Bug: angleproject:2634 Change-Id: I9fd958aa1dd872855be06a14bdbba4c6624dc934 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2340396 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Manh Nguyen ce5943c5 2020-08-05T23:24:17 Change test result types + add additional logging New result types: Passed, Failed, TimedOut, Crashed, CompileFailed, Skipped. They divide the results of tests more clearly. Results are now immediately logged to the stdout once a test batch completes. Flags, with the exception of --gtest_filter now use "-" instead of "_". Bug: angleproject:4817 Change-Id: I9616b23ef70026818e22126a251e1e2341de641d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2340787 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 3ebac486 2020-08-07T15:35:15 Disabling failing dEQP-GLES2.functional.fbo.render.recreate_* tests The following tests started failing on Android (Pixel 2 and 4) running ToT master: dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4 dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4 dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16 dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_rbo_rgba4_depth_component16 dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8 dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8 We aren't sure how these failures got through CQ, so I'm suppressing them for now to unblock other CLs. Bug: angleproject:4944 Test: dEQP-GLES2.functional.fbo.render.recreate_* Change-Id: I2b35e07babf3257a3de8d27f6c161c0cb796d8ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2342267 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 3d17084d 2020-08-06T17:53:36 Vulkan: Simpify check for started RenderPass + FB. We can check the RenderPass CB helper directly instead of caching a separate variable. Bug: angleproject:4911 Change-Id: Ic953c101c64fd5142e2dedfd06e3fea287331fd4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341761 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Manh Nguyen 8956bfb9 2020-08-05T13:34:01 Use striping when making test batches When grouping tests to test batches, instead of grouping neighboring tests together, use striping so that slow tests are fanned out into multiple batches. This way, no test batch is too slow. Bug: angleproject:4817 Change-Id: I7825539e401ea53b5a31167f206d1f5bfb07bdbf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2339540 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Tim Van Patten 48ba75ac 2020-08-06T15:26:53 Remove TextureCommand TextureCommand::GenerateMipmap can be moved into gl::Command allowing us to remove TextureCommand. Bug: angleproject:4753 Test: CQ Change-Id: Idc546df519e199ffd3a8b8e03b9868cd9152e9ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2338823 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Tim Van Patten 81370214 2020-07-29T12:54:02 Pass the Command when sync'ing dirty objects A new enum is being created that contains command types, which are then passed to each dirty object when they are synced. This allows the syncState() methods to perform special handling for each command type. This change is in preparation for optimizing resolving multisample images with glBlit, since the render pass needs to be updated before it's ended. Bug: angleproject:4753 Change-Id: I77701f79418d35cff689e864c8a8b47b6fca0255 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2327335 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 9892e6a2 2020-08-05T11:38:27 Capture/Replay: Reduce SetupContext size further Still seeing long link times for NBA2K20 trace. Breaking up SetupContext into even smaller chunks helps. Test: Compile and link NBA2K20 trace for Android Bug: b/160014453 Bug: angleproject:4048 Change-Id: Ic8f6d7e8d1c35cbee986da670c0beeb4b77c4e7c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2339853 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop a798819c 2020-08-05T11:38:10 Capture/Replay: Dedup shaders to reduce capture size This CL will track whether a string has already been declared and written in the output file. This cuts the shader string count in NBA2K20 trace by 85%, eliminating about 300K lines of code from setup. Test: Compile and link NBA2K20 trace for Android Bug: b/160014453 Bug: angleproject:4048 Change-Id: Id854b3314644c1e4aae41cd6bb4157f92e9b1945 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2339852 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 063d754b 2020-08-07T12:02:13 Tests: Update NBA2K20 trace Significantly reduce setup for this trace. First frame drops from ~430K lines to ~150K lines of code. Compile/link times should be bearable. TBR: ianelliott@google.com,jmadill@chromium.org Test: angle_perftests --gtest_filter="TracePerfTest.Run/*nba*" Bug: b/160014453 Change-Id: Ia33941012e02ec5488d039501f592dc48e9acfe4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2343454 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop fc8866cf 2020-08-07T10:31:35 Tests: Update Angry Birds 2 trace Primarily fix the width/height of the drawing surface, but also pull in changes from July 2020 update. TBR: courtneygo@google.com,jmadill@chromium.org Test: angle_perftests --gtest_filter="*Trace*" Bug: b/157672184 Change-Id: Ia6e16f6d695954f50b3d2a4e8aaaa88514b461d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2343453 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 1dcb3eb2 2020-08-06T15:02:34 Vulkan: Don't expose MSRTT on Mac/SwiftShader Frequently causes failures as such: [...:ERROR:drawing_buffer.cc(854)] Initialization failed to allocate backbuffer. [...:INFO:CONSOLE(197)] "Unable to initialize webgl context.", source: (197) Bug: chromium:1112986 Bug: angleproject:4937 Change-Id: I5058f78434c0ac49345fe1167043f2dca759b1b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341350 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 91a03bd4 2020-08-03T23:24:31 Vulkan: Fix render-to-texture simultaneously bound to two FBOs If a texture is simultaneously attached to two FBOs, one where it's a normal texture and another where it's multisampled-render-to-texture, different render targets must be created for it. If a texture is simultaneously attached to two FBOs, both as multisampled-render-to-texture but with different sample counts, two implicit multisampled images need to be created as well as different render targets. Bug: angleproject:4913 Change-Id: I584ba327e4cb2099ef62f86f5d88719dc156ce13 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335810 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 3a3d419d 2020-08-04T09:06:01 Reference count context to fix ASAN issues Running with ASAN there are several use after free issues because a eglDestroyContext destroys the context right away even though it's in use in other thread(s). Adding reference count to context so that it's not destroyed until all users are done using it. Bug: b/162609728 Change-Id: I00b24b53d760e38ff61dd9ce652a49b1f32f0cd2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336447 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 3831ac20 2020-08-06T18:28:15 Remove suppressions for passing tests Bug: angleproject:1323 Change-Id: I704bd2aff98ff334a4ada54a0c465a16109b9cbb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341764 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 4973a38f 2020-08-05T14:27:46 Supress VVL error about multi-instance heaps. VVL added a new error that ANGLE hits on AMD Windows due to the way VMA allocates memory. Supressing to allow VVL to roll forward while we investigate. Bug: angleproject:4928 Change-Id: I4afeb3fcc2e9fed96ff8276898a8c96c77206d3b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2339539 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 23daea2f 2020-08-06T10:40:00 Vulkan: Rename CommandBuffer get method. This method will no longer end the RenderPass in a following CL. Renaming it in a split CL makes the review diff simple. Bug: angleproject:4911 Change-Id: Id48257884dccb7c86f7de2cc9ca95e651fb68df7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2340788 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 135a5843 2020-08-02T23:03:44 Vulkan: Remove redundant vk prefixes in vk_helpers. Cleanup/refactoring only. Bug: angleproject:4911 Change-Id: I4fe06a86a6ecaafa16fd900b6f6229f09ab56a9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334092 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Shahbaz Youssefi e3988722 2020-08-06T18:23:28 Fix an OOB access bug with RewriteRowMajorMatrices Bug: angleproject:2273 Change-Id: I27109b873a290133cf3d016f612e1fd1de9d354c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341763 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill e26c5e07 2020-08-02T16:04:17 Vulkan: Add Image serial. This is owned by the ImageHelper. We'll use it in tracking used images in RenderPasses. Bug: angleproject:4911 Change-Id: Ic71cef2b16eefb86c73c9c5e1e38ee7cd6a60adb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332895 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill f9dd2c15 2020-08-02T18:03:16 Vulkan: Accumulate Buffer barriers. Uses an unordered_map in the CommandBufferHelper to track buffer reads and writes. Buffer barriers are tracked specially in the CommandBufferHelper class as a barrier we execute immediately when we execute the commands into the primary. So when we run into an incompatible buffer access we must start a new command buffer. The rules for an incompatible access are: - when we are reading a buffer, any prior write in the same command buffer is incompatible. - when we are writing a buffer, any prior read or write in the same command buffer is incopatible. Also adds a regression test using a new performance counter. Bug: angleproject:4429 Change-Id: I393a4ed87314f955eb998940b877ba76ea15a7b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334091 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 18dd0c28 2020-08-02T17:50:48 Vulkan: Add command buffer performance counter. Adds a counter for the secondary command buffers (non-RenderPass). We'll use this in an upcoming test that validates that ANGLE only issues a single barrier (CB) in some buffer read/write scenarios. Also adds a PerfCounters struct. Bug: angleproject:4429 Change-Id: Iaf75ca89da3d02753897cb4066e2c56db497417e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334090 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten b3545b42 2020-07-29T16:50:53 Get storage buffers/images from ProgramExecutable Update StateCache::updateActiveShaderStorageBufferIndices() and StateCache::updateActiveImageUnitIndices to get the storage buffers and image bindings from the ProgramExecutable, respectively. This requires updating the ProgramPipeline's ProgramExecutable to build up its vector of buffers/images from each Program's ProgramExecutable. Bug: angleproject:4869 Test: VertexAttributeTestES31.UsePpoComputeShaderToUpdateVertexBuffer Test: SimpleStateChangeTestES31.InvalidateThenStorageWriteThenBlendPpo Change-Id: I68b7d23eedda910c3dcbf5f9c50b74b5e80134d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2327701 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 50442fac 2020-08-05T14:15:12 Vulkan: Fix ImageHelper's move constructor Bug: angleproject:4913 Change-Id: Ic78a26be4c2f3fa96ef77deffc239dbb7310065e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2339543 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi bedac4f0 2020-08-05T21:57:50 Move EXT_external_objects validation to validationESEXT.cpp Bug: angleproject:4912 Bug: fuchsia:52759 Change-Id: I8883d65ecac763cf46d792cc69bce98dc53121d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2340174 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten e8789a53 2020-07-29T12:01:49 Vulkan: Don't always end the render pass when updating the scissor We don't always need to end the render pass when updating the scissor, since it will be ended later when necessary. This change is in preparation for optimizing resolving multisample images with glBlit, since the render pass needs to be updated before it's ended. Bug: angleproject:4753 Test: CQ Change-Id: Ie657587ca9f4461dcc03f0f9c251ac2c17398f5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2327334 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi fc4bd898 2020-08-03T16:29:06 Vulkan: Support ANGLE_external_objects_flags With this extension, it is possible to import Vulkan images into ANGLE (similar to EXT_external_objects) while specifying the Vulkan create and usage flags used to create that image. This can be used by the application to drop usage flags it does not need to improve performance, or add create flags as it requires. Bug: angleproject:4912 Bug: fuchsia:52759 Change-Id: Ia568973b19670999dd0e69f6ac5548e8ef0c3eec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335020 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Michael Spang <spang@chromium.org>
Shahbaz Youssefi e4e2a847 2020-08-03T14:09:49 Entry points for ANGLE_external_objects_flags Bug: angleproject:4912 Bug: fuchsia:52759 Change-Id: If339f096a74cc87d16a6494562711d718a7738ea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335019 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 25b0de6b 2020-08-01T13:45:11 Vulkan: Squash Texture+ImageView Serial and improve caching. Previously we regenerated TextureSerial on Texture state changes such as base/max level changes. This caused ANGLE to update descriptor sets even though it was using the same image view handles. This change instead uses an ImageViewSubresourceSerial which includes both a serial for the ImageView and a 32-bit packed subresource range. The CL speeds up NBA2k because ANGLE no longer writes new descriptors for Texture max level changes. Local testing showed up to a 40% speedup. Also adds a regression test with a counter for the number of descriptor set writes in a frame. This change will also be useful in upcoming changes that track Image serials in the RenderPass. Bug: angleproject:4911 Change-Id: I66249634aa56288079acf2c0eb8aa3391103533c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2333396 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Manh Nguyen 6aed2832 2020-07-31T10:52:21 Batch capture run + change how results are logged Before, the run stages of tests in a batch were run separately by multiple subprocesses. Now the run stages of tests in a batch are batched together and run by a single subprocess. Changes how results are logged. Tests in a batch are logged together. Within a batch, tests that fail at the same stage are also logged together. Bug: angleproject:4817 Change-Id: Ie3f992c081de914f1f1f521bec2d72f06ccca238 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2331738 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Xinyi He 6c873cfd 2020-07-31T10:08:26 Disable RobustBufferAccessWebGL2ValidationStateChangeTest on Mali Mali does not support the robustness on Vulkan, so skip this test. Bug: angleproject:4823 Change-Id: Id4d29fe27f10ec87d901f92ba097db9207809d42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2331311 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill b9b5fa55 2020-08-02T00:17:20 Vulkan: Redo Sampler Serials. Instead of refreshing sampler serials every time the SamplerVk or TextureVk has a state change we can give a VkSampler a unique serial. The serial is unique to this VkSampler and repeated state changes will fetch the same Serial from the SamplerCache. This allows for more cache hits. We store the the new Serial together with the VkSampler in a SamplerHelper class and store references to a SamplerHelper in SamplerVk and TextureVk instead of the VkSampler directly. In a follow-up change we will improve image view caching by also improving how we store serials for ImageViews. Bug: angleproject:4911 Change-Id: I9168c2700e383bca796cca925b38cfd30132d982 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2333988 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill adc250c3 2020-07-31T21:11:05 Vulkan: Refactor ImageViewHelper serials. Instead of storing a dictionary of serials to specific image views we now store a single 32-bit serial combined with subresource info. The serials combined with a subresource info (level/layer) gives a unique identifier for each ImageView in the ImageViewHelper for the descriptor set cache and the Framebuffer cache. Also moves ImageView serial allocation to initialization and release. This means we no longer need to use "getAssign" methods and instead we use a few init methods to ensure the serials stay allocated. Bug: angleproject:4911 Change-Id: Ia6af76ae16b3ff5d4a83974bde05cc704064b079 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2333395 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Christopher Cameron 66665af2 2020-07-28T15:26:42 macOS/ARM: Allow populating GPU based on AGXAccelerator The existing scheme for populating GPU vendor and device IDs fails on macOS/ARM. If we find no PCI registry entries, look for a AGXAccelerator entry, and (partially) populate that. This is sufficient for Chrome to initialize hardware acceleration. It is unknown how this will interact with multiple GPUs, and this will likely need to be revisited. Bug: chromium:1110421 Change-Id: I08069d7aecf45c83a1d2827cfccc4733c1835994 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2324939 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Lingfeng Yang <lfy@google.com> Commit-Queue: ccameron <ccameron@chromium.org>
Shahbaz Youssefi f776eb9c 2020-08-01T23:45:24 Vulkan: EXT_multisampled_render_to_texture2 support The previous change that implemented EXT_multisampled_render_to_texture already provisioned this extension in the Vulkan backend. This change implements the front-end for this extension and enables it in the Vulkan backend. Bug: angleproject:4836 Change-Id: I7080260972e61727c5716051c236f635668cb67b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2330510 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 47207e42 2020-08-01T23:43:43 Vulkan: Fix blit/resolve of mixed-samples framebuffers A framebuffer could contain a mixture of multisampled and multisampled-render-to-texture attachments. When used as the source of a glBlitFramebuffer operation, the former requires a resolve while the latter is a blit. This change fixes this use-case. Bug: angleproject:4836 Change-Id: I1d39bf25f54df9f8b68304058596a2d1c975f9ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2333987 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis d41280a7 2020-08-04T09:08:05 Suppress SurfacelessContext test on Android/NVIDIA EGLSurfacelessContextTest.Switcheroo/ES2_OpenGLES_NoFixture is failing on NVIDIA Shield TV. Bug: angleproject:4924 Change-Id: I4bd0744fd19cb3473cc654ede5870374506ddc46 TBR=jmadill@chromium.org Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336189 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 7d741c85 2020-07-31T15:40:17 Tests: Remove more optimizations from traces With the addition of NBA2K20, which has stressed multiple parts of our solution, we need to scale back the optimization done on the trace itself. Otherwise the link never completes. Test: angle_perftests --gtest_filter="TracePerfTest.Run/*nba*" Bug: b/160014453 Bug: angleproject:4048 Change-Id: I064813326d401cdcc5649c45255eb214cbf0a2db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335607 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mohan Maiya 709472c9 2020-08-03T15:43:12 Vulkan: Fix variable scope bug during vkCreateInstance While enabling best practices layer the struct that gets added to the pNext chain is a stack variable and goes out of scope beyond the if-check. Move the struct variables out of local scope to prevent access violation errors during vkCreateInstance. Bug: b/156661359 Change-Id: Ifa470ff1e51d454782695adcf40b4db2aa1608a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335747 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Jamie Madill 11207393 2020-08-01T19:47:21 Vulkan: Add an overlay counter for descriptor writes. Note: currently the trace test shows about 1000 descriptor set writes per frame in NBA2k20. Bug: angleproject:4911 Change-Id: Id50d05fe405249c80a38dbbe3c96e7bd8c66cbc4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2333398 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 22e6fc03 2020-07-31T15:58:28 Vulkan: Move Resource Serial gen into Renderer. Putting Serial allocation in the Renderer allows the Helper classes to manage allocating its own Serial. The init functions for ImageViewHelper only have access to a vk::Context/RendererVk, not a ContextVk. This will be updated in a future CL. Re-uses the Serial Type X-Macro to do more code generation. Serial allocation now uses an atomic because of its now Renderer shared location. Bug: angleproject:4911 Change-Id: I2d5d3d0bbf613d5468de795a700f66164291bc79 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332884 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 1780609d 2020-08-03T17:01:21 Trace Tests: Disable timestamp queries. This framebuffer changing timing code adds overhead so it should stay disabled unless turned on explicitly. This was causing a performance regression in the native benchmark for some trace tests like egypt. Bug: angleproject:4845 Change-Id: I51c77d544cae063ba185aa4f20d028d9ffa7a2ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335021 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 515b0775 2020-07-31T12:14:59 Metal: Enable EGL_KHR_surfaceless_context. Surfaceless contexts are emulated in the frontend so this extension can be enabled for the metal backend. It's needed to run Chrome with ANGLE's metal backend. Bug: angleproject:4847 Change-Id: I3a2f74fd5f2ac75a056c528c8b30ffbd41d73e46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332880 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Manh Nguyen 846cd169 2020-07-30T22:11:12 Add vertex array serialization capability Serializes vertex arrays' states stored on CPU. Adds vertex array serialization to serializeContext method so that capture replay regresssion testing now compares the states of vertex array objects too. Bug: angleproject:4817 Change-Id: Ia2897c056adff9bd433765186240ab07f78db232 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2331737 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 4c7e3ee3 2020-08-03T12:26:05 Capture/Replay: Account for EGL_KHR_no_config_context EGL_KHR_no_config_context allows creating a context with EGL_NO_CONFIG. Add a null check when collecting config attributes. This fixes trace capture of Angry Birds 2 by allowing CaptureReplayTest to pass EGL_DONT_CARE for the config parameters. Bug: angleproject:4817 Change-Id: I982136ae2a7db4bd8d3f16f4accfe093e5610091 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2333356 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Manh Nguyen be6a1d87 2020-07-29T10:15:28 Add texture serialization capability Serializes textures' states stored on CPU. Gets textures' contents at every mipmap level from GPU then serialize them. Adds texture serialization to serializeContext method so that capture replay regresssion testing now compares the states of texture too. Bug: angleproject:4817 Change-Id: I87670fdc744f96d4ff244462dee1a065de44f9b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2325029 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 69ca1025 2020-07-31T02:08:09 Metal: Implement EGL_ANGLE_iosurface_client_buffer. GL_R16UI format is not supported yet. It will be implemented once integer textures are implemented in metal back-end. Bug: angleproject:4847 Bug: angleproject:2634 Change-Id: I60a52c0ce327a524c74e80b18bb15978ac52065b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2329091 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen a5a08b5e 2020-07-31T01:57:33 Metal: Enable end2end tests on Intel. Bug: angleproject:4133 Bug: angleproject:2634 Change-Id: I3eff5ff81e908eec2990eb036728aa9878c8f802 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2329090 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 4f7f4387 2020-07-24T11:44:02 Add entry points for OES/EXT_texture_buffer This extension is core in 3.2 Bug: angleproject:3573 Change-Id: If08736759da2fdc680cfa396d354dbfa97d1a60f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2317040 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 4e1abc75 2020-07-24T10:38:40 Vulkan: Set depthStencil loadOp to DontCare when not used and stored If depth stencil buffer is disabled during entire renderpass, and at the end of renderpass we are not storing the data back to memory, then force the loadOP to DontCare to avoid unnecessary depth stencil load or clear. Bug: b/162080462 Change-Id: I30905a6d45bec038de68e7f363ec699eb2be09ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2317726 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 91f54d83 2020-08-02T11:28:49 Capture/Replay: Use vector for resource maps. unordered_map was showing up as a hotspot in replay profiling. Bug: angleproject:4916 Change-Id: I840371313ab51faa088664b9840c7ef3f998fcad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334094 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 663075ac 2020-07-31T01:54:45 Metal: Fix Intel's LOD clamp and blit shader's filtering. 1. Setting max LOD clamp = FLT_MAX via setSamplerState caused mipmap tests failure on Intel. It always picked wrong mipmap level during texture sampling. Fix: Use value from SamplerState::getMaxLod() instead. 2. Also set default linear filtering for blit shader's sampler. Previously there was no sampler set for this shader. It caused black fragments on Intel. This CL is a prerequisite for enabling end2end tests on Intel & Metal. Bug: angleproject:4133 Bug: angleproject:4915 Bug: angleproject:2634 Change-Id: I9e6b669712a294e09ab692a3c65f3956a799ef8b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2329089 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6c5ad2e9 2020-08-01T15:43:43 Vulkan: Remove ImageHelper::mSerial. This serial is no longer used by any code. Bug: angleproject:4911 Change-Id: Id82ef697b81b5738333f3280c58fd613615b6e09 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2333397 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 2d0265fa 2020-08-02T12:01:46 Trace Tests: Scale results based on frames in capture. This now reports averaged time per frame instead of per "step". Scores in general will be divided by 11. Results still reported in nanoseconds. Bug: angleproject:4920 Change-Id: I6f9dca75885cce358c3c7d1e871441969d8aa3d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334095 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 89ade79a 2020-07-31T16:04:09 Vulkan: Clean up ScopedDescriptorSetUpdates. Matches style guide requirement for types before members. Also moves the implementation of the class entirely into the cpp file. Moves the method implementation in ContextVk so we can more easily alter member variables. Unrelated cleanup done while working on consolidating RenderPasses. Bug: angleproject:4911 Change-Id: Ibe4273fc609b494840f1e86584bcee5bc31397d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2331950 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Manh Nguyen fba96e90 2020-07-30T10:04:59 Add shaders and programs serialization capability Serializes shaders and programs' states stored on CPU. Adds shaders and programs serialization to serializeContext method so that capture replay regresssion testing now compares the states of shaders and programs too. Bug: angleproject:4817 Change-Id: I026762ffcd85c9cf209f17d02025730aa286bd2f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2329830 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 322cc825 2020-08-02T17:27:23 Rename RenderPass test to performance counter test. This is a better naming for new tests that will check other counters such as the number of command buffers, barriers, and descriptor set writes. Bug: angleproject:4911 Change-Id: I8b2c12f6e043c2833e64fa9627f781e61f8f0f3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334089 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 41442cce 2020-07-31T11:44:38 Autogenerated changes for GL_EXT_multisampled_render_to_texture2 Bug: angleproject:4836 Change-Id: I86143c6b21ecdbc666ce316b6e4a4b402257f01c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332957 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill d04a5593 2020-07-31T10:55:38 Vulkan: Add RenderPass count test. Bug: angleproject:4911 Change-Id: I4c4e187b6b048118ce1231ae8924340ad382c43f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2331741 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao dae77893 2020-07-30T11:57:40 Vulkan: Avoid clearWithClearAttachment if RP command buffer is empty If renderpass has started but no command has been issued, we should chose to use loadOp to do clear instead of clearWithClearAttachment. Bug: b/162521656 Change-Id: Ia681fc96442c7916b4b92c48e970d9ed239a28c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2330225 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Shahbaz Youssefi 9b1cab0d 2020-07-31T11:40:05 Fix validation of glFramebufferTexture2DMultisampleEXT In preparation for GL_EXT_multisampled_render_to_texture2. This makes the validation reuse what's there for glFramebufferTexture2D in addition to what GL_EXT_multisampled_render_to_texture requires. Additionally, it uses packed enums for texture target and id. Bug: angleproject:4836 Change-Id: Ie778c84e1ff5a0cb6615257f2aff9e04395dd5aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332956 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 38e7f7a6 2020-07-30T14:35:50 Vulkan: Make CommandBufferHelper::empty() logic less obtuse CommandBufferHelper::empty() logic is simplified and commented to make it easier to read. Basically empty() means there is no work in the CommandBufferHelper object. For RenderpassCommands, that is equivalent to !started(). Bug: b/162521656 Change-Id: Ic9683b392835a677501cb81e5e8a025e031ebf93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2330379 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Manh Nguyen aca14d47 2020-07-29T13:52:28 Add renderbuffer serialization capability Serializes renderbuffers' states stored on CPU. Gets renderbuffers content from GPU then serialize them. Adds renderbuffers serialization to serializeContext method so that capture replay regresssion testing now compares the states of renderbuffers too. Bug: angleproject:4817 Change-Id: I537b11ee85decb14eea461ebbd62ce6ab0402f85 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2327173 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill bd7cef28 2020-07-31T11:18:27 Trace Tests: Fix Win/x86 crash. A missing KHRONOS_APIENTRY annotation was causing a crash due to stack corruption in Win/x86 only. Bug: angleproject:4845 Bug: chromium:1111764 Change-Id: I60b30ce8bc409c71d223eaedd74dc0c1ae034f7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2331739 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen cbd5bee8 2020-07-13T20:31:29 Disable shader's pre-rotation code on Metal & non-Android. Pre-rotation code were added to transform gl_Position, gl_FragCoords, gl_PointCoords, dFdX, dFdY in shader. However, it is only useful for android's surface pre-rotation and completely un-needed in Metal back-end. This CL disables these pre-rotation code if the platform is not android. Bug: angleproject:4678 Change-Id: I89c42fcf24b49896f4ed9c2f9465da521beaf25f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2295000 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Kenneth Russell 19a1943b 2020-07-28T14:02:47 Allow GetSystemInfo to return false in CGL and EAGL backends. This API is documented as returning false if information is incomplete, but this should not cause a failure to initialize ANGLE's Display. This change is a refinement of one made in WebKit's downstream copy of ANGLE, likely in support of forthcoming Macs with Apple Silicon, in https://bugs.webkit.org/show_bug.cgi?id=213479 . Bug: angleproject:4902 Change-Id: I40a664a5db67b2aa37f15617b1cbcc3119793ee0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2324462 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jamie Madill f3a38d97 2020-07-23T19:00:34 Add a custom trace tests loader. This custom loader will disambiguate the trace tests gl layer from the util GL/EGL loader. Bug: angleproject:4845 Change-Id: I5e8340eb50f736d931302f71f15f556fd9e52081 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2315627 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Manh Nguyen <nguyenmh@google.com>
Manh Nguyen 2c41931c 2020-07-21T14:21:27 Batch-compile and batch-run-replay multiple tests Multiple tests are batch-compiled into 1 replay application instead of multiple replay applications. Replay application now runs generated code of multiple tests instead of 1 test. This reduces overhead cost and brings down runtime. Main process now receives messages sent by workers via a message queue and prints them to the main stdout so that user can know if workers are hanging. Add handle for user interrupt (Ctrl-C) so that processes are properly destroyed and cleaned up. Trace files now have the option not to be deleted. Bug: angleproject:4817 Change-Id: Ic90ae0f430e1d3c261ffea5f963be5a4e94b0ad2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2310909 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Jamie Madill d7d79de3 2020-07-30T11:08:02 Update inaccurate error string. Noticed when working on the traces. Bug: angleproject:4845 Change-Id: I954851bc739e41ce84047eaf5e0dc4c8bcf57199 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2329832 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop aed3d65b 2020-07-29T22:23:00 Tests: Add NBA2K20 trace Test: angle_perftests --gtest_filter="TracePerfTest.Run/*nba*" Bug: b/160014453 Bug: angleproject:4048 Change-Id: I4899af05d48ad2900e6d5e44adc5f5e0bdba157e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2326911 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 248d754a 2020-07-29T16:50:03 Capture/Replay: Limit string lengths in capture MSVC can't handle string lengths longer than 16380 according to: https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2026 Example build failure without this CL: https://logs.chromium.org/logs/angle/buildbucket/cr-buildbucket.appspot.com/8873410048312858000/+/steps/compile_with_ninja/0/stdout Test: Compile NBA2K20 MEC with MSVC Bug: b/160014453 Bug: angleproject:4048 Change-Id: Ie14d40e8c3eea35d08d4be32455b327a311f1bcc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2327702 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis a9504808 2020-07-29T16:33:45 Vulkan: ATrace marker fix-ups Fix a couple of mislabled atrace markers and add explicit markers for inside/outside renderpass flushes. Bug: b/156403378 Change-Id: I4045846e54ff54bc8fc3dd6ef47339f6f5eb8e87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2327828 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Shahbaz Youssefi dcc56215 2020-07-19T01:12:09 Vulkan: Implement GL_EXT_multisampled_render_to_texture This change allows the use of resolve attachments in the Vulkan backend. GL_EXT_multisampled_render_to_texture is implemented using this feature. The infrastructure for specifying resolve attachments is designed with eventual support for GL_EXT_multisampled_render_to_texture2 in mind as well as optimizations to glBlitFramebuffer() and multisampled backbuffers. Proper support for glRenderbufferStorageMultisampledEXT is still missing from this change. All tests use this for the depth/stencil attachment and don't read back the data. Currently, the depth/stencil attachment is created as a normal multisampled image. Bug: angleproject:4836 Change-Id: I110a7f63312ae61a657b6094adf7d97c92bd5843 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2304170 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Peng Huang d56ed7cf 2020-07-30T08:13:07 Support EGL_ANGLE_display_semaphore_share_group for DisplayNULL Bug: angleproject:4877 Change-Id: I811ff57625a6bac749a50a1a53da48e62f5b8222 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2329285 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Shahbaz Youssefi 19aac801 2020-07-28T11:18:53 Vulkan: Remove unnecessary endRenderPass calls. In both onImageRead and onImageWrite, there's a call to endRenderPassAndGetCommandBuffer when necessary to record a command. There was an extraneous call to endRenderPass in both functions for no good reason. Bug: angleproject:4882 Change-Id: I8f3b18dbb3cb9a8b92dedcc603eaf44b1e485986 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2323642 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 1c1c6b4e 2020-07-29T13:17:16 Vulkan: Cache/re-use vkImageView's per max level For applications that frequently switch a texture's max level, cache and re-use "read view" vkImageViews per max-level. Test: NBA 2K20 Test: angle_deqp_gles3_tests --gtest_filter=dEQP.GLES3/functional_texture_mipmap_*_max_level_* --use-angle=vulkan Bug: b/161993151 Change-Id: I9a6a81d5234196040bc6c264ec627a073ba73293 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2321370 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Peng Huang 4cf2501c 2020-07-27T13:19:27 Add extension EGL_ANGLE_display_semaphore_share_group For sharing semaphores globally. Bug: angleproject:4877 Change-Id: I472e0902fd04ca8350d74e6c0ae6925ee930ccf9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2319370 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 5f6f47f6 2020-07-29T14:26:37 Tests: Update gfxbench traces Use new capture calls to support offscreen mode. Test: run_angle_perftests --gtest_filter="*Trace*" Bug: angleproject:4845 Change-Id: I6d9ea79bd8339b7d5398e34b0407425e80ce1d32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2327699 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop cc846039 2020-07-27T21:05:11 Capture/Replay: Fix GetTexImage on Luminance GetTexImageANGLE and GetRenderbufferImageANGLE use ReadPixels to pull texture data. Luminance is not a renderable format, so it is not supported by ReadPixels. To support this, override Luminance formats to their underlying internal format. Test: angle_end2end_test --gtest_filter="*GetTexImage*" Bug: b/160014453 Bug: angleproject:4058 Change-Id: Id19344c2e2c06386a871338833e35b7747cb966b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2321740 Reviewed-by: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill d019af80 2020-07-29T11:30:34 Capture/Replay: Fix missing header. This was missing from a prior commit. Bug: angleproject:4845 Change-Id: Iff2b0f300270df4c2e26265c5af81af8ae7e5e54 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2325032 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop e4ceee97 2020-07-17T15:57:37 Capture/Replay: Break up SetupContext While getting NBA2K20 MEC to work, discovered that SetupContext was so large, it was causing a stack overflow. To fix, simply break up the function into a series of helpers if the number of calls exceeds a set limit. Test: NBA2K20 MEC Bug: b/160014453 Bug: angleproject:4048 Change-Id: I332d5dea5fc4e14700b68150cbe31a4c88cdae89 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2321739 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill bba8daea 2020-07-27T20:07:53 Perf Tests: Use timestamp queries for GPU time. Testing shows that using timestamp queries and deferring the query get calls until after the frame produces little overhead. Also this fixes a missing GPU time reset between iterations. Bug: angleproject:4879 Change-Id: I2a566548add1536aab689cd969594a15f0628da3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2321573 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 07cdf421 2020-07-28T09:08:46 Vulkan: Add new validation skips Skip new error UNASSIGNED-CoreValidation-Shader-InputNotProduced and best practices warning UNASSIGNED-BestPractices-vkCmdClearAttachments-clear-after-load Bug: b/156661359 Bug: angleproject:4883 Change-Id: I05bf5cac46c54bfb32fa47ea6d3398bd534450f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2323641 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Manh Nguyen 2918eade 2020-07-28T13:08:05 Remove context id serialization Serializing context id causes many tests to fail capture replay test. Remove it from the the GL context state's serialization. Bug: angleproject:4817 Change-Id: Ide04f24c54d1f1fced532e49e85c0c2970816f5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2323645 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Jamie Madill 44bb4d7a 2020-07-22T13:58:50 D3D11: Fix bug with static vertex attributes. In some specific cases after binding a zero size buffer we could end up trying to use a buffer storage that was no longer valid. Fix this by ensuring we don't flush dirty bits when we have an early exit due to a zero size buffer. Also adds a regression test. Bug: chromium:1107433 Change-Id: I9db560e8dd3699abed2bb7fe6d91060148ba1817 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2314216 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>