src


Log

Author Commit Date CI Message
Jose Dapena Paz 47fc356b 2024-04-09T11:20:07 GCC: move warm up tasks out of anonymous namespace GCC anonymous namespace is set per file. So forward declaring in the anonymous namespace of .h will not be valid in the .cpp file. Bug: chromium:40565911 Change-Id: I10bd94f035761602d69e59a94dfde5dc774a6776 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5475346 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao d2e5eeef 2024-04-23T17:47:03 Vulkan: UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout Supress the above VVL error. What happened is that the test creates a single buffer context. Since it only has one buffer for both render and present, we always immediately put it in VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR. Then when we render to it, we got the above VVL error. According to vulkan spec 6) What should the layout of the shared presentable image be? RESOLVED: After acquiring the shared presentable image, the application must transition it to the VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout prior to it being used. After this initial transition, any image usage that was requested during swapchain creation can be performed on the image without layout transitions being performed. And we always include VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT usage flags when creating swapchain images, so this should be okay. Bug: b/336652255 Change-Id: I8a04f94c9a7b6dcc1818697f45630cb0a6ee8811 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5479840 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao c74d2634 2024-04-19T12:19:51 Vulkan: Update mSurfaceCaps with per-present mode caps. Vulkan spec says "The per-present mode image counts may be less-than or greater-than the image counts returned when VkSurfacePresentModeEXT is not provided". Riht now we are using the generic surfaceCaps information which has smaller minImageCount. This triggers VVL error VUID-VkSwapchainCreateInfoKHR-presentMode-02839.. This CL updates mSurfaceCaps and mMinImageCount with per-present mode caps and create swapChain with proper minImageCount. Bug: angleproject:8672 Change-Id: I6061d2db8e98032dcb2c3225f2976013a99336a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5467850 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Kimmo Kinnunen 6fe8a399 2024-04-22T18:11:30 Metal: Fix rewritten out variables with underscores Fix compilation in case of output variables start with underscores. Make name emission always emit MSL name ANGLE_{name}, so that GLSL `_e` and `e` cannot clash. This regressed in angleproject:8558. Bug: chromium:335744344 Change-Id: Ibae4dba4a24888acc1461582e69d48218ba11176 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5473412 Reviewed-by: Kenneth Russell <kbr@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Charlie Lao 2905a6a6 2024-04-19T15:09:41 Vulkan: Fix read pixel to cached non-coherent memory The bug here is that when we use cached non-coherent memory for image read, we must wait until DMA to finish before calling invalidate(). Otherwise CPU pre-fetching might end up populate the cache line again with old data between invalidate and DMA and causes CPU reads get the stale data from cache. This CL moves invalidate() call after we wait for copy to finish and removes requireCachedBitForStagingBuffer feature flag. Bug: b/335937565 Bug: b/315836169 Bug: b/324953979 Change-Id: Ie8a1854e17a5fe9c534c5102b2e0d51bd35c131a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5468597 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mohan Maiya 36ae4553 2024-04-21T05:18:17 Vulkan: Remove unnecessary member from ProgramExecutableVk Bug: None Change-Id: I896cd67c0ca41d146d8f1cd5494404bbd30b8264 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5469555 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 23b8a833 2024-04-19T18:03:17 Suppress VUID-VkSwapchainCreateInfoKHR-presentMode-02839 Breaks experimental Pixel 6 Android U bot https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-test/4979/overview Bug: angleproject:8672 Change-Id: I2968dd1ed4ed7e2bc636d762b6d1fb884733a264 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5466741 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Austin Annestrand cc770518 2024-03-28T18:05:00 CL/VK: Implement flush & finish Bug: angleproject:8632 Change-Id: I139e463c0b1c947cee68e65c40503e52f01e988b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406615 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi c75b03ad 2024-04-18T16:09:48 Vulkan: Remove duplicated fallback entry in vk_format_map.json Bug: b/335496851 Change-Id: Id5fe805a15ae4fa4b09ffbf05fcf7b6d3d79b1ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5463921 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Austin Annestrand d4abe622 2024-04-03T17:46:38 CL/VK: Implement enqueue NDRangeKernel & Task Adding support for: clEnqueueNDRangeKernel clEnqueueTask Bug: angleproject:8631 Change-Id: If57002be3ea00a55215e89ca47ab8fe9a422c6e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406614 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 48132950 2024-04-17T17:05:07 Vulkan: Optimize DescriptorSetLayoutDesc layout Separate out immutable samplers into its own array so we can remove padding from PackedDescriptorSetBinding which reduces the size of that struct from 16 bytes to 4 bytes. Bug: angleproject:2462 Change-Id: I79d1ab584178202c9b7f34b0c7926edced4e21a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5464162 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 80c8b6f0 2024-04-17T10:06:45 Revert "Vulkan: Only enable DS dynamic state if there is DS attachment." This reverts commit 471b50407d7d1c22491d066df77060cb8b9b2f89. The reverted change does not correctly handle UtilsVk functions, leading to validation failures. UtilsVk could be made to not set dynamic state when the depth/stencil attachments are missing, but instead the change is reverted because: - The original issue that prompted this is easily fixable (and fixed in this change) - Disabling depth/stencil dynamic state is not necessarily a performance improvement; every time a pipeline in such a render pass is bound, the driver would have to make sure to no-op the relevant state change if static, which is also costly. Instead, dynamic state may need to be set only once in the entire render pass. Bug: b/223456677 Bug: b/315353258 Bug: angleproject:8242 Change-Id: I8282b87857d6b9285dbcf307c3c6ecf69df5fadb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5462079 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu d0b01c81 2024-04-17T14:40:10 Remove duplicated fallback entry in vk_format_table_autogen Bug: b/335496851 Change-Id: Iff6a095aaffac099779b093e02b1a818b510dc0a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5464161 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov 4109a90e 2024-04-16T17:31:11 LinkedUniform: avoid frequent GLenum -> index conversion Certain functions such as getElementComponents() are frequently called in driver_overhead benchmark, causing repeated GLenum -> index conversion of the uniform type which shows up in profiling (driver_overhead_2 trace) Change LinkedUniform.pod.type to LinkedUniform.pod.typeIndex storing the UniformTypeInfo index with conversion helpers. Bug: b/335295728 Change-Id: Iae5cd58f4e2703589d23b8e52991fc4b97c5fb08 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5458741 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 00fa9af9 2024-04-18T10:55:34 Disable the BasicNoOpMutex test It's flaky by nature, and the flake rate turned out to be much higher than anticipated (i.e. it cannot be ignored). Bug: b/335541479 Change-Id: Ic29c549aa761230e1d8aa8156c66e78aae939e53 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5463920 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 6861da63 2024-04-17T15:52:27 Vulkan: Don't cache staging buffers on PowerVR Seeing flakiness in simple tests. Narrowed it down to cached coherent memory. There is likely something ANGLE is doing wrong but broaden the workaround until it is root caused. Test: angle_end2end_tests Bug: b/315836169 Bug: b/324953979 Change-Id: I15e50781f746ffb24b0a12b1e28df04a3822b556 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5464283 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mohan Maiya b2aad1bb 2024-04-17T06:12:14 Vulkan: Track valid descriptor set layouts Instead of looping through kMaxDescriptorSetLayoutBindings in `DescriptorSetLayoutDesc::unpackBindings` track valid descriptor set layouts in `DescriptorSetLayoutDesc::update` Bug: angleproject:2462 Change-Id: I1ca2ba72875d9306b6059b14cde39c5d16250be6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5464160 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi d71b8ee0 2024-04-17T10:00:27 Vulkan: Fix dynamic depth/stencil in UtilsVk when unused Dynamic state still needs to be set even if depth/stencil test is disabled. Bug: angleproject:8151 Bug: b/323708819 Change-Id: Ic470fabd84c71b026152b6bee2e6a2c803514106 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5462059 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 03c88d33 2024-04-17T03:03:17 Revert "Vulkan: Suppress VUID-VkSwapchainCreateInfoKHR-pNext-07781" This reverts commit 99ac37cf7bad44d43f0c18da0410bde1073b62ea. Reason for revert: Fixed upstream https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/7851 Original change's description: > Vulkan: Suppress VUID-VkSwapchainCreateInfoKHR-pNext-07781 > > Only failing on windows x86. Unknown if ANGLE bug, VVL bug, or an > inherently racy check as it happens only in the window resize tests. > > Bug: angleproject:8668 > Change-Id: I0f928883647a4dc701d58e2df99e647e1397c773 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5453692 > Reviewed-by: Roman Lavrov <romanl@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:8668 Change-Id: I8831b5011ed3a7f5bf48af25f8933d50b5c4e1ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5459521 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi e92b8e8d 2024-04-16T13:27:19 Manual roll VK-GL-CTS from 491cfc2dbec9 to b529676d0523 (1 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/491cfc2dbec9..b529676d0523 2024-03-29 yuxinhu@google.com Move external/openglcts/data into a new subdirectory If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,syoussefi@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://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Change-Id: I5e07217cca190ec243f1b700348cde0384dbf052 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5457892 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1264c9cc 2024-04-16T13:22:16 Manual roll VK-GL-CTS from caf989d22e07 to 393ca590ec21 (5 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/caf989d22e07..393ca590ec21 2024-03-29 marcin.hajder@mobica.com Port KC-CTS tests to VK-GL-CTS (transform_feedback3), PART 4 2024-03-29 marcin.zajac@mobica.com Test depth with VK_EXT_fragment_density_map 2024-03-29 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.8 into vk-gl-cts/main 2024-03-28 skr@nvidia.com Consider layer index when retrieving decoded frame 2024-03-26 rgarcia@igalia.com Share test configuration between case and instance in EDS tests If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,syoussefi@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://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Change-Id: I562b77d2dab2e949a2562c1bb0e655e1ed8bb5df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5459012 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 97cb3eb8 2024-04-16T10:25:49 Split ASSERT and logs into separate header This is because SimpleMutex.h wants to ASSERT, which was defined in debug.h. That file has a function that returns a reference to a mutex that would eventually be changed to SimpleMutex. The circular dependency cannot be resolved with a forward declaration with SimpleMutex being defined with `using`. Bug: angleproject:8667 Change-Id: I9a3acb6d07c6702048b47a72d8411b0fc2166922 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5458631 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d9d583bf 2024-04-15T00:24:47 Implement a lock/unlock-only mutex based on futex Pthread mutexes are expensive due to their numerous features. When a mutex only needs to support lock and unlock, its implementation can be much simpler. The implementation in this change is "inspired" by a similar mutex in mesa. Expected uses of this mutex are: - Allowing some OpenGL calls to avoid the share group lock and instead lock the specific shared object they operate on. - Replacing SpinLock in the OpenCL implementation (spin-lock in user space is a bad idea [1]) - Generally anywhere we use std::mutex just to do lock/unlock Tests based on patch authored by Igor Nazarov <i.nazarov@samsung.com> [1]:https://www.realworldtech.com/forum/?threadid=189711&curpostid=189723 Bug: angleproject:8667 Change-Id: I52278c9d19616338c499bbcef6684746caead6ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5446558 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Matthew Denton 6557da03 2024-03-22T05:49:59 Implement TextureWgpu::getAttachmentRenderTarget() Most of this is copied from TextureVk::getAttachmentRenderTarget() with parts removed to make it simpler to start. Need to check what happens when running a clear test. Bug: angleproject:8582 Change-Id: Ia3b1f057add7714c7b192af1a3bf0edb41ccb649 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5388077 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Liza Burakova 041b0a4d 2024-04-15T13:42:17 Begin initializing caps for webgpu Bug: angleproject:8457 Change-Id: Idde0673297ec675a13bd3e4fd4d220ec47392153 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5391987 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Liza Burakova 2218db2b 2024-04-10T13:41:17 Add error callback for webgpu device Bug: angleproject:8547 Change-Id: I9946311a1f93cc5f49fb0e17e65c92789bdb3b6a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5443428 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi f4d3041a 2024-04-13T22:37:11 Remove double-serialization for glGetProgramBinary The applications get the binary length first, and then get the binary itself. Prior to this change, ANGLE was serializing the program binary twice. What's more, if the blob cache is enabled, ANGLE serialized the program binary yet another time for that. With this change, the program binary is serialized only once. If the application queries the program binary, serialization is done the first time needed, is cached and then discarded as soon as the binary itself is returned. Bug: angleproject:7393 Change-Id: If6e3011097ca4d4a1cdcd2dcc23496901196d999 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5448090 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 24ba48eb 2024-04-13T23:07:11 Do not cache program binary in blob cache redundantly with app If the application has specified the GL_PROGRAM_BINARY_RETRIEVABLE_HINT hint, let the application itself cache the program binary and skip ANGLE's implicit caching. This saves time in serializing the binary, and memory and disk space storing these binaries. If the application sets the hint, but does not actually restore the binary, they will suffer instead. This change also adds a perf warning for applications that retrieve the binary without setting this hint. Bug: angleproject:7393 Change-Id: I05aa880a31fa2fbbd61447c257c990a57137e1e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5448089 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 99ac37cf 2024-04-15T09:38:07 Vulkan: Suppress VUID-VkSwapchainCreateInfoKHR-pNext-07781 Only failing on windows x86. Unknown if ANGLE bug, VVL bug, or an inherently racy check as it happens only in the window resize tests. Bug: angleproject:8668 Change-Id: I0f928883647a4dc701d58e2df99e647e1397c773 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5453692 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao e229afad 2024-04-12T16:15:42 Vulkan: Disable setting_sync_queue_submit In this CL we basically ignored all SyncVal errors from VkQueueSubmit. https://chromium-review.googlesource.com/c/angle/angle/+/5137081 But this validation is still enabled. This validation is super slow right now (tracked by https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/7285). There is no need to waset bots time to do this validation and then ignore its result. Bug: b/316013423 Bug: b/334183919 Change-Id: I1f6c53f484c088e684d2686422f33539b31b8b7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5450955 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 08d9d5cc 2024-04-12T16:04:34 Vulkan: VK_EXT_validation_features was deprecated and is replaced with VK_EXT_layer_settings. This allows all VVL settings to be controlled programmatically. See more detail in https://vulkan.lunarg.com/doc/sdk/1.3.280.0/windows/khronos_validation_layer.html Bug: angleproject:5290 Bug: b/334183919 Change-Id: I7dce52711260ee874bbd70bc0d351e5aa840dffa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5450954 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 67fc293a 2024-04-05T13:25:12 WebGPU: Add shader translation and program linking stubs. Add a TranslatorWGSL which outputs the same translated shaders every time. Implement the compile and link tasks. Bug: angleproject:8662 Change-Id: I62bbd6c528e1d671d0f4becc38f15f1eceb0336c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5428807 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Marius Kintel 5e790bfb 2024-04-11T14:58:58 Remove unnecessary D3D include Bug: b/329414677 Change-Id: If96e10f3762fe849485f52783565658889491c97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5444810 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang f4485224 2024-04-05T10:29:23 WebGPU: Implement glBufferData and glBufferSubData Define several usages for WebGPU buffers that map to wgpu buffer usage flags. Maintain a set of buffers by usage and a serial of the one with the most recent data. Defer creation of the buffer as long as possible to take advantage of the WebGPU mapAtCreation flag for data upload. If we ever have to unmap these buffers, staging buffers must be used to upload afterwards. Add some helpers for getting Device and Instance from a gl::Context. Bug: angleproject:8654 Change-Id: Ibb8147119af8a98738fc4d579830a02ccaa1d7c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426813 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org>
Scott Marcy e088af30 2024-03-28T15:30:59 Parsing very long array declarations crash Avoid stack overflow crash when parsing arrays with a huge number of dimensions. Limits the number of array dimensions to `mMaxExpressionComplexity` (typically 256). Use `YYABORT` to abort parsing. Bug: angleproject:8610 Change-Id: Icf3914871b167c820b84ae8f3acba80dbd698af3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5424330 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1152f9d1 2024-04-10T22:05:35 Remove PPO as observer of its own executable No messages from PPOs observer come to the PPO for processing anymore. All messages come from the attached programs. Bug: angleproject:4559 Bug: angleproject:6358 Change-Id: I55a6884d843655c4dfabd33ea370c61ec27183d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5444726 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e41286e1 2024-04-10T11:05:09 Vulkan: Fix internal caching missing Since the backend wait for post-link tasks was made possible [1], the front-end may never get a chance to internally cache its binary. This is because the decision to cache the binary was based on the existence of post-link tasks, and the backend clearing that list made the front-end confused. In this change, a specific bool tracks whether binary is cached, and that is checked at various times to make sure the binary cache is eventually done. [1]:https://chromium-review.googlesource.com/c/angle/angle/+/5427001 Bug: angleproject:8297 Change-Id: Iceefd0bca79d570d4910983be3660d6e725684a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5445484 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi bc53f360 2024-04-10T16:08:23 Vulkan: Improve pipeline warmup hit rate without GPL When VK_EXT_graphics_pipeline_library is not in use, warmup would practically always hit a perf warning about it mismatching the graphics desc of the current draw call. This is because the color mask is not set appropriately, which is what this change does. Bug: angleproject:8297 Change-Id: Ie84660e493baf4370c09f43d50d57fc911bd1390 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5445483 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d9943e44 2024-04-09T23:53:48 Remove Program::syncState The last bit of responsibility still left in Program::syncState was to wait for post-link tasks for the sake of EGLBlobCacheTest tests. A new extension, GL_ANGLE_program_binary_readiness_query is created so that the wait can be done in the test itself. This extension is ultimately useful for applications as well, so they can avoid blocking the CPU by calling glGetProgramBinary prematurely. Bug: angleproject:8297 Change-Id: Ied6b755cb9b060198f82c7948bfd03441435a578 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440302 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Mohan Maiya c1397510 2024-04-07T21:05:34 Vulkan: Fix data race in WarmUpGraphicsTask std::unordered_map doesn't support simultaneous read and write. Cache placeholder PipelineHelper in WarmUpGraphicsTask and std::move the newly created PipelineHelper when warm up is complete. Bug: angleproject:8297 Change-Id: I1cc4b3cd48147d0080666d5669d61de006c2252d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5431830 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 392eca60 2024-04-10T15:36:07 Revert "GL: Support KHR_blend_equation_advanced" This reverts commit c632fae01ced6712d31c4665288eb306a980fb10. Reason for revert: Crashes on a few different devices. Bug: chromium:40277080, chromium:333443447 Original change's description: > GL: Support KHR_blend_equation_advanced > > Combine blend equation setting when they are equal. It is invalid to > set advanced blend equations for color/alpha separately. > > Emit blend equation layout qualifiers. > > Bug: angleproject:8660 > Change-Id: I1d8a88594c80027b564eed70d3b540e0b065968d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5415033 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Bug: angleproject:8660 Change-Id: I27ac64c7343831e42f5412d6c17facd0de8cd9e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5443404 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 4af8dafb 2024-03-10T20:14:18 Vulkan: Enable MSRTT emulation tests on swiftshader Bug: b/309355117 Change-Id: I2d842bc52f9b6af340025654111dfd3f8e9c58a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5359654 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Mohan Maiya d1bffdb6 2024-04-09T08:22:18 Vulkan: Bugfix in WarmUpComputeTask 1. An early return caused compute warm up tasks to not be scheduled 2. There are usecases where a program is marked separable post-link. Perform waitForPostLinkTasksImpl unconditionally during save(...) Bug: angleproject:8297 Tests: ProgramBinaryES31Test.SeparableProgramLinkedUniforms* Change-Id: I499f397b938677b4fcdb486001e0a75e202aaf5d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5439732 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 646f5d19 2024-04-03T15:28:40 CL/VK: Implement eventVk routines Adding routines: clGetEventInfo [CL_EVENT_COMMAND_EXECUTION_STATUS] clSetEventCallback clWaitForEvents [USER_EVENT_STATUS] We also trigger event callback on exec-status update. Bug: angleproject:8574 Change-Id: I470d9758de22a552bd9cf9565594b3049e21835d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421575 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 0a67bbaf 2024-04-08T10:14:45 SPIR-V: Fix const constructors with single scalar These constructors may be generated because of RemoveArrayLengthTraverser. Bug: chromium:332546345 Change-Id: I5b81ded59ba91b0083b14280f5a61b03b9d4ca43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5435713 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 84613b97 2024-04-09T12:36:55 Vulkan: Suppress Undefined-Value-ShaderInputNotProduced If the app doesn't write to an attachment from the shader, it'll get undefined values. Bug: angleproject:8401 Change-Id: I60f2bf510f0f0f9779f00dafbeee3b7364283bf4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440653 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Geoff Lang 0e19adb2 2024-04-08T13:21:09 Validate non-negative vertex attribute offsets. When robust buffer access is enabled, validat that buffers cannot be read with a negative index. Bug: chromium:323699974 Change-Id: I05beb72c60832ab4decbf16c47b3d92bd374286b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5435736 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Charlie Lao d3aaf795 2024-04-05T15:57:38 Vulkan: Early out ImageHelper::updateLayoutAndBarrier when possible If one image is attached to more than one attach points, when render pass closes we end up calling ImageHelper::updateLayoutAndBarrier multiple times. The first one is required since it does the layout transition etc. But the second call is unnecessarily inserting memory barriers. This is optimization itself, but will also fix the other bigger problem when we start using VkEvent instead of PipelineBarrier: we may end up waiting for an event that has not been set (since setEvent gets called after we end render pass but waitEvent is before render pass. Calling this sequence twice on the same image for the same render pass means second waitEvent is called before setEvent). Bug: b/333391804 Change-Id: Ic7b409c71806e63cb56c25e10b0bd0bfc9f6086d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5431033 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Roman Lavrov e73c0c6d 2024-04-09T11:20:18 EGLProtectedContentTest: move sleep behind compile-time var Multiple tests with multiple steps wasting ~20s in automated runs Bug: b/333113001 Change-Id: I494f6e3ea373945ad79edbc23eb267dfef71ef87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440412 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 126f8269 2024-04-05T22:00:02 Additional fix for link task worker pool race See [1] for context. While that change fixed the race condition, it was not great that the task held on to the worker pool for so long. This change avoids the race condition as well by releasing the worker pool as soon as the link task has no further use for it. [1]:https://chromium-review.googlesource.com/c/angle/angle/+/5428806 Bug: angleproject:8661 Change-Id: Ibcbad0afe518e649a63dfdf938bd566c8f80e368 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5431154 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya ba208b45 2024-04-06T21:08:15 Vulkan: wait for post-link tasks in resetLayout Wait for post-link tasks before resetting ProgramExecutableVk. Otherwise mGraphicsProgramInfos, which post-link tasks use to create pipeline, can be prematurely invalidated. Bug: angleproject:8297 Tests: Texture2DTestES3YUV*DisableProgramCaching Change-Id: Ib84cebad252777ae4c37cb32c455c326911416a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5430927 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang c632fae0 2024-04-02T15:03:17 GL: Support KHR_blend_equation_advanced Combine blend equation setting when they are equal. It is invalid to set advanced blend equations for color/alpha separately. Emit blend equation layout qualifiers. Bug: angleproject:8660 Change-Id: I1d8a88594c80027b564eed70d3b540e0b065968d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5415033 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi d55464ff 2024-04-04T14:13:02 Vulkan: Remove the supportsDepthClipEnable feature This feature is unused since: https://chromium-review.googlesource.com/c/angle/angle/+/4545084 Bug: angleproject:3970 Change-Id: I78acfda80d4ae04d1387a452e9f52a55a4298a4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426530 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 49e63e07 2024-04-03T13:22:30 Vulkan: Selectively wait for WarmUp tasks If the GraphicsPipelineDesc used by a draw call differs from the one being used by the WarmUp tasks there is no need to wait for their completion. Bug: angleproject:8297 Change-Id: Ibbf3ee710036936060990455bb8657d83c7b6faf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421594 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya ad13fec3 2024-03-30T15:31:49 Vulkan: warmUpGraphicsPipelineCache(...) shouldn't set state The prepareForWarmUpPipelineCache(...) method would have already setup all necessary state for the warm up task. Make that intent explicit by calling into a method that sets no state. Bug: angleproject:8297 Change-Id: I959d8591045ff05ddb2a410fd0e0eda8dd692d37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5408796 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 13829f20 2024-03-26T23:03:12 Vulkan: Optimize depth/stencil resolve with glBlitFramebuffer Like color resolve, depth/stencil resolve is now also possibly done by modifying the render pass and attaching a depth/stencil resolve attachment. Bug: angleproject:7551 Change-Id: I045e3875e24006d2473a55b6c3856dd768fe8b84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5398004 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 924b40dc 2024-04-04T18:44:21 Selectively wait for post-link tasks in the frontend The frontend waits for post-link tasks only for a relink or in syncState when `disableProgramCaching` feature is not enabled. Bug: angleproject:8297 Change-Id: If7a3b8a10a2d01f82fd2bebac5c8f378be56e19e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5427001 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 06472a7e 2024-04-04T21:07:02 Extend ProgramExecutableImpl API waitForPostLinkTasks(...) will be called into by the frontend. Backends can now choose to defer or avoid waiting for post-link tasks. Also, move warmUp task code to ProgramExecutableVk in the Vulkan backend Bug: angleproject:8297 Change-Id: Ia8a0682923e2f8c6287d62a606eed7f481cda08f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5427000 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 76636ddb 2024-04-04T15:39:08 CL/VK: Update missing reflection ops & DS creation Adding CLProgramVk routine to allocate DS. Also adding reflection parsing support for WGS IDs and PushConstantGlobalSize. Additionally, we now check VK implementation if non-semantic reflection data (in SPIR-V) is supported. If not, we strip that data from binary (via vk_feature check). Bug: angleproject:8631 Change-Id: Ife02867c7c30b919abf663865adc92858e1bff8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421574 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand 7a78c2c9 2024-04-03T14:32:35 CL/VK: Add helper to select LWS In the case where user passes NULL for LWS, the runtime has the responsibility to select an appropriate LWS for user. Bug: angleproject:8631 Change-Id: I89048c57880a5a4f18d4ef46340b73338cee933e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421573 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 2dc9d0cd 2024-04-04T14:38:31 CL/VK: Add workgroup size/count types Replacing existing CompiledWorkgroupSize type with "WorkgroupSize" and "WorkgroupCount". (since CompiledWorkgroupSize == WorkgroupSize). Bug: angleproject:8631 Change-Id: I4094d10e6ad5db51a56ae92fe4f2fb4a6e72bdc7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5425447 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya ac654931 2024-04-04T15:42:47 ProgramExecutable manages post-link tasks Post-link tasks are now owned and managed by ProgramExecutable. Also, update `LinkTask::link` API so backends have a choice to populate either the linkSubTask or postLinkSubTask containers (but not both). Bug: angleproject:8297 Change-Id: I5dbed6a070efe851fc1376699e9eccd3a21bd03f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406487 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Roman Lavrov c0386ad4 2024-04-05T11:56:17 AsyncWorkerPool releases shared_ptr<Closure> before notifying Parallel compile (MainLinkLoadTask, Program::LinkingState) is dependent on destructor getting called before the event is notified Repro: https://crrev.com/c/5425924 More details on the parallel compile case, provided by syoussefi@: """ A race condition caused the worker pool to sometimes be destroyed from a worker thread instead of the main thread. The race condition triggered in the following scenario: - The MainLinkLoadTask holds on to the worker pool - This is necessary for the main task to spawn further tasks asynchronously - The reference to the worker pool in MainLinkLoadTask is released by its destructor - The worker thread dequeues a task (i.e. MainLinkLoadTask) to execute and holds a reference to it. - Once the task is run by the worker thread, the worker thread signals its completion - (1) At this point, the scope holding the reference to the task closes and the task is released. However, this is done after signaling the task's completion. - On program destruction, the program ensures that all its tasks are complete - This uses the signal coming from the worker thread - (2) On display destruction, the worker pool is destroyed (by dereferencing it through the shared_ptr) - The destructor of the worker pool waits for the worker thread, with the expectation that this wait is done in the main thread. The race condition led to the assert firing when (2) was done before (1). Because the task is already signaled complete, the main thread considers it done and goes ahead with the destruction of the display. However, until the scope of the worker thread closes, the task itself is still not destroyed. Since the task is holding a reference to the worker pool, that prevents the worker pool from getting destroyed too. Once the display is destroyed, the worker thread closes its scope, causing the task to be destroyed. In turn, this leads to the worker pool itself to be destroyed. On destruction, the worker pool would wait for the worker thread to end which is a deadlock. Fortunately, this was caught earlier with an ASSERT that wanted to ensure destruction happens on the main thread. In this change, the worker thread ensures it releases the task before signalling it complete, avoiding this issue. Other possible solutions would have been: - Release the worker pool from MainLinkLoadTask as soon as the subtasks are scheduled - Explicitly call a "destroy" method on the pool, instead of relying on the destructor to clean up. """ Bug: angleproject:8661 Change-Id: I37c9bc8e8f05bce4062d794df449cc3d2c80a093 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5428806 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Matthew Denton be42f20b 2024-03-22T05:45:46 Start implementing glClear Currently, because both SurfaceWgpu::getAttachmentRenderTarget() and TextureWgpu::getAttachmentRenderTarget() are unimplemented, there is no actual RenderTargetWgpu in the RenderTargetCache to clear. Bug: angleproject:8582 Change-Id: I9ad33c57d533d81178d7d2a802d35b106ece5848 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5388076 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Shahbaz Youssefi 4a5d47df 2024-04-04T16:41:46 Test that binary is not saved after being loaded Bug: angleproject:8297 Change-Id: I2e7e2ffb8fff37aba828d25825fe7ab3262406ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426396 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 35c7e186 2024-04-03T14:31:59 CL: Introduce NDRange object/ops abstraction Create new FrontEnd type "NDRange" to encapsulate OpenCL's NDRange items. Update backend implementations to make use of this new object. Bug: angleproject:8650 Change-Id: I3c1549c50c85153b3ea77267e104eec04ba1bd93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421572 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev cdbc58f1 2024-04-04T00:00:00 Metal: Align texture view constructors with the API Fully expose Metal API parameters through texture view constructors. No behavioral change. Bug: angleproject:8355 Change-Id: I2a55f1e799d6e06b2528eefdee4bf5936e5b4301 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426671 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Roman Lavrov f8bcfc3f 2024-04-04T16:03:32 Tests: avoid double logging to stderr from WARN() LoggingAnnotator::logMessage calls both plat->logWarning() (when plat is not nullptr) and gl::Trace(), and both log the message to stderr gl::Trace only logs when trace or asserts are enabled, so exclude that case from TestPlatform_logWarning. Bug: None Change-Id: I1649fcc9046f59cbd8f4cfef6be809d3218eddc9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426531 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Erica Li 3b650ffa 2024-03-19T09:53:06 Metal: Assert while using gl_VertexID as ivec Metal [vertex_id] is uint while gl_VertexID is int. Replacing gl_VertexID with gl_VertexIDMetal without rewrites of the expressions would cause invalid expressions. Fix by casting uint kgl_VertexIDMetal to int kgl_VertexID instead of replacing variable during compile. Bug: angleproject:8597 Change-Id: I76acdb2a0ab5982aa05181175925b3359068e901 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5376498 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Matthew Denton 5c6a531e 2024-04-03T02:53:13 Add ContextWgpu methods for managing current render pass For simplicity ensureRenderPassStarted() just ends the current render pass and starts a new one. Bug: angleproject:8582 Change-Id: I929526cf2574fa33309310e7f60191c10ab3bf7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5388075 Commit-Queue: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 103c1b53 2024-03-29T14:37:23 Vulkan: Drop MSRTT emulation dependency on independentResolveNone Usage of VK_RESOLVE_MODE_NONE was removed in [1], but dependency to this property was accidentally added in [2]. [1]: https://chromium-review.googlesource.com/c/angle/angle/+/2743666 [2]: https://chromium-review.googlesource.com/c/angle/angle/+/3353895. Bug: angleproject:4836 Change-Id: I25028b5d343686edd794acdac3714c4a6cb5fa17 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5407073 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 57eded36 2024-04-03T23:02:39 Vulkan: Fix off-by-one error in compute-based stencil blit The coordinates used for sampling were calculated based on pixel's top-left (integer) coordinates and used with a NEAREST sampler. This resulted in two bugs: - When X was flipped, the bounds check rejected the first column - The sampling could pick the wrong pixel as the on-the-edge coordinates could map to either of 4 pixels that share that corner. This change moves the sampling coordinates to the pixel's center. Bug: angleproject:8652 Change-Id: I0b54fa0bad366f52f8e6c17bb0054fa373af8b5c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5420834 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 58ecad7a 2024-04-03T23:12:05 Remove assertion that program is not linking when bound/unbound It's valid to link a program, let it happen in parallel and in the meantime bind and unbind the program in other contexts. The add/release ref functions were asserting that link is resolved, which is not true in that case. Bug: angleproject:8647 Change-Id: I784b5adbb04f062752a873deb1e7a4aaf4527e33 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5420990 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Hailin Zhang dc643d9b 2024-04-01T15:59:46 Vulkan: add feature control for client buffer merge add feature control for client attribute buffer merge. default is off to reduce memeory usage for some application. Bug: b/328301788 Change-Id: I5bfd39fb1ea656ebb29bd2dc21726b60bbc1a8d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410942 Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev ceb3c0e1 2024-03-28T00:00:00 Remove redundant AND from ValidateClear Component types of disabled draw buffers are already set to zero. Bug: angleproject:8618 Change-Id: I193dc6249158c6314076fedc7b4f43261d81f074 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5419708 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Nisha Jain ab6dd5b2 2024-03-07T14:19:58 Avoid asserts when const folding binary ops on void variables Fix asserts for example with / and % during constant folding when the operands might be voids. Bug: angleproject:8592 Change-Id: I22275642dbcdf9066940d3a94114e8daa5cbbe41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5416376 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Brian Sheedy 304ea14a 2024-04-01T17:24:10 Start Mac Intel experiment Bug: chromium:326904538, angleproject:8628 Change-Id: Ib453b4ba0e582d348ec0618b7a5b9c0e69efb86e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410986 Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Austin Annestrand ff03a7b1 2024-03-19T10:54:22 CL/VK: Program build_status & mCallback fixes Was missing saving the build_status in the program export/binary to disk. Also, missing dereference for mCallback. Bug: angleproject:8435 Change-Id: I77f070f5bc1c40454d625abcf13c1a4b70c465b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406613 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gowtham Tammana bb70f5d1 2024-03-13T06:02:40 CL/VK: Setup platform as provider of vk::Context Setup the CLPlatformVk to be the implementer of `vk::Context`. Initialize the Renderer instance during platform setup. This removes the dependency on the DisplayVk instance and as a consequence any associated egl state. Bug: angleproject:8515 Change-Id: If1848b002d6309911305ca3cb93c316ed7f48965 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406612 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya e4fe461f 2024-04-01T16:41:37 Vulkan: Apply mask during transition search When checking the transition cache for the shaders subset, mask transition bits with kShadersTransitionBitsMask Bug: angleproject:7369 Change-Id: Ic8e4ad00312d5e601dbfc0d84bbc76e809358427 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410940 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 64cfbb68 2024-04-02T13:22:09 GL: Fix MultisampledRenderToTexture tests and expectations Some MSRTT tests were failing on the GL backend due to exact GL_EQUAL depth tests, others were marked as skipped on all of Android due to old device issues. Update the Android expectations for these tests. Bug: angleproject:8642 Change-Id: I2aad2637773967102a6172fd0a8ae2cb58a420ee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5413775 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Alexey Knyazev abf7b612 2024-03-28T00:00:00 Optimize WebGL clear type validation Use cached component type masks instead of iterating over all attachments every time. Fixed: angleproject:8618 Change-Id: I45b83639120c0b4f50027d1d85fe9158f5cf187d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5407657 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Gowtham Tammana a8e9aa26 2024-03-11T23:50:18 CL/VK: Setup GlobalOps for the platform Setup CLPlatformVk as a provider of vk::GlobalOps, and use the vk::GlobalOps associated thread pool for async tasks. Bug: angleproject:8515 Change-Id: I3e1ae069afabeadfdfa02f4a2f99419882f91c6a Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5403225 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 85b3e967 2024-04-01T14:31:17 Fail link and validation of invalid tessellation program The GL_EXT_tessellation_shader spec says - The tessellation control and evaluation shaders are both optional. If neither shader type is present, the tessellation stage has no effect. However, if either a tessellation control or a tessellation evaluation shader is present, the other must also be present. Fail link and validation if a program contains TCS or TES shader but not both. Bug: angleproject:3572 Tests: KHR-GLES32.core.tessellation_shader.single.xfb_captures_data_from_correct_stage Change-Id: I6799f101a186f3bfae738df442e9aeee691fd91a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410646 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Gowtham Tammana 47ca7552 2024-03-07T14:19:06 CL/VK: Select Vulkan Angle as platform Ask for Vulkan Angle platform when setting up the platform. Else it is picking from the default one, which might not be Vulkan. Bug: angleproject:8515 Change-Id: I1f43a5de3eb2c72900631695e2b3a5ffef3d966d Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5403224 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 5d294e6e 2024-04-01T11:32:17 Manual roll VK-GL-CTS from 08c8f6c7aa44 to caf989d22e07 (30 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/08c8f6c7aa44..caf989d22e07 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,yuxinhu@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: b/332383430 Tbr: yuxinhu@google.com Change-Id: If0518d4db878990405bf5813ca456eafae0d9970 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410639 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 4d317b52 2024-03-22T15:48:51 Vulkan: Add MSRTSS preferred usage for tex init The image create flag related to multisampled render to single- sampled was used when this feature flag was enabled. However, this could lead to some platforms allocating extra memory for the image, even if the image did not use this feature. In this change, a new feature is added regarding whether to prefer this flag from the start. If disabled, ANGLE will only use this bit for the texture if it is actually bound to an MSRTT framebuffer object (through FramebufferTexture2DMultisampleEXT()). * Added a new feature: preferMSRTSSFlagByDefault * If enabled, the MSRTSS is used for all image inits. * (TextureVk::initImage()) * Otherwise, it will create the image without the flag at first. * Added member to texture frontend to track if the texture has been bound to an MSRTT framebuffer. * mHasBeenBoundToMSRTTFramebuffer * During TextureVk::syncState(), if the image without the MSRTSS bit is bound to an MSRTT framebuffer, it is recreated using the MSRTSS flag. * Checked in respecifyImageStorageIfNecessary(). Bug: b/329911999 Bug: angleproject:8622 Change-Id: I5e7d43e3828ae272441d65b2be35d09b23b68f84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5402978 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev 18797bf2 2024-03-28T00:00:00 Metal: Handle incompatible attachments Metal runtime fails if the attachment pixel formats are not compatible with the program outputs or if the corresponding render pass and pipeline pixel formats do not match. Added Metal-specific state tracking and forced draw framebuffer syncronization for such cases. Cleaned up and reduced Framebuffer::setAttachmentImpl. Fixed: angleproject:5233 Change-Id: I4ee01889debe0e3cce54635e6cba62dbfdc02722 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5377813 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Mohan Maiya e85bc345 2024-03-29T13:43:46 Account for disableProgramCaching Blob cache tests rely on implicit caching of programs. Account for disableProgramCaching frontend feature when saving and retrieving from cache. Also skip EGLBlobCache tests if the feature is enabled. Bug: angleproject:8297 Change-Id: Ib101eb5712deb7c04dd19c7092f93a6c6b42cd40 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5408103 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Solti 76113ffb 2024-03-27T20:35:46 Manual roll VK-GL-CTS from fe6e7bd09f53 to 08c8f6c7aa44 (1 revision) Manual roll requested by solti@google.com Some local updates were made to the roll, see https://anglebug.com/8636 for details. https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/fe6e7bd09f53..08c8f6c7aa44 2024-03-21 marcin.hajder@mobica.com Port KC-CTS tests to VK-GL-CTS (framebuffer_blit), PART 2 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,solti@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://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Test: presubmit Bug: angleproject:8636 Bug: b/331390622 Change-Id: I4e754b2a91f8a321e709842a8cf146bbf54a2199 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5402981 Auto-Submit: Solti Ho <solti@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 321c6b63 2024-03-29T10:30:59 Remove is_always_lock_free assertion from AtomicQueueSerial Build will fail when compiled on 32 bit architecture. The code will still function on 32 bit architecture but with performance penalty due to lock. But we are not really expecting it actually run on 32 bit platform with vulkan backend (the atomic queue serial is only used by vulkan backend). We could move AtomicQueueSerial into vulkan backend, but that will be a much larger change that I try to avoid. This CL removes the static_assertion and make it 8 bytes aligned as well. Bug: angleproject:7989 Change-Id: I3c0bd9877c4171485ca1aa9af0cf4621c1c23f56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5407870 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Alexey Knyazev 2b66694d 2024-03-28T00:00:00 Metal: Untangle public draw calls Do not call public Metal backend draw commands from itself. Bug: angleproject:8630 Change-Id: I7c0e016dc0eb3365520cdb39db215e4233e0d9fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5401865 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Auto-Submit: Alexey Knyazev <lexa.knyazev@gmail.com>
Yuxin Hu 076a5059 2024-03-28T10:15:42 Remove test suppression of dEQP-EGL*robustness on Pixel 6 Previoustly the tests dEQP-EGL*robustness*out_of_bounds_non_robust* were skipped on Pixel 6, because the test is intentionally testing in GLES, shader write out of bounds access results in undefined behavior. In ANGLE vulkan backend, shader write out-of-bounds access results in vulkan device lost on Pixel 6, which is a valid undefined vulkan behavior according to spec. However, VVL is reporting errors when ANGLE cleans up vulkan resources, because they haven't finished execution on GPU. With below VVL changes landed: https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/9452b82820276eb3eb2102bf49b72e59916d3ea7 https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/af257b1c55f312b550addeca091265c249c09cf3 VVL now checks if there is a vulkan device lost upon resource clean-up. If the vulkan device is lost, even if the resource has not finished execution, treat resource clean up as a safe vulkan operation and do not report VVL error. Bug: b/289544394 Change-Id: I9d3532d4d6b0c3a1cdfd8837e13b4527d0dfbd7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5403212 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi b559efa8 2024-03-26T22:02:41 Vulkan: Allow depth and stencil resolve to be separately added In preparation for optimizing resolve through glBlitFramebuffer for depth/stencil attachments. Bug: angleproject:7551 Change-Id: I57650d82c0cc6e56f44591eadfc42ac794cfef09 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5399140 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 84eb4f73 2024-03-26T15:44:48 Add a few use-after-resolve depth/stencil framebuffer tests Bug: angleproject:7551 Change-Id: I42c1a6b8fe8714fd9c1568d216b12ee9a001aba5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5399137 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi a0fa06f6 2024-03-25T14:46:56 Translator: Disallow samplers in structs in interface blocks As disallowed by the spec: > Types and declarators are the same as for other uniform variable > declarations outside blocks, with these exceptions: > > * opaque types are not allowed Bug: chromium:328859176 Change-Id: Ib94977860102329e520e635c3757827c93ca2163 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5391986 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b4cf07c3 2024-03-27T15:58:04 Vulkan: Move the interface pipeline library caches to share group When linking libraries into a pipeline, the linked pipeline lives in ProgramExecutableVk and may be shared between contexts in a share group. The caches for the vertex input and fragment output libraries thus cannot live in the context, but should remain alive until all contexts in the share group are destroyed. This change moves these caches to the share group. Bug: angleproject:8629 Change-Id: I2f7edf44d676505cf5e7e24640c6850c67f8b5e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5401514 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c71a67de 2024-03-27T15:50:00 Vulkan: Move pipeline cache graph dump to renderer In preparation for moving some caches to the share group. Bug: angleproject:6565 Bug: angleproject:8629 Change-Id: I1a06a18417502e499da0edb9abb0d510e3ad99ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5401513 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 0e9254bd 2024-03-25T16:37:51 Vulkan: Optimize color invalidates By not flushing the render pass when there is an invalidate. Previously, the tracking of invalidation, write to attachments, management of load/store ops, and whether image contents are defined or not have all been unified between color and depth/stencil images. As such, it is possible to not close the render pass when a color image is invalidated just as is not done for depth/stencil images. Together with the optimization to resolve attachments [1], it is now finally possible to efficiently do MSAA rendering with ANGLE. Note that the optimization to use resolve attachments for depth/stencil is not yet implemented. For color only, the perf test added in [2] shows the following improvement on Pixel 6: - Single sampled rendering: ~2.73ms - Resolve + invalidate (before optimizations): ~3.54ms - Resolve + invalidate (after this change): ~2.85ms [1]: https://chromium-review.googlesource.com/c/angle/angle/+/5388492 [2]: https://chromium-review.googlesource.com/c/angle/angle/+/5392548 Bug: angleproject:7551 Change-Id: I008adf9f53df97ab464b0a0399f0b312bf4d0d3f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5391905 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brian Sheedy 3c8b3f6b 2024-03-26T17:07:39 Start Mac AMD experiment Bug: chromium:327017900, angleproject:8628 Change-Id: I7b108c724eaa6f5ff7b8098c256c6e4a47578b5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5399719 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>