src/libANGLE/renderer/vulkan/vk_renderer.cpp


Log

Author Commit Date CI Message
Shahbaz Youssefi c75bd915 2024-12-10T23:01:44 Vulkan: Remove asyncCommandQueue It's been years and it never showed an advantage. In the meantime, performance without this feature seems close to native drivers (i.e. the feature has lost its appeal) and it's frequently a source of complication and bugs. Bug: angleproject:42262955 Bug: angleproject:42265241 Bug: angleproject:42265934 Bug: angleproject:42265368 Bug: angleproject:42265738 Bug: angleproject:42266015 Bug: angleproject:377503738 Bug: angleproject:42265678 Bug: angleproject:173004081 Change-Id: Id8d7588fdbc397c28c1dd18aafa1f64cbe77806f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6084760 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll e34135cc 2024-12-09T18:20:00 Manual roll vulkan-deps from 86f73c27b3fc to 0057c6fd95c9 (28 revisions) Manual roll requested by ynovikov@google.com https://chromium.googlesource.com/vulkan-deps.git/+log/86f73c27b3fc..0057c6fd95c9 Manual edits to VVL skip list in vk_renderer.cpp for bugs: https://anglebug.com/42266639, https://anglebug.com/383311444 Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/4e9bb6f426cf776910848441da65cc14f1146e77..bfc0ffa353cb2b7bfda65c6b65f15c5c4d0564d0 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/36d5e2ddaa54c70d2f29081510c66f4fc98e5e53..3f17b2af6784bfa2c5aa5dbb8e0e74a607dd8b3b https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/3fb52548bc8a68d349d31e21bd4e80e3d953e87c..4d2f0b40bfe290dea6c6904dafdf7fd8328ba346 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers/+log/49af1bfe467dd5a9efc22f7867d95fdde50e2b00..6a74a7d65cafa19e38ec116651436cce6efd5b2e https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools/+log/a2224abf350f61211462a33e5b540201fa17de0d..2744de9936755fea6912d47e7a0a8857d8a4fdee https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/b538fb5b08513aa78346cd414ad5e576a2a3e920..160e946f5d4b3a657f47b7fc4b0bd3cc8d0d6afd https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/902f3cf8d51e76be0c0deb4be39c6223abebbae2..3d71b8748ca519be54daacdabed9dcb6fa4367bf If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,cnorthrop@google.com,ynovikov@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: angleproject:42266639 Bug: angleproject:383311444 Tbr: cnorthrop@google.com,ynovikov@google.com Change-Id: I90615e11c3dd2d737d5f87e3fabd5b984c807111 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6079809 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Yuxiang Qian 95756ae2 2024-12-04T15:47:19 Expose VK_EXT_image_compression_control_swapchain To implement EGL_EXT_surface_compression, VK_EXT_image_compression_control_swapchain should be exposed. With this extension, we can put VkImageCompressionControlEXT to the pNext of VkSwapchainCreateInfoKHR Bug: angleproject:375496226 Change-Id: I3f62040be3ba3e5cc051164cb9ace1934e61dead Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6073353 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao e42047f0 2024-10-25T13:50:28 Vulkan: Disable DescriptorSet cache for SwiftShader Performance with swiftShader is not critical and cache code path not making much difference for SwiftShader renderer anyway. This CL disables descriptor set cache for SwiftShader mainly to ensure the code path gets test coverage on CI bots. This code path also ensures that we are tagging ResourceUse on DescriptorSetHelper properly after every use. Otherwise, it is very hard to test with cache enabled code path since object usually won't get destroyed due to cache and any bug associated with this is going to be very hard to debug. This CL has catch such bugs during the descriptor set cache work. Bug: angleproject:372268711 Change-Id: Iee1028f9378cf4f537d897e08746d5cf958f225a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6047805 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 739bcef0 2024-12-03T17:58:34 Vulkan: Rework finishOneCommandBatchAndCleanup This is a follow up for: Vulkan: Fix finishOneCommandBatchAndCleanupImplLocked crrev.com/c/angle/angle/+/6055419 The original `finishOneCommandBatchAndCleanup()` was not optimal in a sense that it is always finish a batch, when cleaning existing garbage may be sufficient. Also, because there was no feedback from the `cleanupGarbage()`, this method may just end up finishing one batch without cleaning any garbage, causing clients to "think" that there is no more garbage to clean. Additionally, `cleanupGarbage()` was called under the `CommendQueue::mMutex` lock, causing uncessary blocking. This change replaces this method with new `cleanupSomeGarbage()`. It solves all problems of the original method described above. It no longer has the `retireFinishedCommandsLocked()` call, because it is not necessary in scenarios where `cleanupSomeGarbage()` is used. In order to implement the new method, output feedback parameter was added to the `cleanupGarbage()` as well as to all methods that it uses. Bug: b/280304441 Change-Id: I7078899838609a0c3e5edbc4f507c2fe4364380a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6063126 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Igor Nazarov 104d4e4a 2024-11-15T20:44:39 Vulkan: Improve usage of ErasePipelineCacheVkChunks method `ErasePipelineCacheVkChunks()` is now also used to erase any possibly trailing chunks from the current slot. This is done to free blob cache memory and to avoid parsing these chunks in the future and generating false-positive "chunk header corrupted" errors. Normally, new pipeline data is always larger than already saved, but in case of Vulkan driver update existing data may be ignored, so the cache data will be generated from scratch. This change will help erase old data from the blob cache. Bug: angleproject:42263322 Change-Id: I021abce40c4255b443babed87ed82b273d526ec0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5854708 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 7adbb3e8 2024-11-26T17:06:07 Vulkan: Remove explicit destroy calls Since now SharedPtr will automatically call destroy(device) when last reference goes away, there is no need for explicitly calling destroy(device) any more. Bug: angleproject:372268711 Change-Id: I208b17cf7e090babd51d6f337c20fdfd74c75b6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6052886 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao d81834b6 2024-11-26T15:25:35 Vulkan: Store VkDevice in vk::SharedPtr So that we don't need to have two versions of destroy() APIs. In previous CLs I had to add another version of destroy() that does not take device argument due to SharedPtr may calls destroy when last reference count goes away. Because we do not have device information at that time, destroy() API was added but mostly just doing assertion that Vulkan object has been explicitly destroyed. With this CL, we now stores device in the SharedPtr so that we no longer need two destroy() APIs. The explicit destroy(device) call will be removed in the next CL. Bug: angleproject:372268711 Change-Id: Idcacbc3a922e17ac3d0f6056466b8f3aa084b02e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6052096 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Robic Sun f51170b3 2024-11-21T16:30:40 Enable GL_KHR_texture_compression_astc_hdr Vulkan supports GL_KHR_texture_compression_astc_hdr, so this extension can be enabled in Angle. Bug: angleproject:379186304 Change-Id: I438a120c3f884a7eefcd883ad71abf68f81cb473 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038457 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b31f367a 2024-11-28T16:11:33 Vulkan: Keep old VVL suppression until roll into Chromium Bug: angleproject:336652255 Change-Id: Id12e86862cde613cbf3c87557532b2bf23da1838 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6056751 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
angle-autoroll e10220f8 2024-11-28T18:24:35 Manual roll vulkan-deps from 3c7156644de7 to 0e28d467e76d (59 revisions) Manual roll requested by syoussefi@google.com https://chromium.googlesource.com/vulkan-deps.git/+log/3c7156644de7..0e28d467e76d Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/1f1ef7560399322558793d91a53b34cdd34f4fe1..0099ed6ad09a78b083c93be9369791dd72cf8a33 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/45b314049d6262c850cc873c8f9a30f41a1e0c13..36d5e2ddaa54c70d2f29081510c66f4fc98e5e53 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/ea1d8cd9814852428d25d3ea113683a6c9686afb..7d5bc35197be75e10000f14ea9eb3954ca2b0aab https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers/+log/f864bc6dfe6229a399566e979c16795386d0f308..9dff1f571ce25b92639854b89b28539602b6b97b https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader/+log/4cd2a86fa6a88abfcf44a7630212fc375fbe0fe5..2534c1e2327990e55f51b8a1f8328085e8e3ff31 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools/+log/df2ac1bb61f09a80db979d7108adf07b6fe55913..a2224abf350f61211462a33e5b540201fa17de0d https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/c31e717dcd817279e9e90516612f9dbfc84b0e51..b538fb5b08513aa78346cd414ad5e576a2a3e920 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/fdbdd359fb2bbb50352e84b259171813957d1ee3..b61aa3f59711c9a45e6bac13f70c61dc9e4650c8 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-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 Tbr: syoussefi@google.com Change-Id: Ieecaf46ecf017defffaca78bb003b0b7dcf094f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6058269 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Neil Zhang 01dee1cb 2024-10-14T15:04:28 Add implementation for GL_EXT_texture_storage_compression Bug: angleproject:352364583 Change-Id: I3dab4c68d5d0206d681e165e991217bd3de8eeb6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011055 Auto-Submit: Neil Zhang <Neil.Zhang@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 8b7bb82c 2024-11-28T13:20:52 Vulkan: Disable dynamic vertex input state on Qualcomm Observed bugs on S23. Bug: angleproject:381384988 Change-Id: I9a8cd754de23f31c4bd1078f0c52f66111a8fc45 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055889 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Charlie Lao 6c1021ec 2024-11-22T16:48:45 Vulkan: Switch DescriptorSetLayout to use AtomicSharedPtr SharedPtr has better semantics and safer to use. This CL removes direct exposure of RefCounted object and also allows me to delete BindingPointer class in later CL. Bug: angleproject:372268711 Change-Id: I08a0dff3efcf794be843a4a548b9f2609bb9a5e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6044328 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Robic Sun 9eab301c 2024-11-12T17:24:57 Enable GL_KHR_texture_compression_astc_sliced_3d ARM supports GL_KHR_texture_compression_astc_sliced_3d, so this extension can be enabled in Angle. Bug: angleproject:378507964 Change-Id: I545ac57b4d6065a9ef99a7884555da47a1d50261 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6014004 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d2e543c7 2024-11-18T14:21:28 Vulkan: Consider PowerVR hardware coherent for framebuffer fetch Bug: angleproject:377923479 Change-Id: I5a51b0d82e55c6153dfcaa240aa08456560f2c7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6032832 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 15492c9b 2024-11-15T15:59:54 Vulkan: A few workarounds for older ARM drivers Bug: angleproject:379269831 Change-Id: I16d2eb6074bf595f19561316b2c6b7854119b4b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6022180 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Cody Northrop 9dd69aae 2024-11-15T15:05:09 Vulkan: Disable dynamic rendering on PowerVR Use of dynamic rendering is proving to be too slow on PowerVR devices, so we need to disable it. We can re-enable in the future if ANGLE or driver fixes improve it. Test: restricted_trace_perf Bug: b/372273294 Change-Id: I3b643dbc5ddcb8217275f624cfc5f5128f6b061c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6026793 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Neil Zhang 29855942 2024-11-06T16:01:28 Vulkan: Add stubs for expose VK_EXT_image_compression_control Bug: angleproject:352364583 Change-Id: Ia8292eee6620db6d0c4b0c6162de95583c1e416d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5998011 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi ba81145f 2024-11-08T15:45:44 Vulkan: Emulate coherent framebuffer fetch everywhere Many apps expect coherent framebuffer fetch to be available, and multiple downstream emulators end up forcing coherent framebuffer fetch enabled despite the hardware not being coherent. This change attempts to do a best-effort emulation of coherent framebuffer fetch by automatically inserting barriers before framebuffer fetch draws. While this doesn't correctly handle self-overlapping geometry, it works well enough in practice for the applications. As a result, framebuffer fetch is practically enabled everywhere after this change. Bug: angleproject:377923479 Change-Id: I3900a1de0f4db755b7e70871f57df3ea112073f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004336 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 7fea539c 2024-10-23T11:40:51 Vulkan: Remove extra non-conformant flag checks It may be possible to remove the flag check and simply rely on the checks performed in CanSupportGLES32() to determine support for ES 3.2. The non-conformant flag can remain utilized for certain features until the relevant issues are resolved and this flag is no longer needed. * Removed the checks from getMaxConformantESVersion(). * Removed the flag check in Renderer::getMaxSupportedESVersion(). * Added exception to the blend extension when using the non-conformant flag for Win/Intel. * Skipped the related tests on this platform that now fail. * Added a new feature flag to force-enable ES 3.2 on certain platforms for testing. * exposeES32ForTesting * If the bots are updated to support ES 3.2, it can be removed from using this flag. * Skipped some VVL errors when the flag is enabled. * Skipped end2end ES 3.2 tests on SwS. * Skipped some dEQP tests on P4 and SwS that would use ES 3.2 features that are not available on those platforms. Bug: b/374841339 Bug: b/376899587 Change-Id: Ifd405457ab8bf2076eb8fb5c92c5316f4d520595 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5958147 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 1a3fadbf 2024-11-01T13:19:43 Vulkan: Enable imagelessFB for recent QualComm drivers Qualcomm recent drivers has the fix for imageless framebuffer bug. Re-enable supportsImagelessFramebuffer for drivers 512.802.0 or newer. Bug: b/369693310 Change-Id: I33a69b8abfefed572880636ff7af2c788cee5688 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5984959 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi 66701c98 2024-10-31T11:37:44 Vulkan: Remove extra non-conformant flag check In Vulkan, getMaxConformantESVersion() calls another function which already checks which ES version to use (getMaxSupportedESVersion()). It also uses the non-conformance flag to check if it should bypass the ES 3.2 check if the flag is enabled. However, the former uses the flag to cap the version to ES 3.1 if the flag is disabled. This check seems unnecessary, and can cap the version for a device that does have the ability to use ES 3.2. * Removed the non-conformant flag check from getMaxConformant*(). Bug: b/374841339 Change-Id: I377e6ba2fe174aae7e2e1b19407b2acd89749157 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979643 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d4a9fa51 2024-10-31T09:37:28 Vulkan: Re-enable dynamic rendering on newer ARM drivers Bug: b/356051947 Change-Id: I03fbed2dbdb8f454ee1c429db4669d13e719b9bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5980610 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 08c1724f 2024-10-11T14:29:00 Vulkan: Support GL_ARM_shader_framebuffer_fetch_depth_stencil Bug: angleproject:352364582 Change-Id: I63fd78314fa7ebccbf366c252e309a9c0f09c8c1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5938150 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 65fcf9c4 2024-10-26T10:53:18 Vulkan: Remove redundant dependent feature checks Since [1], when a feature is overriden, the dependent features automatically take the override into account. Tests no longer need to account for dependent features, neither does the logic in the code. [1]:https://chromium-review.googlesource.com/c/angle/angle/+/4749524 Bug: angleproject:42266725 Change-Id: I5440aba4a89cffbe710e26ad7de4cfee783e9bdf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5967414 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi f2315dbe 2024-10-23T13:34:39 Reland: Vulkan: Update checks for promoted extensions This relands commit c2219ef9ec03277b6f8ad18d6d1ade41ddf88ba6. Features that depend on promoted extensions are now enabled when the extensions are present, OR the version of Vulkan that they were promoted to is present. This commit checks for Vulkan 1.1 because that is the version currently supported. In the reland, the promoted extensions are not added to the list of extensions to be enabled, because the underlying driver may not have exposed them as extensions at all. Bug: angleproject:374483183 Change-Id: I98e004d3fb4ed673984859ab63d40702f877b535 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5955635 Reviewed-by: Jason Macnak <natsu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop a05fc2bc 2024-10-23T13:36:54 Revert "Vulkan: Update checks for promoted extensions" This reverts commit 9c1f96b8606a564b565d37208268b9b06efff03e. Reason for revert: Still fails on Cuttlefish (which uses SwiftShader) Bug: angleproject:374975259 Original change's description: > Vulkan: Update checks for promoted extensions > > Features that depend on promoted extensions are now enabled when > the extensions are present, OR the version of Vulkan that they were > promoted to is present. This commit checks for Vulkan 1.1 because > that is the version currently supported. > > Bug: angleproject:374483183 > Change-Id: I17d7956ac8a604f531e020e77c6f532e616b9dd5 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5954316 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:374483183 Change-Id: I1bef03f99b044bca91950a62e4015630a7c91530 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5956483 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Cody Northrop <cnorthrop@google.com>
Charlie Lao 9a4c7495 2024-10-15T13:05:28 Vulkan: Add feature flag to enable descriptorSet cache So that we can disable it to compare the performance difference. Bug: angleproject:372268711 Change-Id: I02da254e5d58815741080634a2dd005617aa7432 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5936135 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Andrew Sumsion 9c1f96b8 2024-10-22T12:58:27 Vulkan: Update checks for promoted extensions Features that depend on promoted extensions are now enabled when the extensions are present, OR the version of Vulkan that they were promoted to is present. This commit checks for Vulkan 1.1 because that is the version currently supported. Bug: angleproject:374483183 Change-Id: I17d7956ac8a604f531e020e77c6f532e616b9dd5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5954316 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 47c66901 2024-10-21T12:47:22 Vulkan: Set gl_Layer to 0 if the framebuffer is not layered Bug: angleproject:372390039 Change-Id: I29067c9488e06f6dd2e90f207fecb843267fb77c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5949263 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop e869b426 2024-10-22T10:04:06 Revert "Removed checks for promoted extensions" This reverts commit c2219ef9ec03277b6f8ad18d6d1ade41ddf88ba6. Reason for revert: Possible cause of boot failures on cuttlefish Bug: angleproject:374975259 Original change's description: > Removed checks for promoted extensions > > Removed checks for Vulkan extensions that have been promoted into Vulkan > 1.1, which is already the minimum required version for ANGLE. The > dependent features now work when the extensions are missing because the > extensions are no longer necessary. > > Bug: angleproject:374483183 > Change-Id: Iad92b33a8e724eaa8f4bfcbe406f5b6b8536d6d8 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5944678 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Charlie Lao <cclao@google.com> > Commit-Queue: Charlie Lao <cclao@google.com> Bug: angleproject:374483183 Change-Id: I92eb6681c6d1b8f7e2d0832bb4e1cbf4597bd1c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5952279 Commit-Queue: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Andrew Sumsion c2219ef9 2024-10-20T04:49:44 Removed checks for promoted extensions Removed checks for Vulkan extensions that have been promoted into Vulkan 1.1, which is already the minimum required version for ANGLE. The dependent features now work when the extensions are missing because the extensions are no longer necessary. Bug: angleproject:374483183 Change-Id: Iad92b33a8e724eaa8f4bfcbe406f5b6b8536d6d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5944678 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 323187d9 2024-10-11T13:48:51 Vulkan: Fix color attachment limit with framebuffer fetch ANGLE incorreclty assumed that the input descriptor limit is at least as big as the color attachment limit. This is not true on Intel/windows where 8 color attachments are available but only 7 input descriptors. With this change, the color attachment limit is dropped to 7 in such a case so that framebuffer fetch can continue to be supported. Bug: angleproject:372873263 Change-Id: If836563b47399a23b293b74815f6bccb21aaf47c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5919759 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Rafay Khurram 3fa74223 2024-03-26T17:13:52 Vulkan: Add check for VK_EXT_external_memory_host extension Tests-Passing: GN Build Bug: angleproject:42266936 Change-Id: Ie30f1cee939bc8a4b98d37f718e4526156916f05 Signed-off-by: Rafay Khurram <r.khurram@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5796524 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7beb008d 2024-10-16T10:04:43 Vulkan: Disable dynamic rendering on Nvidia Bug: angleproject:372883691 Change-Id: I71b45ea67a725a5a55d69b17329866000a1f37e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5938740 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi a1584f49 2024-10-11T21:17:32 Vulkan: Qualify framebuffer fetch with "Color" In preparation for depth/stencil framebuffer fetch, many framebuffer fetch symbols are affixed with Color to indicate that they pertain to color framebuffer fetch logic. Bug: angleproject:352364582 Change-Id: I86000ada5e6ef47387dec0b6a3fca589d816cdc2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5926593 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 1608d0be 2024-10-10T16:53:15 Vulkan: Isolate framebuffer fetch no-RP-break optim from DR Prior to [1], changes to framebuffer fetch usage by shaders caused a render pass break. This was due to a limitation of render pass compatibility rules. It also caused other headache, such as needing to clear the render pass cache, recreating pipelines etc. [1]:https://chromium-review.googlesource.com/c/angle/angle/+/3697308 In [1] an important optimization was implemented for tiling GPUs where ANGLE permanently switched to framebuffer fetch mode on first encountering framebuffer fetch use. From that point on, ANGLE would always make every render pass framebuffer fetch compatible. In reality, the render pass break was unnecessary, which became apparent with dynamic rendering (for example that whether the render pass includes input attachments has no bearing on a pipeline that doesn't use input attachments at all). In [2], dynamic rendering kept the render pass break + permanent switch behavior for simplicity. [2]:https://chromium-review.googlesource.com/c/angle/angle/+/5637155 This change untangles the optimization done for legacy render passes from dynamic rendering, allowing dynamic rendering to start every render pass without framebuffer fetch and enable it later if a framebuffer fetch program is used. This is in preparation for supporting depth/stencil framebuffer fetch, where a perma-switch is troublesome (for example in combination with read-only depth/stencil feedback loops). Bug: angleproject:352364582 Change-Id: I31221cf22a28d58b9b2bf188e9c0b786cd0fe3d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5923120 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop ba292370 2024-10-08T19:58:29 Vulkan: Disable imageless framebuffers on Qualcomm and PowerVR * Qualcomm with imageless framebuffers, vkCreateFramebuffer loops forever * PowerVR with imageless framebuffer spends enormous amounts of time in framebuffer destruction and creation. ANGLE doesn't cache imageless framebuffers, instead adding them to garbage collection, expecting them to be lightweight. Tests: dead_cells, chrono_trigger, batman_telltale Bug: b/369693310, b/372273294 Change-Id: I43714154661c4415ec10511ed096da7c23a9a8ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5918740 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Hao Li 2af09236 2024-09-24T13:55:04 Vulkan: Enable monolithic pipelines on Intel Windows The hang issue is fixed and not reproduced on Intel Windows drivers 101.5379 and later. Bug: angleproject:369043994 Change-Id: Ic395ca47e65fa6467baf09e54b7e24c0d7d71ad3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5885989 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Igor Nazarov f5f419ec 2024-09-04T20:22:20 Vulkan: Add verify-restore in CompressAndStorePipelineCacheVk() Change fixes following problem: When blob cache is full, but still allows to store the current pipeline cache data, storing next chunk may trigger eviction of already stored items. Depending on the blob cache implementation, eviction process may choose to evict chunks from the current pipeline cache data. As the result: blob cache will not contain all chunks. Solution: The `StorePipelineCacheVkChunks()` function now check what chunks exist in the blob cache (if `lastNumStoredChunks` parameter is positive) and restores any missing chunks if their number is less than `lastNumStoredChunks`. First call to `StorePipelineCacheVkChunks()` passes zero (0) to the `lastNumStoredChunks`, which will skip the check and store all chunks unconditionally. If "verifyPipelineCacheInBlobCache" feature is enabled, the `StorePipelineCacheVkChunks()` will be called again to restore possibly missing chunks. If "hasBlobCacheThatEvictsOldItemsFirst" feature is disabled, the function will be called repeatedly in a loop (opposed to only once), until all chunks are present or until number of missing chunk stops decreasing. Bug: angleproject:4722 Change-Id: Ibbbdb2f878d6aafd7ab5586fc654e2b9be900a9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5837042 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Shahbaz Youssefi a6ec0bb9 2024-09-23T10:50:28 Vulkan: Fix recursion in ensurePipelineCacheInitialized() If the initial data was loaded from the blob cache, this function called getPipelineCacheSize() to initialize mPipelineCacheSizeAtLastSync. However, that function itself lead back to ensurePipelineCacheInitialized(), causing a recursion. This was previously undiscovered as the conditions that would lead to the global pipeline cache needing a lock were yet to materialize in the wild. Since the preferMonolithicPipelinesOverLibraries feature was made more widely enabled in [1] and consequently a race condition was fixed in [2], this recursion was discovered as a deadlock due to the mutex use. While this change avoids the recursion, it simultaneously optimizes the syncPipelineCacheVk() function by making sure the lock is taken once intstead of twice when retrieving the pipeline cache size and subsequently data. This also avoids a previously encountered race condition where the pipeline cache was modified in between the two queries and VK_INCOMPLETE was returned from the second call. [1]: https://chromium-review.googlesource.com/c/angle/angle/+/5870466 [2]: https://chromium-review.googlesource.com/c/angle/angle/+/5872715 Bug: angleproject:42265839 Change-Id: Ic682b3d20ec4411ba180b3bafb807fdde8166d5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5883153 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Steven Noonan <steven@uplinklabs.net> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 1e74ce33 2024-09-17T14:44:36 Reland "Vulkan: Prefer monolithic pipelines everywhere" This reverts commit 1503a10737e28ac9d1bb98c2f3e369880c63ca43. Reason for revert: Fixed threading + undo for buggy drivers Original change's description: > Revert "Vulkan: Prefer monolithic pipelines everywhere" > > This reverts commit e9ab557c744c29088174b6c7bc93692fe7f32dbd. > > Reason for revert: kills Windows Intel UHD 770 machines > http://anglebug.com/42265839#comment34 > > Original change's description: > > Vulkan: Prefer monolithic pipelines everywhere > > > > Apparently, every vendor prefers this, and > > graphicsPipelineLibraryFastLinking has no bearing on the driver's > > preference. > > > > Bug: angleproject:42265839 > > Change-Id: Ied8d82e0a9e08fe5efe3f625e2612764f67f9768 > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5861024 > > Commit-Queue: Yuxin Hu <yuxinhu@google.com> > > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> > > Bug: angleproject:42265839 > Change-Id: I95fa61b2242684b63adc2841b777bde923e34d41 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5868055 > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bug: angleproject:42265839 Change-Id: I007a3efc69e0edc040b0feddcd84e191f68ded9d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5870466 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 167b9e8d 2024-09-18T21:51:38 Vulkan: Fix pipeline cache store vs monolithic pipeline race The thread that creates monolithic pipelines needs to hold the pipeline cache lock, as well as the thread that stores the pipeline cache contents to the blob cache. Bug: angleproject:42265839 Change-Id: I17cf9d2bb3f27d531f368003cb4ee00007a464fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5872715 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov cb9d52f8 2024-09-11T15:26:49 Vulkan: Add Pipeline blob cache per chunk CRC check Each chunk now have it's own CRC value, that is calculated starting from beginning of the data up to the end of the chunk. This way last chunk will have CRC of the entire data, avoiding calculating it separately. The `GenerateCRC32()` was splint into `InitCRC32()` and `UpdateCRC32()` function, which supports calculating running CRC32. Calculating CRC this way has some performance hit, when using many small chunks. Increasing chunk size to at least 1 MB almost negates any overhead from running `UpdateCRC32()` multiple times. On S921B with locked frequencies, calculating CRC for 89 MB of data using single call took 7.13 ms and 13.34 ms, when using multiple calls. However even this difference is negligible, because compressing 291 MB of data to 89 MB took 9.22 seconds. Bug: angleproject:4722 Change-Id: Ic6f3245b3aa7319ac13502d2c43e1a084a9bc8b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5854709 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Igor Nazarov 8469debb 2024-09-04T20:04:10 Vulkan: Add dual slots in CompressAndStorePipelineCacheVk() Change fixes following problem: Currently, each call to `CompressAndStorePipelineCacheVk()` stores chunks in order, starting from 0. This overrides previously stored chunks. In case of app termination (kill) in the middle of this process, the entire cache data will be corrupted, since it will partially contain chunks from the new and old caches. Solution: In order to fix this problem, this change introduces `slotIndex` into the `chunkCacheHash` calculation. Slot index is managed by `vk::Renderer::getNextPipelineCacheBlobCacheSlotIndex()` method, which will alternate between 0 and 1 when "useDualPipelineBlobCacheSlots" feature is enabled, and always 0 otherwise. Additionally, chunk storing order is reversed: last chunk is stored first and the first (0 chunk) - last. This is done because 0 chunk is the first that is loaded in `GetAndDecompressPipelineCacheVk()` and used as indication that there is data in the cache. Writing it last, ensures that other chunks will be also available. When "useDualPipelineBlobCacheSlots" is enabled, each call to `CompressAndStorePipelineCacheVk()` will use slot index opposed to the slot that is stored in the cache, avoiding damaging existing data. After writing all chunks for a brief moment there may be 2 instances of the data. However, data for the previous slot will be immediately erased (by writing 1/0-sized blobs) starting from the 0 chunk. To control if erasing of old pipeline cache data will be erased by using 0-sized or 1-sized blobs blobs, added `useEmptyBlobsToEraseOldPipelineCacheFromBlobCache` feature. The `GetAndDecompressPipelineCacheVk()` function will iterate over each available slot index checking only 0 chunk until data is found. In case of the OpenCL API, features will always have following values: - "useDualPipelineBlobCacheSlots" -> false - "useEmptyBlobsToEraseOldPipelineCacheFromBlobCache" -> true Note: this solution requires 2X pipeline cache size space in the blob cache to work as expected, otherwise it will exacerbate other problem: When blob cache is full, but still allows to store the current pipeline cache data, storing next chunk may trigger eviction of already stored items. Depending on the blob cache implementation, eviction process may choose to evict chunks from the current pipeline cache data. As the result: blob cache will not contain all chunks. The above problem will be addressed in the follow up CL. Bug: angleproject:4722 Change-Id: I2920bc3d89263280cdfe0466446fca26415e2b25 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756576 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Yuxin Hu 44b6203c 2024-09-02T16:23:44 Add new functions defined in VK_KHR_Synchronization2 extension Add vkCmdPipelineBarrier2 and vkCmdWriteTimeStamp2. The other functions introduced in VK_KHR_Synchronization2 are not being used at the moment. Bug: b/356985874 Change-Id: I4f8b432aee9b11debcb8abe8b3089f88ad7a069b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5832709 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 7bdd5f77 2024-09-18T12:51:25 Vulkan: Remove syncval suppressions for fixed bugs Bug: angleproject:42265220 Change-Id: I282f77330867682eee121f67d5357658bf375844 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5873529 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Igor Nazarov dfa516ce 2024-09-12T15:25:08 Vulkan: Fix chunkIndex is not 16 bits when computing key Replace `uint8_t` with `size_t` in `ComputePipelineCacheVkChunkKey()`. This fixes the bug and also makes type consistent with the rest of the code. Also `CacheDataHeader::setData()` made consistent with `getData()`. Bug: b/246683126 Change-Id: Ib1f8b680622c3d4f912d8a21ed8b740c3d17483e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5854707 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 6e0ae899 2024-09-17T12:12:03 Vulkan: Suppress more rasterizer-discard VUs due to VVL bugs Bug: angleproject:42266678 Change-Id: I7321c28362d1a2be529b9d173c8429c757c26fd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5869444 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao dbdc9551 2024-09-16T10:19:47 Vulkan: Let asyncCommandBufferReset control garbage cleanup So that people can toggle the flag to compare perf/power difference with async thread doing garbage clean up AND command buffer reset. This also renames feature flag asyncCommandBufferReset to asyncCommandBufferResetAndGarbageCleanup to reflect the implementation. Bug: b/255411748 Change-Id: Id459e6f4dc81ec76b6c0c2dba0db46041ea6ae8a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5867389 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi f8031fbe 2024-09-17T11:35:58 Vulkan: Unsuppress fixed VU errors Bug: chromium:359904720 Bug: angleproject:362545033 Change-Id: I2721344843ffbddd6c56261359360473ad896a39 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5870469 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Mohan Maiya f2eb8781 2024-09-14T16:16:53 Vulkan: Selectively enable emulateR32fImageAtomicExchange Only emulate R32F imageAtomicExchange if shaderImageFloat32Atomics feature is not supported Bug: angleproject:42264071 Change-Id: I305ab88bf3ac918eff5d8c399f0ed02ec8c60c2d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860814 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 1503a107 2024-09-17T10:46:29 Revert "Vulkan: Prefer monolithic pipelines everywhere" This reverts commit e9ab557c744c29088174b6c7bc93692fe7f32dbd. Reason for revert: kills Windows Intel UHD 770 machines http://anglebug.com/42265839#comment34 Original change's description: > Vulkan: Prefer monolithic pipelines everywhere > > Apparently, every vendor prefers this, and > graphicsPipelineLibraryFastLinking has no bearing on the driver's > preference. > > Bug: angleproject:42265839 > Change-Id: Ied8d82e0a9e08fe5efe3f625e2612764f67f9768 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5861024 > Commit-Queue: Yuxin Hu <yuxinhu@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:42265839 Change-Id: I95fa61b2242684b63adc2841b777bde923e34d41 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5868055 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi e9ab557c 2024-09-14T22:11:18 Vulkan: Prefer monolithic pipelines everywhere Apparently, every vendor prefers this, and graphicsPipelineLibraryFastLinking has no bearing on the driver's preference. Bug: angleproject:42265839 Change-Id: Ied8d82e0a9e08fe5efe3f625e2612764f67f9768 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5861024 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 6ee07959 2024-09-13T17:12:26 Remove the suppressed VVL error https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/8523 is fixed. Remove the VVL error from the suppressed list. Bug: b/365580001 Change-Id: Ib7a3819e740393306995df1eabec14e1b9878d7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860811 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuly Novikov 7dcfc32b 2024-09-12T16:25:28 Remove renamed VUID VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870 was renamed to VUID-VkVertexInputBindingDivisorDescriptionKHR-divisor-01870 in https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/6adb436617e6c66fbc8b2a24996659f5c5bbb63f Bug: angleproject:42266877, angleproject:42266639 Change-Id: I382625d33ef6728835d8e9db307d32b7910ac9b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5855187 Commit-Queue: Solti Ho <solti@google.com> Reviewed-by: Solti Ho <solti@google.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
angle-autoroll 958b657f 2024-09-10T20:34:57 Manual roll vulkan-deps from 725499142cb6 to 3b92cef97feb (32 revisions) Manual roll requested by yuxinhu@google.com Manual roll changes: suppress VUID-vkCmdDrawIndexed-Input-08734 until VVL issue angleproject:365580001 is addressed. https://chromium.googlesource.com/vulkan-deps.git/+log/725499142cb6..3b92cef97feb Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/a496a34b439022750d41d2ba04fbbe416ef81c9a..12a17b7ce41436427e358608183100b1103274da https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/efb6b4099ddb8fa60f62956dee592c4b94ec6a49..2a9b6f951c7d6b04b6c21fe1bf3f475b68b84801 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/e1782d6675b88225225e331a6318554d473c54db..d160e170d74ff45cb2a88dfb365bdfd896016f7c https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader/+log/c758bac8bf1580b5018adafd3a2ec709237b0134..1108bba6c97174d172d45470a7470a3d6a564647 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/fbb4db92c6b2ac09003b2b8e5ceb978f4f2dda71..ea5774a13e3017b6d5d79af6fba9f0d72ca5c61a https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/af7b0a35d009b5ad6e0b280a5b81388608ebfe39..99de3c17fbc2db6b6da0347916c9e01a383c2758 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-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: angleproject:365580001 Tbr: yuxinhu@google.com Change-Id: Iac9c8b6310d3ebb955dd09fd26b71d373e13b479 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5849280 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 6afcbd3e 2024-09-10T10:31:42 Vulkan: Disable dynamic rendering on ARM Due to driver bugs. Bug: b/356051947 Change-Id: Ic345496010b051ad054811a8c34bb3f816bbf258 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5851632 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 941b3df3 2024-08-21T17:23:16 Vulkan: Add new threshold for CPU buffer subdata Currently, with preferCPUForBufferSubData enabled, when the GPU is busy, we use the CPU to copy subdata, which includes duplicating the buffer. If the buffer is large, this can cause performance regression. To avoid this, we should avoid using the CPU in cases that can lead to such regressions. * Enabled preferCPUForBufferSubData for all ARM devices. * This feature is only used in the following cases: * If the buffer is smaller than than 32K; or * If the copy size is greater than 1/8 of the total buffer size. * Significant performance improvement observed in several traces. Bug: b/360118138 Change-Id: Ibc8e3de9b4e081c69457c85facba893283c8fb38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5824347 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 621bba6c 2024-09-04T09:58:09 Vulkan: Fix device entry points loaded as instance Bug: angleproject:359420106 Change-Id: I970ac7b924013a3c8ea5dd73f90bbe1649969753 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5836783 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 8b6b1113 2024-08-30T16:06:17 Vulkan: Fallback to host unCached if no cached memory available Android studio may not have any host cached memory. This CL will make it use unCached memory in this case. User of this memory will still treat it like cached and try to flush/invalidate cache, but these flush/invalidate call will early out, so they should still work. Performance wont be good, but that is the best we can do to make it work instead of crash. Bug: b/363347052 Change-Id: I68ac917585f6f5672a75085c397858bdc28687e9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5828132 Reviewed-by: Lars Harrison <slumpwuffle@google.com> Auto-Submit: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 20e0b83a 2024-08-30T11:05:09 Vulkan: Expand preferSubmitAtFBOBoundary from ARM to all tiler GPUs On S24, enable preferSubmitAtFBOBoundary flag boost black_clover_m frame time significantly. The app uses occlusion query which was blocking the CPU to encode next frame until one of the previous frame's render pass is completed. Enable preferSubmitAtFBOBoundary makes the render pass being submitted early which reduces the query wait time, which in turn boost GPU utilization and bumps GPU clock. This reduces frame time of black_clover_m from 23.8ms to 6.4ms, even much better than native's 16ms. It could impact power usage as well, a little bit harder to tell without data that it will be better or worse. For now, I am enabling this for all tiler based GPUs and we can re-evaluate if any problems comes up. This would potentially also benefit other desktop GPU as well, but I am not touching these until we have data showing the benefit before enabling it. Bug: b/362555815 Change-Id: Ie7a5231350389c49091bb2771c542b4439c9c227 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5829781 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 8d6f6c23 2024-08-29T14:56:31 Vulkan: Unsuppress fixed VVL errors Bug: angleproject:361600662 Change-Id: Ic4585f4b38261f69700a9703bdb10b60e18f638a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5826762 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b43f8889 2024-08-29T12:34:46 Vulkan: Fix varyings reserved for xfb At some point in the past, the ANGLEXfbPosition varying was generated unconditionally when the xfb extension is available. The logic that reserved one varying for this was not updated and fails to account for it in recent drivers. Bug: angleproject:362545033 Change-Id: I65fb58cd912b96b2774a7dfbffa4aa656f694e81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5826761 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 79729f7c 2024-08-27T17:13:57 Reapply "Vulkan: Expose float control properties as angle features" This reverts commit 5a8eab96c6b7b99b8568feb902b8b85e2df7e19a. This relands the commit 027cbe1a071f41a09d596c4baa243a0abc3d1a86 with the below changes - add back needed suppressions that were removed erroneously ``` // https://anglebug.com/361600662 "VUID-RuntimeSpirv-OpEntryPoint-08743", "VUID-RuntimeSpirv-OpEntryPoint-07754", "VUID-RuntimeSpirv-maintenance4-06817", ``` Bug: angleproject:360031000 Change-Id: I74ed80b459466bdd8ae638ff875677b089aaa360 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5818733 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brian Sheedy c094d4bc 2024-08-26T18:00:50 Enable tests on linux-exp-nvidia Enables tests on the new linux-exp-nvidia builder. Bug: chromium:357573052, chromium:362545033, chromium:362486580 Bug: chromium:362728695 Change-Id: Ib2f1c2edb139be1b3b2225dd9a9ec88df2bf1a84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5814931 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Yuly Novikov 5a8eab96 2024-08-27T10:07:26 Revert "Vulkan: Expose float control properties as angle features" This reverts commit 027cbe1a071f41a09d596c4baa243a0abc3d1a86. Reason for revert: removes needed suppressions, breaking bots: https://ci.chromium.org/ui/p/angle/builders/ci/win-exp-test/569/overview https://ci.chromium.org/ui/p/angle/builders/ci/linux-exp-test/810/overview https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-s22-test/1060/overview Original change's description: > Vulkan: Expose float control properties as angle features > > The different fp configuration that a vulkan backend supports are > exposed through `VkPhysicalDeviceFloatControlsProperties`. Expose these > as angle features that api's implementations can query. > > The autogen files are changes as reported by running `python3 > scripts/run_code_generation.py` script. > > Bug: angleproject:360031000 > Change-Id: I038cbf2c9e2b10916697994782ef73b35a1caf12 > Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5798053 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: angleproject:360031000 Change-Id: I88c0a083725320b5e1a8302a50f67d41cbf5c089 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5816829 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Gowtham Tammana 027cbe1a 2024-08-13T17:27:27 Vulkan: Expose float control properties as angle features The different fp configuration that a vulkan backend supports are exposed through `VkPhysicalDeviceFloatControlsProperties`. Expose these as angle features that api's implementations can query. The autogen files are changes as reported by running `python3 scripts/run_code_generation.py` script. Bug: angleproject:360031000 Change-Id: I038cbf2c9e2b10916697994782ef73b35a1caf12 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5798053 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yuly Novikov 95c30276 2024-08-26T18:14:30 Don't use VK_GOOGLE_surfaceless_query on Samsung S24 Xclipse Apply S22 workaround on S24 as well, tentative fix for bad traces. Bug: b/362253922 Change-Id: I5a04741d7465139f86de5baadbf774eed172b4e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5812323 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Gowtham Tammana 3f1c47bf 2024-08-13T15:06:40 Vulkan: Add VK_KHR_variable_pointers ext if available Add VK_KHR_variable_pointers exetensions to enabled extension if it is supported. This is needed when SPIR-V 1.4 is supported. Bug: angleproject:360031000 Change-Id: Ia93604ae308c9f304acb3bc39457811401a0ca7b Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789897 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 2e35835b 2024-08-23T11:28:54 Suppress new VUIDs VUID-RuntimeSpirv-OpEntryPoint-08743 VUID-RuntimeSpirv-OpEntryPoint-07754 VUID-RuntimeSpirv-maintenance4-06817 Started reporting after VVL roll https://chromium-review.googlesource.com/c/angle/angle/+/5807076 Bug: angleproject:361600662 Change-Id: Ibdf30bd2506366460009f18a4e1f63559d23eb97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5803266 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Gowtham Tammana 579a5855 2024-08-13T11:39:54 Vulkan: Add query for 64bit fp support feature check Add a feature check for shaderFloat64 support. If present expose the corresponding feature check. The following files are updated by running the autogen script - `run_auto_code_generation.py` - include/platform/autogen/FeaturesVk_autogen.h - util/autogen/angle_features_autogen.cpp - util/autogen/angle_features_autogen.h Bug: angleproject:360031000 Change-Id: If2a11190729550ad5b84714e0a3aa3b81956c66a signed-off-by: gowtham tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789896 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana e90cd0c4 2024-08-12T17:07:47 Vulkan: Add check for int8 extension support Vulkan backend currently has a check for float16 part in VK_KHR_shader_float16_int8 extension. Add the int8 support as well. The changes in below files are generated through `scripts/run_code_generation.py` script - include/platform/autogen/FeaturesVk_autogen.h - util/autogen/angle_features_autogen.cpp - util/autogen/angle_features_autogen.h Bug: angleproject:360031000 Change-Id: I8811779299e3d24b4536d1871e1eadcbb87432c2 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5792021 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 319907d2 2024-04-05T16:05:33 Vulkan: Propagate the support of shaderInt16/64 feature Progate the support of shaderInt16/64 features in to enabled feature list. Bug: angleproject:360031000 Change-Id: I38915a764fb2f1dd31348c01bc2fcfa4913ebdec Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5792019 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll e6b46eae 2024-08-15T10:01:05 Roll vulkan-deps from f084a55f96da to 91058f2297c9 (4 revisions) Suppress new VUIDs: VUID-vkCmdDraw-Input-07939 VUID-vkCmdDrawIndexed-Input-07939 VUID-vkCmdDrawIndexedIndirect-Input-07939 VUID-vkCmdDrawIndirect-Input-07939 https://chromium.googlesource.com/vulkan-deps.git/+log/f084a55f96da..91058f2297c9 Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/3a08cd8de1f88d114c18670366f29226db453a9e..0dc6711e5a178e4d5643437af688c6b48f829f5c https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/f013f08e4455bcc1f0eed8e3dd5e2009682656d9..1b75a4ae0b4289014b4c369301dc925c366f78a6 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/8d902c7f67edd9e54b0fa5f7d2c34f9abfeacba8..4eb3585f32ec194efe2d9cd88a2b2943ff41f922 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,ynovikov@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: chromium:359904720 Change-Id: Idf82bf9a210b953785fc2387e5c64ef157ec36e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5791052 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Gowtham Tammana 2003e062 2024-08-09T17:52:38 Vulkan: Set queue family index for oneoff command buffer Use the queue family index that the Renderer has chosen for creation of oneoff command buffers. Bug: angleproject:359623670 Change-Id: I0a36edf79a751133d477d433c9cfd8dbddaad221 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5785864 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 2b15c795 2024-08-09T17:13:17 Make explicit that GenerateCrc() return correct CRC32 hash According to the documentation of `crc32_z()`, to get required initial value need to call `crc32_z()` with nullptr "buf" parameter. Using this initial value will produce correct CRC32 hash. On practice, `crc32_z()` with nullptr "buf" produces "0", so the current code actually calculates correct CRC32 hash. However, this is still against the documentation, and in different versions of zlib or architectures may produce incorrect results. Technically, `GenerateCrc()` does not require to produce correct CRC32 hash - the main purpose is to calculate some hash value. But because updating this function to produce correct CRC32 hash is very easy, this change updates the implementation and renames it to `GenerateCRC32()` to explicitly state that it generates correct CRC32 hash. After this, function may be used in scenarios where CRC32 hash is really required. Bug: angleproject:4722 Change-Id: Ib159f2d3ad1a8388f505abb09a6d0b19a51b7eec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5777145 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov bacd3a7d 2024-08-07T19:01:18 Vulkan: Fix CompressAndStorePipelineCacheVk() crashing `ContextVk` may be destroyed while `CompressAndStorePipelineCacheTask()` is still running. Context is only used to output a performance warning. So in case of such performance warning, `gl::State::mDebug` object may be already destroyed, causing undefined behavior. Change removes `ContextVk` from the function and uses `WARN()` instead. The `CompressAndStorePipelineCacheTask` stores pointer to the `vk::Renderer` instead of `ContextVk`. Bug: angleproject:4722 Change-Id: Iba9cad78ce5c6ea29cc2143f7bd2340cf0484855 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5768881 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov bc0c6c5b 2024-08-07T09:48:25 VVL: sync_queue_submit -> syncval_submit_time_validation Avoids this warning printed to stdout: Validation Setting Warning - sync_queue_submit was set, this is deprecated, please use syncval_submit_time_validation Bug: b/316013423 Change-Id: I9a8be1a49be72e8ec2fed74ace36989d8e37163a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5769522 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 7a81e79d 2024-08-02T19:39:57 Vulkan: Fix mPipelineCache not populated from blob cache Fixes regression introduced in change: Vulkan: Remove support for pipeline cache control https://chromium-review.googlesource.com/c/angle/angle/+/5375102 Returns logic implemented in: Vulkan: pipeline cache not populated as blob cache is not set https://chromium-review.googlesource.com/c/angle/angle/+/1683807 In the current state, call to `ensurePipelineCacheInitialized()` from `getPipelineCache()` is essentially a dead code, since `mPipelineCacheInitialized` will always be `true` after call from `createDeviceAndQueue()`. So if blob functions are not set before `createDeviceAndQueue()` then blob cache data will never be loaded. This change simply removes `ensurePipelineCacheInitialized()` from the `createDeviceAndQueue()`, since cache can only be accessed after the initialization (`mPipelineCacheInitialized` is true). Bug: angleproject:8601 Change-Id: I3db1cd69346ec1aa2c36e4134c77680526b22cc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756574 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 721becf2 2024-08-06T17:49:56 Vulkan: Update Renderer::syncPipelineCacheVk() method Add check for `mPipelineCacheInitialized` to avoid overwriting existing pipeline cache data in the blob cache by empty cache data if sync is called before pipeline cache is loaded from the blob cache. Move checking of `mCompressEvent` before getting pipeline size and updating `mPipelineCacheSizeAtLastSync`. This will avoid unnecessary (potentially heavy) vulkan call and fix bug when next sync is skipped, because `mPipelineCacheSizeAtLastSync` is already updated. Bug: angleproject:4722 Change-Id: I7390c4bc53ba57732b659d79c65ed4da8d7a6ba6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756575 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 22ed9877 2024-03-07T15:52:13 Vulkan: Generate fragment shading rates with compute Generating fragment shading rates on the CPU could cause avoidable stalls or increased latencies due to host<->device synchronization. Instead generate the rates using a compute shader. Optimize foveated rendering by treating a foveated draw with focal points whose gainX or gainY is 0 as if it were an un-foveated draw Bug: angleproject:42266906 Change-Id: If8c5504087997666c7d0c1cae8dcc5fab847187e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5754322 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Yuxin Hu ea63e372 2024-08-01T21:10:02 Enable VK_KHR_synchronization2 if it is available If the device supports VK_KHR_synchronization2 and VkPhysicalDeviceSynchronization2Features.synchronization2 queried from the device is VK_TRUE, Enabled the extension VK_KHR_synchronization2 and feature VkPhysicalDeviceSynchronization2Features when calling vkCreateDevice. Bug: b/356985874 Bug: b/336844257 Change-Id: Iac95f373a283f5a97e126770321769e0f760e5f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759319 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 65f08d08 2024-07-26T22:14:49 Vulkan: Work around driver bug with nested switch Bug: chromium:350528343 Change-Id: Ie7bd58934ccb2b8f06f6ad6a8c3bf38e81b84969 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5744620 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 7b0dc666 2024-07-19T15:39:42 Vulkan: Enable explicitlyEnablePerSampleShading for most vendors Bug: b/267953710 Bug: angleproject:40096890 Tests: SampleMultisampleInterpolationTest.SampleMaskInPerSample* Change-Id: I51cc393934e7fd24146ab5c94893bb3014c5c044 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5726628 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 85edb907 2024-07-17T19:09:09 Vulkan: Remove the adjustClearColorPrecision feature for new driver The vulkan driver issue that this feature tries to workaround is resolved in the new driver. Remove the feature workaround. Bug: b/292282210 Change-Id: I541526e71d5312f1a23b5a415e96d5b966e77f2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5719652 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Solti Ho <solti@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Igor Nazarov 86b22745 2024-07-17T19:05:51 Vulkan: Fix mPipelineCache is not initialized after terminate Very old regression: https://chromium-review.googlesource.com/c/angle/angle/+/1683807 Problem happens only if call `eglInitialize()` again on terminated display without also calling `eglGetDisplay()`. Note: calling `eglGetDisplay()` on terminated display will call `setupDisplayPlatform()`, which will destroy old `mImplementation`. Test: angle_end2end_tests --gtest_filter=EGLDisplayTest.InitializeDrawSwapTerminateLoop* Bug: angleproject:3318 Change-Id: I94bc7eba97be2d9b194c1a22a37662a2836f60b4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5717753 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1db80b88 2024-07-10T12:47:42 Reland "Vulkan: Use VK_KHR_dynamic_rendering[_local_read]" This is a reland of commit c379ff48043a47e444c388c45270db40d3172d50 Original change's description: > Vulkan: Use VK_KHR_dynamic_rendering[_local_read] > > Bug: angleproject:42267038 > Change-Id: I1f4eb0f309992a9c1c287a69520dadf5eff23b26 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637155 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: angleproject:42267038 Change-Id: I083e6963b5421386695e49a9872edbb2016c9763 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5691342 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao 58a56ca4 2024-07-16T11:26:44 Vulkan: Restrict VkEvent to TBRs VkEvent has much bigger overhead. Until we know that it helps desktop GPUs, we restrict it to TBRs. Also enabled for SwiftShader so that we get more test coverage in bots. Bug: b/336844257 Change-Id: Ie1859a515c9969ca37f07eae0ff729dd934eb26e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5714391 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 06921c61 2024-07-08T12:13:40 vulkan: filter out devices with insufficient API version We weren't taking the version into consideration inside ChoosePhysicalDevice, but RendererVk really cares about that and will error out if the selected device doesn't meet the minimum API version requirements. Frontload some of that API version check work in ChoosePhysicalDevice, giving it the opportunity to find a device that matches the requirements. Bug: angleproject:351866412 Change-Id: I471e93b03eca5e18e98202f9848ba0fd1b55d5a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686556 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao a5161f01 2024-06-04T15:46:04 Vulkan: Enable event based image barrier This CL enables VkEvent based image barrier for all GPUs. The testing result on HK3 shows manhattan31_off score impoves ~5%. We can exclude certain barrier insensitive GPUs if needed. Bug: b/336844257 Change-Id: Iebc4957dbb683637c9314e706be31d3376ee15aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5634089 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Imran Ziad 24322b7d 2024-06-28T20:10:34 Vulkan: feature for cached non-coherent for dyn/stream buffers On platforms lacking cached coherent memory, ANGLE falls back to non-cached coherent memory for dynamic/stream buffers. This impacts CPU readback performance. Add VK feature preferCachedNoncoherentForDynamicStreamBufferUsage. When enabled, ANGLE prioritizes cached non-coherent memory for these buffers. Enable this feature for Intel Meteorlake SOCs. Bug: b/347601787 Change-Id: If62af9f3df57c0bcebf18af747cac56e45f93ea7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5667457 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov eda67d7e 2024-07-11T11:16:08 Avoid including fstream from angleutils.h SaveFileHelper is mostly useful for / specific to FrameCapture, so move it there. The other couple of uses just write a string. Bug: angleproject:42266508 Change-Id: Ia1dcd4531f9d5671f40611a1887dcfe7c5dbc1ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5696025 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi f7620039 2024-07-10T10:21:11 Vulkan: Prepare syncval suppressions for dynamic rendering Removing mentions of vkCmdBeginRenderPass and such. Bug: angleproject:42267038 Change-Id: Ibba2c15249b154fb11b116ef75ee6f20e08e4d00 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5691343 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 7d461b21 2024-07-10T14:11:53 Revert "Vulkan: Use VK_KHR_dynamic_rendering[_local_read]" This reverts commit c379ff48043a47e444c388c45270db40d3172d50. Reason for revert: Regresses CPU perf and memory when _not_ using DR Original change's description: > Vulkan: Use VK_KHR_dynamic_rendering[_local_read] > > Bug: angleproject:42267038 > Change-Id: I1f4eb0f309992a9c1c287a69520dadf5eff23b26 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637155 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: angleproject:42267038 Change-Id: I3865f0d86813f0eeb9085a92875a33bd449b907f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5691337 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 0679b3eb 2024-07-09T18:55:35 Manual roll vulkan-deps from 17d345a0f23d to 1d4b1061b004 (24 revisions) Suppressing a new sync hazard warning Manual roll requested by romanl@google.com https://chromium.googlesource.com/vulkan-deps.git/+log/17d345a0f23d..1d4b1061b004 Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/5939e32b87487fa9c72ab336ebfcc5ae26d9ab6d..42d9adf50b4ad7db2a7212318068ec614b36414f https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/00c49e3b56cc9748228d2e5b0d1e8e9c4409a02f..88194ef2d87683f963e735793f20ad1ebce70bc5 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/216574bedb80d439c2533d161e7ea7897504bbb6..9f2ccaef5f70c32bcd6c911a2b09dbb26106b437 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers/+log/190d2cb24e90e5bf2bec0a75604a9b3586485b6d..6c539b2ed2dba2997cdedeac0b376ff2fe382595 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/df78ee39d2ff6c10b4f7f2ae06c7ca64524f9e25..d13c1ee715c4674237aca1c775479e1edde87d3c https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/96fb5396040477fbbffdc1b4439dea9447f59d80..d03e2bca31b298fc911f7c89cfaf24d28904492d If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,romanl@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: angleproject:352094384 Tbr: romanl@google.com Change-Id: If9da3b32eb405aba8472a020be0c3fd732656f27 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5689521 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi c379ff48 2024-06-10T22:01:57 Vulkan: Use VK_KHR_dynamic_rendering[_local_read] Bug: angleproject:42267038 Change-Id: I1f4eb0f309992a9c1c287a69520dadf5eff23b26 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637155 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Mark Lobodzinski 3813e805 2024-06-21T14:29:55 Add env var/property control of API dump layer Layer is now included with all debug/assert builds or when specified through GN arg. VK_VULKAN_API_DUMP_LAYER on desktop, or for android set debug.angle.enable_vulkan_api_dump_layer to 1. Also included some renaming since layers other than validation are supported. Bug: angleproject:8623 Change-Id: I2bb976dede53712f781a531d0c4f3ce4d33f052c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5649937 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi df7bda5c 2024-06-21T13:27:08 Disable MSRTSS if not supported for RGBA * Support for MSRTSS is checked for RGBA8 and RGBA8_SRGB during renderer initialization. * In the case of lack of support, this feature is disabled. * preferMSRTSSFlagByDefault is disabled if MSRTSS is not supported at all. Bug: angleproject:348181798 Change-Id: If1bf27f53a61f4fd67576c426ab07f4e2304fbe9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5647495 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>