src/libANGLE/renderer/vulkan/RendererVk.cpp


Log

Author Commit Date CI Message
Shahbaz Youssefi 025504b9 2022-10-17T17:03:03 Pass worker pools to image load functions In preparation for the ASTC decoder using threaded decoding. Bug: b/250688943 Change-Id: I70d669bcb57b900dbb633304182e174aec362203 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3961339 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Greg Schlomoff <gregschlom@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao e8f9355c 2022-10-13T16:51:32 Vulkan: Add forceWaitForSubmissionToCompleteForQueryResult flag Add forceWaitForSubmissionToCompleteForQueryResult feature flag and enable it for ARM. Also force host wait if async submission is enabled. Bug: b/253522366 Change-Id: Ie2d7373930f1a2b3fc761d2f8d2df8fa84983c54 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3954044 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 8e644365 2022-10-11T11:47:55 Vulkan: Rearrange state specification for pipeline libraries This change splits pipeline state setup based on whether the complete pipeline is being created or only a subset of it. However, no partial pipelines are yet created, that will be done in a following CL. Bug: angleproject:7369 Change-Id: Ife34c4bc39641ab8f06e7c78502f95a6bc16d15d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949917 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 1119dfbd 2022-10-03T16:47:29 Vulkan: disable supportsHostQueryReset feature if func is null This is try to clean up a old fix for chromium security bug chromium:1273344 that in some bots we are seeing supportsHostQueryReset feature enabled but vkResetQueryPoolEXT pointer is null. We fixed that in crrev.com/c/3313382 that added a check of vkResetQueryPoolEXT AND supportsHostQueryReset feature flag. This CL disables the feature flag if vkResetQueryPoolEXT pointer is null so that other places we only need to check feature flag. Bug: b/250706693 Change-Id: I2d9f9726f081e21a37bbb0bb205003c390f2d32c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3929236 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Charlie Lao b1d699da 2022-10-04T15:27:51 Vulkan: Don't wait QueueSerial if supportsHostQueryReset enabled In QueryVk::getResult() we are waiting for query's queueSerial to complete, even though QueryHelper::getUint64Result() we are also using VK_QUERY_RESULT_WAIT_BIT to ask vulkan driver to wait for result. Based on the comment, the reason for that queueSerial wait is because "its reset command may not have been performed by the GPU yet.". But if mFeatures.supportsHostQueryReset is enabled, we use vkResetQueryPoolEXT to reset the query, and this host reset is immediate, so there is no need to wait for queueSerial in this case. This CL disables the wait when host reset is enabled and relies on vkGetQueryPoolResults(VK_QUERY_RESULT_WAIT_BIT) to do actual wait. This should help performance on immediate renderer where the query result might be available before renderpass completion. Bug: angleproject:3965 Change-Id: Ibe61c289f1f3d1312e79ac80a2b5de23b90ef87c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3935444 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Charlie Lao 76f377c5 2022-06-17T16:05:16 Vulkan: Break renderpass when switch from query to non-query getQueryResult will wait for query result to be available, which means a potential CPU bubble if the result is not yet available. On tiler GPUs it will at least wait for renderpass to complete. Usually query enabled draws are very tiny (usually just draw a point to see if it is occluded or not), and query disabled draws are expensive. Some apps do issue a glFlush when switch from query draw to non-query draw, but app like dead_by_daylight does not issue such flush. In order to reduce the bubble, this CL ends renderpass and issue a flush when we switch from query enabled draws to non-query enabled draw so that the result will be available much earlier, this reduce the CPU bubble. This result in dead_by_daylight frame time improves from 5.45ms to 3.5ms (35% improvement). Bug: b/250706693 Change-Id: Ia3a32a9fb336e6f256809b3cad83f61a45415fb1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3931739 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Mohan Maiya dbbfdd22 2022-10-06T13:39:20 Vulkan: Bug fix in GL_QCOM_shading_rate Don't initialize "vkCmdSetFragmentShadingRateKHR" before creating VkDevice as it leads to a nullptr assertion in RendererVk::canSupportFragmentShadingRate. Separate out instance and device function pointer initializations. Bug: angleproject:7172 Change-Id: I55b5b41313857a2861a197f17d7f88b71aec907f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3938443 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 13195f8a 2022-10-05T11:17:35 Vulkan: Fix missing input attachment usage on MSRTT When combined with advanced blend (or framebuffer fetch for that matter), MSRTT attachments could be used as input attachments. This change fixes the missing usage bit. Bug: angleproject:7739 Change-Id: I2190e4a6e534e120357dd68189fb9de07b6c54fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3936444 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Hailin Zhang 5ddf631c 2022-10-04T11:17:45 Vulkan: Choose host visiable device local based on heap size. set preferDeviceLocalMemoryHostVisible based on the host visiable device local and device local heap memory heap size. Bug: b/246909451 Change-Id: I1e63931baceda02396b0eb8f24671949920ac2a5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3934479 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Mateusz Przybylski <mprzybyl@google.com>
Shahbaz Youssefi 391644f4 2022-08-24T14:59:21 Vulkan: Use VK_EXT_rasterization_order_attachment_access When available, this extension makes coherent framebuffer fetch / advanced blend official. Bug: angleproject:7604 Change-Id: Ifc552a0fa7a3612a3fc568feb61d6dd348e856ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3855698 Reviewed-by: Chris Dalton <chris@rive.app> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 34977cc5 2022-10-03T11:55:28 Supress vkDestroySemaphore-semaphore-01137 Bug: angleproject:7729 Change-Id: If93b6411bed472417d62f8e63682991a493dc526 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3929750 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Ian Elliott <ianelliott@google.com>
Chris Dalton a7dc51f2 2022-10-01T08:49:11 Add a framebuffer fetch implementation of PLS The framebuffer fetch implementation works by attaching PLS backing textures to the framebuffer, and then rewriting PLS uniforms as "inout" fragment variables. The compiler's existing machinery takes it from there and makes it work on GL and Vulkan, and soon Metal. EXT_shader_framebuffer_fetch is now the preferred backend for pixel local storage, but we also use EXT_shader_framebuffer_fetch_non_coherent if shader images can't be coherent. This is especially interesting for Vulkan, since noncoherent framebuffer fetch is possible without any extensions. Bug: angleproject:7279 Bug: angleproject:7683 Bug: angleproject:7684 Bug: angleproject:7724 Change-Id: I33f3b2c6df9a5709969d9165c448ea71b096c9e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3900142 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Hailin Zhang 836cc5e2 2022-09-09T22:06:22 Vulkan: add etc to bc compute transcoding. use compute shader to transcode etc format to bc format. Bug: b/243398683 Change-Id: Idbd0820a2df8d92fe690055dae2933bc559e9bfd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3888501 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Cody Northrop f7a5cce1 2022-09-29T10:42:26 Tests: Add Life is Strange trace Test: angle_perftests --gtest_filter="*life_is_strange*" Bug: angleproject:7711 Bug: angleproject:7723 Change-Id: I83d9d58270a80435dba8991875b20a215372334f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3928205 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi f4389797 2022-09-23T15:36:13 GLES1/Vulkan: Enable GL_EXT_multisample_compatibility ... with a non-conformant implementation. This unblocks some tests that unnecessary call glDisable(GL_MULTISAMPLE) and trip up on it generating validation error. Bug: angleproject:7676 Bug: angleproject:7657 Bug: angleproject:3863 Bug: angleproject:3864 Change-Id: Iaebbea66da81fc9a30bf7a87deed7cf88ff38476 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3891546 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 0d34d4f8 2022-09-21T18:51:04 Suppress more VVL errors about vkCmdDraw*-None * Suppressed the following VVLs: * VUID-vkCmdDrawIndexed-None-02686 * VUID-vkCmdDrawIndirect-None-02686 * VUID-vkCmdDrawIndirectCount-None-02686 * VUID-vkCmdDrawIndexedIndirect-None-02686 * VUID-vkCmdDrawIndexedIndirectCount-None-02686 Bug: angleproject:7685 Change-Id: I41390ee2a2a01509367a6e98697da3ad7e3cc2e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3910174 Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Amirali Abdolrashidi 7edc6dab 2022-09-21T11:57:37 Suppress VVL error about vkCmdDraw-None * Suppressed the following VVL: * VUID-vkCmdDraw-None-02686 Bug: angleproject:7685 Change-Id: I1c926637729f11f58667d20ea0f5c5f545dc5181 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3910798 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 41de8a02 2022-09-21T09:08:12 Suppress VVL error about input attachment desc * Suppressed the following VVL: * UNASSIGNED-input-attachment-descriptor-not-in-subpass Bug: angleproject:7685 Change-Id: I8a23f8d4ddbc91df791f5c98b4ce1e11278b7cc2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3910796 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 ba3b4515 2022-09-15T01:06:51 Vulkan: Implement GL_ANGLE_logic_op Enabled if the logicOp device feature is available. According to gpuinfo, it's pretty much universal except for ARM. Bug: angleproject:7654 Change-Id: I4808b519fdd6273b2f8c1bb17f59517eb65bfe8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3898317 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Dalton 493bab09 2022-09-15T14:20:41 Add an ShPixelLocalStorageType enum Adds ShPixelLocalStorageType to ShCompileOptionsPLS and adds a getNativePixelLocalStorageType() call to ContextImpl. For now this enum only tells the translater whether PLS formats needs to be packed into r32 images, but it will soon also be able to select framebuffer fetch, native pixel local storage, and other PLS implementations. Bug: angleproject:7279 Change-Id: Ifbd419b20550b8711ae3044782177806796216f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3900498 Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Antonio Caggiano a8a04ce1 2022-08-16T17:59:20 Vulkan: Add supportsPresentation feature Some platforms do not support presentation through any Vulkan queue. In this case we should not transition the color image layout to present. Bug: angleproject:7217 Change-Id: I71cad0e52bc1fdb531de5a34e917a1862a4cf070 Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com> Suggested-by: Sungyong Choi <sywow.choi@samsung.com> Suggested-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3853598 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 18f90857 2022-09-09T11:28:00 Vulkan: Use DontCare if attachment is invalidated If an attachment is invalidated, there is no need to preserve the old content. NONE means old content is still preserved, DontCare means discard old content. In this case we do want to discard instead of preserve old content. Bug: b/243711628 Change-Id: I242ac86db6993574b5627d61f7185d155beec0ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3888938 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Mohan Maiya ae971cfe 2022-09-07T17:00:17 Vulkan: Expose wide gamut and HDR EGL colorspace extensions Query the underlying Vulkan ICD for the list of supported colorspaces on platforms that support VK_GOOGLE_surfaceless_query extension. Expose corresponding EGL colorspace extensions. Bug: angleproject:7630 Change-Id: If9843ee55100fff5a8cec4ecf2ff27c746c5b205 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3873767 Reviewed-by: Trevor Black <vantablack@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya 5fae671c 2022-09-07T17:00:36 Vulkan: Enable VK_EXT_swapchain_colorspace when supported Enable VK_EXT_swapchain_colorspace instance extension when supported. This expands the number of colorspaces that can be supported by EGL. Bug: angleproject:7630 Change-Id: I10ac62dba80fc7a443ab1cb7be331717855ea74a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3881164 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 490ec5ba 2022-09-06T15:18:04 Replace underscores with dashes in SYNC-HAZARD messages And remove the temporary workaround to accept both. Bug: angleproject:7633 Change-Id: I6ab4256127d99c06441485214e640d8fbccb7de0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3876224 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuxin Hu fa6b6d17 2022-09-06T18:16:05 Fix the SYNC-HAZARD error message format We should replace the underscore with dash in the error message, instead of the other way. Bug: angleproject:7633 Change-Id: I3e7ad756e3bca6af0d62bfbc7ef081a460a2aa97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877403 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 91deedba 2022-09-02T00:02:19 Vulkan: Use VK_EXT_pipeline_robustness In this change, the global robustBufferAccess feature is disabled. Using this extension, this behavior is enabled for pipelines created for programs built in GL contexts that have robustness enabled. Includes a fix for transform feedback emulation where pausing transform feedback didn't actually stop it from writing output (and overrunning the empty buffer). Until now, the perpetual robustBufferAccess had worked around this. Bug: angleproject:5845 Change-Id: Ib413dff5435e9d1f482bea1d1d0f20c5f09ad8a5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3872507 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 2ede53ec 2022-09-06T14:18:15 Replace underscores with dashes in SYNC-HAZARD messages Add a temporary check on both dash and underscore SYNC-HAZARD messages until Chromium has rolled with the same vulkan-deps change. Bug: angleproject:7633 Change-Id: I30b8f60bc2d4e87b7b1d6b27601f67258f7d0d69 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877667 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ff46a03a 2022-08-25T20:19:02 Vulkan: Use VK_EXT_multisampled_render_to_single_sampled Previously, the GOOGLEX version was used. The EXT version is favored now. Bug: angleproject:4836 Change-Id: Ie41d750b0729f0b3a14d1937fbf2dd386b65dd59 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3857993 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 9aeb6311 2022-08-29T10:50:01 Revert "Extra buffer logging/checking on Android Cuttlefish" This reverts commit 5cb05e0482ed1a2c4048f76c1a7fd444849410d8. The root cause was found, and this extra logging/checking is no longer needed. Bug: b/236098131 Bug: b/245339714 Change-Id: Ibefbeec30be974788789650f2dc86696a6eba11a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3862408 Auto-Submit: Ian Elliott <ianelliott@google.com> Reviewed-by: Jason Macnak <natsu@google.com> Commit-Queue: Jason Macnak <natsu@google.com>
angle-autoroll 8454b625 2022-09-06T12:51:16 Roll vulkan-deps from c4e128e05c38 to e3fa08b13e32 (12 revisions) Compare SYNC-HAZARD messages against both '_' and '-' variants during transition, needed after https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/451e8c2848ff67d51d3feedad8c728c2cb45cd58 https://chromium.googlesource.com/vulkan-deps.git/+log/c4e128e05c38..e3fa08b13e32 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/69ae9e7460..a53aa3e94f * spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/c93ee9261e..210a800130 * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/4c456f7da6..5f45f793ae * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/efe6aa4f3f..fdfdef6d1b * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/088cfe8047..1ef7bc1547 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/0a39833305..b50285d33d 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 ianelliott@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:7633 Change-Id: Ib994a8819b7b8bb61f4fa2c70ed838be55ac7e10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3871554 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Amirali Abdolrashidi ba65030c 2022-09-01T18:50:48 Fix adding imageless FBO to enabled extensions Bug: angleproject:7553 Change-Id: I1459e66f59804ab8a263d3615a87f4307fe33b06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3869620 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
Geoff Lang f602278c 2022-08-30T10:31:07 Vulkan: Parse human readable ARM driver versions. Update two workarounds to be gated on driver versions with fixes. Bug: angleproject:7370, angleproject:7556 Change-Id: I78e1cebb756b06c7fc926fb9ab27357cf3c7ce4f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3863162 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Eddie Hatfield ba4b6913 2022-08-23T09:34:27 Fix data race in BlobCache * Re-enable shader cache feature * Improve BlobCache thread-safety test * Improve EGLProgramCacheControlTest to not check the size of the BlobCache, since the shader cache interferes with this. * Include the arguments to ConstructCompiler() and Compile() in the key hash for the shader cache. Bug: angleproject:7036 Change-Id: Ied4e11f9160552f2f9358d99b5656315239ba856 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3851161 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Eddie Hatfield <eddiehatfield@google.com>
Mohan Maiya 2d48a370 2022-08-26T11:11:19 Vulkan: Support passthrough of colorspace attributes On Android, the EGL loader supports and implements the necessary functionality for the following colorspace extensions - 1. EGL_EXT_gl_colorspace_display_p3 2. EGL_EXT_gl_colorspace_display_p3_linear 3. EGL_EXT_gl_colorspace_display_p3_passthrough 4. EGL_EXT_gl_colorspace_scrgb 5. EGL_EXT_gl_colorspace_scrgb_linear Add support for "EGL_ANGLE_colorspace_attribute_passthrough" extension that allows vendors that support wide color gamut to passthrough colorspace attribute values to the underlying Vulkan implementation to be used during VkImage creation. Bug: angleproject:7319 Test: PbufferColorspaceTest.CreateSurfaceWithColorspace* Change-Id: Ibd78bb5fea4ede394f4dc5027c1d4a730746f2ee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3855048 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya aa2a558e 2022-08-23T09:47:02 Vulkan: Add support for setting timestamp surface attribute On Android the EGL wrapper handles most of the functionality required by EGL_ANDROID_get_frame_timestamps. However if for some reason the swapchain is recreated, the timestamp state would be lost resulting in stuttering. Introduce EGL_ANGLE_timestamp_surface_attribute extension that adds support for toggling the EGL_TIMESTAMPS_ANDROID attribute of a surface. Cache this state and recreate the swapchain accordingly. Bug: angleproject:7489 Test: EGLSurfaceTest.TimestampSurfaceAttribute* Test: dEQP-EGL.functional.get_frame_timestamps* Change-Id: I3660f7137c006d904164d243a682a4ff520eabd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3753396 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 952d6e8f 2022-08-21T21:51:03 Vulkan: Workaround ARM driver bug with dynamic vertex strides According to ARM, vkCmdBindVertexBuffers2EXT is broken when more than one attribute binding is involved. In this change, the vertex strides dynamic state is avoided altogether on ARM. Bug: fuchsia:107106 Change-Id: Ie41fc07037083214d2dc99e4ed062485384911c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3844640 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Eddie Hatfield bd1484f3 2022-08-22T13:53:35 Temporarily disable shader caching feature This will be re-enabled when the BlobCache test flakes are resolved. Bug: angleproject:7036 Change-Id: I38829ffcd5869679bf65017475e8a10d165f369b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3846403 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Eddie Hatfield <eddiehatfield@google.com> Reviewed-by: Lingfeng Yang <lfy@google.com>
Shahbaz Youssefi 4330a827 2022-08-19T02:59:26 Reland "Vulkan: Use VK_EXT_primitive_topology_list_restart" This reverts commit 29d18b303189bf31b3af3a85c3df6013114eebc8. Reason for revert: Fixed VVL suppressions not working Original change's description: > Revert "Vulkan: Use VK_EXT_primitive_topology_list_restart" > > This reverts commit e79c9cd63053b6cb7c33235f3a0a0310255df073. > > Reason for revert: Causing timeouts on some headless tests: anglebug.com/7579 > > Original change's description: > > Vulkan: Use VK_EXT_primitive_topology_list_restart > > > > From ANGLE's point of view, there is nothing to do with this extension > > other than enable a feature that silences a validation error. > > > > Bug: angleproject:3832 > > Change-Id: I094343d09c322e2848a65a5bc775d0f21388fb46 > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3562380 > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > > Reviewed-by: mohan maiya <m.maiya@samsung.com> > > Bug: angleproject:3832 > Change-Id: Ifec7c9eaea1d3a949f15e0b6d868742f53cf8377 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3838391 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:3832 Change-Id: Ia79b1f3b716f0df1991f605704135b4af48fb639 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3841366 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 29d18b30 2022-08-18T18:18:04 Revert "Vulkan: Use VK_EXT_primitive_topology_list_restart" This reverts commit e79c9cd63053b6cb7c33235f3a0a0310255df073. Reason for revert: Causing timeouts on some headless tests: anglebug.com/7579 Original change's description: > Vulkan: Use VK_EXT_primitive_topology_list_restart > > From ANGLE's point of view, there is nothing to do with this extension > other than enable a feature that silences a validation error. > > Bug: angleproject:3832 > Change-Id: I094343d09c322e2848a65a5bc775d0f21388fb46 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3562380 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: mohan maiya <m.maiya@samsung.com> Bug: angleproject:3832 Change-Id: Ifec7c9eaea1d3a949f15e0b6d868742f53cf8377 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3838391 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Eddie Hatfield 955adb77 2022-08-12T10:14:48 Cache compiled shader By storing the compiled shader in the blob cache, the time to recompile the same shader is reduced. Based on work by <hckim.kim@samsung.com> Bug: angleproject:7036 Change-Id: I884ae40e715c49a9ccd12903012e8327811e3557 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3808235 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 213a1ee6 2022-08-16T12:44:35 Vulkan: Enable VK_EXT_primitives_generated_query Added a test to make sure PGQ works with indirect draws too. Bug: angleproject:5430 Change-Id: Ic91e11906ca34c4f9a50f3442709e544f7f6744c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3826165 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi e79c9cd6 2022-03-30T23:06:54 Vulkan: Use VK_EXT_primitive_topology_list_restart From ANGLE's point of view, there is nothing to do with this extension other than enable a feature that silences a validation error. Bug: angleproject:3832 Change-Id: I094343d09c322e2848a65a5bc775d0f21388fb46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3562380 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Chris Dalton fa3d7d5c 2022-08-05T00:57:40 Make PLS coherent on Vulkan Uses the VK_EXT_fragment_shader_interlock extension to make the shader image implementation of PLS coherent on Vulkan. This extension is supported on AMD, Apple, NVIDIA, and Intel. Bug: angleproject:7279 Change-Id: Ic0253eb20932eb6be0b1f433ba454e48b57be2f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3813816 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 876da4ae 2022-08-09T22:30:24 Vulkan: Query support for VK_KHR_imageless_framebuffer In preparation for using it. Bug: angleproject:7553 Change-Id: I579af8ce2c0dd1d58bf750ee494e06a071b798fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3823620 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi f7d4c614 2022-03-30T23:33:27 Vulkan: Use VK_EXT_primitives_generated_query This Vulkan extension implements OpenGL's primitives generated query. The heavy lifting in ANGLE's implementation was done when this query was emulated with pipeline statistics query. This change simply switches pipeline statistics query usage to this dedicated query when available. Bug: angleproject:5430 Change-Id: I5d2c7d64e4627bcbd33d428d6a7c836b1129e5fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3813815 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 493b5aff 2022-08-09T14:57:24 Vulkan: Workaround ARM bug with stencil write mask Bug: angleproject:7556 Change-Id: I0aa17c178071cc15d8ee15f700b0c4932819c72a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3821367 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi 8050079c 2022-08-08T16:35:10 Vulkan: Remove basicGLLineRasterization * Removed basicGLLineRasterization from the ANGLE features. * Removed "viewport" from the extended driver uniform classes. Bug: angleproject:2830 Bug: angleproject:7558 Change-Id: I289b1e2b536a6bd0c1ab24844835221e617a296d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3818165 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 7fe0694c 2022-07-14T16:42:30 Vulkan: Use push constants for driver uniforms * Updated the driver uniforms so they would be defined as push constants in SPIR-V. Their data would be updated via pushConstants() when handling the driver uniform dirty bits. * Updated TOutputVulkanGLSL to be able to generate the push constants as required. * When handling the driver uniform dirty bits, we no longer allocate a buffer. * Removed the driver uniform descriptor set from the pipeline layout. * Removed the binding-related functions and flags for the driver uniforms. * In invalidateGraphicsDescriptorSet(), DIRTY_BIT_DESCRIPTOR_SETS is used instead of DIRTY_BIT_DRIVER_UNIFORMS_BINDING. (Same for invalidateComputeDescriptorSet()) * DIRTY_BIT_DRIVER_UNIFORMS_BINDING is replaced with DIRTY_BIT_DRIVER_UNIFORMS in other places. * Removed mDriverUniform and DriverUniformsDescriptorSet from ContextVk. * Added mSupportedVulkanShaderStageMask to RendererVk, which is used in creating the pipeline layout and updating the push constants. * Added a TODO note for driverUniformsDescriptorSetIndex. Bug: angleproject:6858 Change-Id: I91037d378528962a816b12ff3f21249ee17b7652 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3782570 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Steven Noonan b8e741d2 2022-06-23T13:36:17 Vulkan: allow selecting render device by PCI device/vendor IDs The EGL_ANGLE_platform_angle_device_id extension is deliberately vague about the meaning of "device ID high" and "device ID low", stating it's platform-specific. We can use these for representing the PCI device/vendor IDs that can be discovered via various (OS-specific) external means. Bug: angleproject:7460 Change-Id: Iff462687749e815fa074ef8ff392b6730ef46fa8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3720733 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi be708446 2022-07-25T15:24:52 Vulkan: Remove the bindEmptyForUnusedDescriptorSets workaround Only applied to older Qualcomm-based phones. Bug: angleproject:2727 Change-Id: I37a611e2ff79d898eff9401467407543f3c690b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3785290 Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov 992018c7 2022-07-20T17:31:47 Suppress VUID-VkGraphicsPipelineCreateInfo-pStages-06896. Bug: angleproject:7513 Change-Id: I2877c069e33d2ec5e92cf759dc3ab1d270e1a414 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3776759 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Yuly Novikov bf369285 2022-07-18T15:12:13 Suppress SYNC-HAZARD-WRITE_AFTER_READ in vulkan_car_chase Bug: angleproject:7125 Change-Id: Ibebe363bcc98413f259db9cb959b0ef816ed5ee2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3768935 Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi d9763c60 2022-07-14T14:42:27 Disable mutable texture upload on Win/Intel devs After adding the mutable texture upload CL, we are experiencing some instances of flakiness in the form of lost context/device errors in the perf tests in Win/Intel cases. * Added mutableMipmapTextureUpload as an ANGLE feature, which is used to determine if onMutableTextureUpload() should be called. * It is disabled on Windows when using an Intel GPU. * Disabled the related unit tests on Win/Intel cases. Bug: angleproject:7308 Bug: b/202744914 Change-Id: Ib8c1bddc39cc4354468831a4a599a7c343d05f0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3764460 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Ian Elliott d88f7906 2022-07-01T12:57:09 Extra buffer logging/checking on Android Cuttlefish This adds a feature that will be enabled on Android Cuttlefish systems, to catch a rare crash. Test: Visual inspection of logcat output Bug: b/236098131 Change-Id: Ie35d7e017f69b36da9caf3e47c31fcc71846caed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3726963 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 053d152d 2022-07-04T21:20:34 Vulkan: Resolve GoogleX MSRTSS conflict with EXT Now that the extension is public, rename the old symbols to GoogleX as they have shipped previously. This reverts defd99dc4. Bug: chromium:1088005 Change-Id: I5ac7f73e24084e26a8b2d9cf742c7ab9b3c80984 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3744362 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Antonio Caggiano 007a4f06 2022-04-22T11:07:05 Vulkan: Wayland resize callback Handle client resize requests and resize the swapchain accordingly after next buffer swap. Bug: angleproject:6902 Change-Id: I8bd6b0d4efac041606f15eccb6befa28594905b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3608089 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jeff Vigil <j.vigil@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 9070e279 2022-06-30T09:35:59 Vulkan: Handle platforms that have imprecise float division issues Even when the dividend and divisor have the same value some platforms do not return 1.0f. We need to emit sepcial division code on such platforms. Bug: angleproject:3586 Tests: KHR-GLES31.core.blend_equation_advanced.blend*HSL* Change-Id: Ibb81f57c959ae2c8edb6d361bf6241c019dfb988 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3738439 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 1e96beb9 2022-06-29T15:18:35 Suppress the new BestPractice VVL Error Suppress the new best practice VVL Error vkCmdBeginRenderPass-ClearValueWithoutLoadOpClear to unblock the vulken-deps roller. A potential fix is work in progress. Bug: angleproject:7470 Bug: b/237542876 Change-Id: Iaea0cef58984acae79210e72b75be527d98e8286 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3736698 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi ba737f47 2022-06-27T11:04:21 Vulkan: Don't sync pipeline cache if warm up is effective If the pipeline cache is being warmed up at link time, the blobs corresponding to each program is individually retrieved and stored in the blob cache. This should be enabled only on platforms where draw time pipeline creation hits the cache due to said warm up. As a result, there's no need to store the aggregate cache (the one owned by RendererVk) in the blob cache too. Bug: angleproject:5881 Bug: b/215230983 Change-Id: I2da5de835e6667b0b2d5859e6804791671888947 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3727227 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
angle-autoroll bb373176 2022-06-24T14:19:05 Roll vulkan-deps from 11ad77222bfe to 137b026580e5 (1 revision) Suppress new SYNC-HAZARD-READ_AFTER_WRITE. https://chromium.googlesource.com/vulkan-deps.git/+log/11ad77222bfe..137b026580e5 Changed dependencies: * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/620b378993..a0e0e77a22 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 jonahr@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://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:7456 Tbr: jonahr@google.com,ynovikov@google.com Change-Id: I2ef42cccfabd575cd59c90e6f558b6a46202e028 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3723547 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Steven Noonan 10f065e2 2022-06-23T13:23:09 Vulkan: support QCOM_shading_rate on Intel graphics When querying fragment shading rates, we were limiting the result array to 6 elements, which was not enough on Intel's Windows graphics drivers. Those drivers report more than 6 fragment shading rates, including a bunch of strange ones like 4x1 and 1x4. Because we limited the list to 6 elements, and the Vulkan specification requires that the rates be listed in order from largest width to smallest, the feature check was missing the smaller shading rates (including 1x2 and 1x1). This caused the supportsFragmentShadingRate feature to be disabled. Bug: angleproject:7461 Bug: angleproject:7172 Change-Id: I1b9a2924f93fdb803c20cfa388749754691b6e92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3720732 Auto-Submit: Steven Noonan <steven@valvesoftware.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi e50351cb 2022-06-10T22:28:58 Vulkan: Don't close render pass on framebuffer fetch For applications that use framebuffer fetch in the same RP as non-fetch programs, we can save some extra RenderPasses by always creating our RP objects with input attachments enabled. This works almost identically except for needing to use the images in a "GENERAL" layout instead of "COLOR_ATTACHMENT_OPTIMAL". According to partners it is possible to achieve performance parity even with GENERAL layout. To remove any potential negative impacts of using the GENERAL layout, the context enters this always-framebuffer-fetch mode only and as soon as a framebuffer fetch program is created. Applications that don't use framebuffer fetch are thus unaffected. This eliminates 20 render passes in the Genshin Impact trace (out of about 58). On a Pixel 6 the resulting benchmark score speeds up by ~25%. For Real Racing 3, the speed up is ~30%. Based on change by jmadill@chromium.org Bug: angleproject:7375 Change-Id: Ib6c73e95d06229f8545d502b388ee2a55a582323 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3697308 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Eddie Hatfield 91976352 2022-06-21T15:41:02 Use C++17 attributes instead of custom macros Bug: angleproject:6747 Change-Id: Iad6c7cd8a18d028e01da49b647c5d01af11e0522 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3718999 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7f57d12b 2022-06-17T22:29:36 Vulkan: Disable cache warmup on ChromeOS SwANGLE A number of browser tests fail due to the cache warm up changing the timing of the tests. The bug is in the tests, but this change unblocks ANGLE roll into Chromium. Bug: angleproject:7440 Change-Id: Ie2d7618bfc367bd34f9b99982c9323c99188c626 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3708995 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 97a6e581 2022-05-30T16:50:26 Vulkan: Useful implementation of program binaries ANGLE already serializes the pipeline state for the sake of OES_get_program_binary. This serialization had limited usefulness however, since the Vulkan driver hasn't actually created any pipelines yet (which is a costly part of program creation). Simultaneously, ANGLE deferred Vulkan pipeline creation to draw time, which causes hitching. In this change, a handful of Vulkan pipelines are precreated at link time; those at least that are sure to create different blobs in the pipeline cache (different spec consts or SPIR-V generation). These pipelines are created in the program executable's cache. The cache is then merged into the shared renderer cache (for potential blob reuse by other programs). With this, two goals are achieved: - Most pipelines created at draw time hit the pipeline cache, avoiding costly compilation. - When the program binary is retrieved, the contents of the program executable's pipeline cache is also returned. On reload, the cache is recovered, resulting in faster startup. Bug: angleproject:5881 Change-Id: I46c5451a7d0b16dffd40e44015e094640886880b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3671977 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 0bc70e96 2022-06-10T22:27:04 Vulkan: Rename getShareGroupVk to getShareGroup + other miscellaneous clean up Bug: angleproject:7375 Change-Id: I25690860478a2fd181a67ce2b6cb4d7aac7dbaa7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3700197 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott 3c81c9d1 2022-06-14T19:24:27 Enable perFrameWindowSizeQuery on Android It was decided that Android won't return VK_SUBOPTIMAL_KHR when the window size changes. Android's Vulkan loader no longer needs IPC to implement vkGetPhysicalDeviceSurfaceCapabilitiesKHR(). Therefore, we will call vkGetPhysicalDeviceSurfaceCapabilitiesKHR() per eglSwapBuffers() on Android. Bug: b/236026298 Change-Id: I3f66148ef5ed456e4408d64cc38fc6e0fe8b17cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3706160 Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com> Auto-Submit: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 715175de 2022-06-03T22:11:30 Vulkan: Don't enable Qualcomm workarounds on OSS driver Bug: b/217265716 Change-Id: I09cf38a36f8297912f0c26867155cf4f9e145919 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3689810 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Chia-I Wu <olv@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Ian Elliott 0f8f760d 2022-06-07T17:52:52 Disable KHR_no_error for Android/SwiftShader Speculatively fix crash in Skia on ANGLE that has been happening. In addition, prevent other crashes in the future. Bug: b/220069903 Change-Id: I01b9896a6feb8be524849dafbc1df9526fc98754 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3694160 Commit-Queue: Ian Elliott <ianelliott@google.com> Auto-Submit: Ian Elliott <ianelliott@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 5fbb0417 2022-05-26T15:05:52 Vulkan: Handling VK_EXT_load_store_op_none on ARM There is a bug on at least one ARM device when either depth or stencil load op is none. Add a temporary work around to avoid this case for ARM driver until angleproject:7370 is addressed. Also add a test to reproduce the deqp test failures with simiplied draw calls. Bug: angleproject:7370 Bug: angleproject:7351 Change-Id: I74ac49a75f85b1e006ed3b1d77f234f63d314ae0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3671696 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d47c8e0a 2022-04-04T15:08:45 Vulkan: Enable custom border colors on SwiftShader This extension can now be enabled on SwiftShader after bug fixes that landed in https://swiftshader-review.googlesource.com/c/SwiftShader/+/64688 and https://swiftshader-review.googlesource.com/c/SwiftShader/+/66148 Bug: angleproject:6200 Bug: b/227518327 Change-Id: I65fb342a96c47b1ea5ba2ee773c8ae5539052b94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3569585 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4ea62009 2022-06-07T15:35:51 Vulkan: Prefer driver uniforms over spec consts On hardware that's not seeing any benefit from specialization constants, this change switches to using driver uniforms to reduce the number of pipelines created. Bug: angleproject:7406 Bug: b/173636783 Change-Id: Ic1ea1b389b0b27169427643f811370943195f331 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3692270 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 53ec886e 2022-05-30T16:49:11 Vulkan: Externally synchronize the pipeline cache In preparation for a future change that requires this as it may perform pipeline cache merges during creation of pipelines. Bug: angleproject:5881 Change-Id: Ic7921b781aa773ae23b60a0bb6fa2111b1fc401e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679479 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 28b4c378 2022-05-27T15:45:59 Vulkan: Pipeline creation feedback in perf counters Bug: angleproject:5881 Change-Id: I42917cab3c97abb50a14035972a96728dcb990b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3672851 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 1ce69722 2022-05-18T13:05:22 Vulkan: Track used command buffers in ResourceUse. The list of command buffers to ResourceUse will replace tracking resources in a CommandBufferHelper. Currently the two tracking methods live side-by-side, and the old method will be removed in a future CL. Bug: angleproject:5664 Change-Id: Ia04d77e72c508e10b549db8c8dd5f0472e4edc83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656069 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi a2fe4445 2022-05-26T12:42:39 Vulkan: Sync pipeline cache only when truly changed The Vulkan pipeline cache was considered dirty when ANGLE added a new pipeline. However, a new pipeline doesn't necessarily translate to new blobs in the pipeline cache. With this change, the cache is synced only if its size has changed. Bug: angleproject:5881 Change-Id: I0226426680f1e6b0e2bfde66ea6409362b8e72c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3668835 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 7c83a363 2022-05-16T22:22:44 Vulkan: Dynamic state for rasterizer discard enable Interaction with primitives generated query are tested by those tests added in https://chromium-review.googlesource.com/c/angle/angle/+/2976181 Bug: angleproject:5906 Change-Id: I0ab9f54995504be770a93bf13337a5ffe20bf7eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651582 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 58fd3157 2022-05-12T00:01:19 Vulkan: Dynamic state for vertex stride Bug: angleproject:5906 Change-Id: I73b7e004fc25bf3777982736412adc1ca57504b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3644856 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 728dea2b 2022-05-19T13:04:58 Suppress Vulkan Validation Error Suppress Vulkan Validation Error to unblock the vulkan-deps roller. We should remove the suppression when the VVL issue in the commit e23f82fc84c891b3a34e6e8787913b335cbe3934 in Vulkan-ValidationLayers.git is resolved Bug: angleproject:7338 Change-Id: I3322a5b10d271dcd95da9354328facf7e3b9113d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651531 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 2fdd7bfd 2022-05-17T13:31:58 Vulkan: Support binding 2D slice of a 3D texture to an image unit Support binding a 3d texture as a 2d texture by specifying that it is non-layered during glBindImageTexture and expose support for EGL_KHR_gl_texture_3D_image when VK_EXT_image_2d_view_of_3d vulkan extension is supported. Tests: ComputeShaderTest.BindImageTexture3D dEQP-GLES31.functional.image_load_store.3d.*single_layer Bug: angleproject:7320 Change-Id: Ie2f0dfcdf302a4aa58990f74329ca36e62cd3902 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3648586 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Peng Huang bedb3075 2022-05-16T09:46:11 Do not call RendererVK::handleDeviceLost() for device lost RendererVK::handleDeviceLost() need to hold the mCommandQueueMutex for releasing some resources. For some cases, Locking mCommandQueueMutex may cause deadlock, because the same lock has been acquired by the same thread. Fix the problem by not calling RendererVK::handleDeviceLost() for device lost. It is OK, because RendererVK::onDestroy() will call handleDeviceLost() if the device is lost already. Bug: chromium:1273643 Change-Id: Iaaa77bdf429b703363d4155323b91baf5947d95e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3644641 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4e5da2d2 2022-05-11T13:58:07 Vulkan: Dynamic state for cull mode Bug: angleproject:5906 Change-Id: I3d7b888e7999d4892ff71d636ea16a2edcf7a27f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3642800 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 808192a7 2022-05-09T16:39:45 Code Cleanup In Context::initCaps(), we first read the compressedTextureFormats from the contextImpl::getNativeCaps(), then we are clearing the retrieved compressedTextureFormats array in Context::updateCaps() immediately. We shouldn't need to fill the same array twice. Removing the first array value assignments in all backend. Bug: angleproject:3408 Change-Id: Iea85d367d2c5792de4780995d8d03bcf14af484e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3635275 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Min Zhang e56f227d 2022-05-13T08:50:12 Vulkan: Add case: TextureSampleByDrawDispatchDraw This case is used to verify the implicit synchronization when GL executables switch from draw to dispatch. Besides, suppress a VVL on it. Bug: angleproject:7031 Change-Id: Idab68cfd0d4b17685f5eb5b3eec7f2cad12e5877 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3646927 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 31321cb7 2022-05-09T16:17:25 Vulkan: Remove suppressions and workarounds for old AMD/Windows The old AMD/Windows bots are decomissioned. This change removes suppressions and workarounds that were added for that bot. Bug: angleproject:2463 Bug: angleproject:2809 Bug: angleproject:2847 Bug: angleproject:3243 Bug: angleproject:4720 Bug: angleproject:6123 Bug: angleproject:6652 Bug: angleproject:7144 Bug: angleproject:7227 Bug: chromium:1224996 Change-Id: I333ed6d76dfa2916b713ccb49127deceb5b1b551 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3634728 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yiwei Zhang e316203a 2022-05-07T21:31:52 Vulkan: add forceContinuousRefreshOnSharedPresent feature Android EGL wrapper filters EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID, making it impossible for angle to provide an implementation for EGL_ANDROID_front_buffer_auto_refresh. Thus angle currently is only able to choose demand refresh for swapcahin present mode. This change adds a feature to force angle to create the swapchain with continuous refresh mode without affecting angle internal tracking for shared present. This feature will be enabled on integrations without the auto_refresh hint passthrough to angle, as well as before the platform allows angle to implement EGL_ANDROID_front_buffer_auto_refresh on its own. Bug: b/229267970 Test: angle_end2end_tests --gtest_filter="EGLSingleBufferTest*" Test: smooth draw with gpu accelerated low latency stylus in ChromeOS Change-Id: I29d72830d4e3d9fd5cdd44b8e1ce51fd7d9789fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3633358 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 333da2cf 2022-05-03T16:21:41 Vulkan: Limit the total bytes of suballocation garbages in flight This CL tracks the total number of bytes of suballocation garbage. It checks against the limit so that when there are excessive garbages in flight, we will wait for GPU to finish and free up some of these memory before continue. That way we will ensure we do not end up accumulating too much memory and end up with low memory kill on mobile devices. Bug: b/230538246 Change-Id: Ic8292db5617bcee4ec3abe8632f54edfd249cfaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3617226 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 51dc3c3e 2022-05-02T18:11:26 Vulkan: Force prune when there are lots of suballocations destroyed If there are a lot of suballocations destroyed, there is bigger chance that some buffers become empty and we might able to trim down excessive empty buffers. This CL tracks the suballocations destroyed at each cleanupGarbage call and use that information to force immediate pruneEmptyBuffers call. Bug: b/230538246 Change-Id: Icca2ea731639545c635c09d58a8606d67405e1a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3620981 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 5113ae8e 2022-04-29T22:42:59 Vulkan: Explicitly enable per-sample shading if `sample` used The Vulkan spec is not explicit about the `Sample` decoration implicitly enabling per-sample shading. While this is being corrected in the spec, the ARM Vulkan driver does not have this implicit behavior. A workaround is added such that the usage of the `sample` qualifier is reported, and used to explicitly enable per-sample shading through the API. Bug: angleproject:6876 Change-Id: Idb8345aacdcfa45cb37fefcd30aa5405168d21e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615738 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi c7a9f0c6 2022-04-27T16:20:51 Vulkan: Remove syncval suppressions no longer triggering Bug: angleproject:6422 Bug: angleproject:6424 Bug: angleproject:6566 Change-Id: If4d6cf097108f71732d093f3debfc30475a3c90c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3612183 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3eb2bcf7 2022-04-27T16:13:04 Vulkan: Fix syncval errors with DONT_CARE for unused attachments DONT_CARE is a write operation for synchronization purposes. ANGLE doesn't synchronize depth/stencil attachments that are not written to, as it uses the read-only layout. This change makes sure LOAD/STORE_OP_NONE are used instead of DONT_CARE for attachments that are not used, even if they don't have defined contents. This allows ANGLE to continue to not do additional synchronization. Bug: angleproject:5371 Bug: angleproject:5962 Bug: angleproject:6411 Bug: angleproject:6584 Change-Id: I539379aa34f6655f00e798e8c4a5c57f40f7a12d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3612182 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 2a6e123b 2022-04-27T15:27:46 Vulkan: Move pruneOrphanedBufferBlocks to last RendererVk::cleanupGarbage() should call pruneOrphanedBufferBlocks() after clean up mSuballocationGarbage, so that we will be able to find the orphaned buffer block being empty if mSuballocationGarbage actually made it empty. Bug: chromium:1318110 Change-Id: I0cc6e45c192f406e7bbb15c7427d30e06208dd06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3611648 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 266111a5 2022-04-22T21:52:19 Vulkan: Fix SemaphoreCount best practice warning Bug: angleproject:7231 Change-Id: Ifd02084887aca44aade96474a45f3060b276226e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3603701 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3b65b803 2022-04-27T11:04:22 Vulkan: Work around Qualcomm imprecision with dithering On qualcomm, sometimes the output is ceil()ed instead of round()ed. With ditering emulation affecting values, some dEQP tests fail due to the excessive change in value when dithering bumps the value slightly over to the next quantum. In this change, a workaround is added to round() the value before outputting it. Bug: angleproject:6953 Change-Id: Iae7df5ca20055b4db3185c6153f3c0bf4ba07f68 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3611064 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 02b96848 2022-04-21T16:32:31 Vulkan: Add support for GL_QCOM_shading_rate Layer GL_QCOM_shading_rate over VK_KHR_fragment_shading_rate Test: ShadingRateQcomTest* Bug: angleproject:7172 Change-Id: I3f040dbfad3906facd4349937fed2ce9a464b824 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3599874 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Ian Elliott 64fa5eda 2022-04-22T09:59:57 Suppress VVL UNASSIGNED-BestPractices-SemaphoreCount Bug: angleproject:7231 Change-Id: I2072e5ba5937342452889c370bab4da094cde2f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600153 Auto-Submit: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Charlie Lao 3b38b379 2022-04-20T10:44:24 Vulkan: Add feature avoid HOST_VISIBLE and DEVICE_LOCAL combination Discrete GPUs device local memory usually is not CPU accessible. This adds a feature flag to control that. Fixed bug in BufferVk that when mapRangeImpl is called from angle internal, unmapImpl was using front end mapping parameters that is incorrect. We have to cache the mapping parameters in the backend to hangle the mapRangeImpl/unmapImpl calls from internal. Fixed the test bug in ComputeShaderTest.BufferImageBufferMapWrite that we are calling glMapBufferRange with GL_MAP_READ_BIT but are actually writing to the map pointer. This should result in undefined behavior per spec. Fixed the test bug in GLSLTest.* that VerifyBuffer calls glMapBufferRange, but was giving incorrect length which result in data only been partially copied. This bug was hidden due to previously all buffers are CPU accessible and there is no copy needed. Fixed the test bug in ReadPixelsPBOTest.* and ReadPixelsPBONVTest.* that calls glMapBufferRangeEXT, but was giving incorrect length which result in data only been partially copied. This bug was hidden due to previously all buffers are CPU accessible and there is no copy needed. Added new skipped syncval messages. Because this CL triggers a copyToBuffer call for some of the buffers and that changes the syncval message signature for the same reasons (i.e, feedback loop or synval does not know the exact range of buffer been used for vertex buffers etc). Bug: angleproject:7047 Change-Id: I28c96ae0f23db8e5b51af8259e5b97e12e8b91f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3597711 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Alexis Hetu dc1b7029 2022-04-20T15:41:40 Disable MSAN in the Vulkan loader When trying to reproduce MSAN errors locally, a number of MSAN errors pop up inside the Vulkan loader. This CL disables MSAN checks around function calls which end up inside the Vulkan loader, which similarly had been done for LSAN before, and allows local MSAN builds to reach actual MSAN errors inside SwANGLE. Bug: chromium:1313907 Change-Id: I8c0b841f03ce57cecb01e34b4f6edab398d2924e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3598011 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Shahbaz Youssefi fcec6904 2022-04-13T14:18:06 Generate feature variable names from display names The json file now only contains the feature display name. The variable name is automaticaly derived. For consistence with Chromium and other Chromium-based projects, the display name is now always snake_case, and that's what's specified in the json files. This also makes camelCase variable name generation trivial (as opposed to the other way around). Feature overrides now accept both snake_case and camelCase names to ensure compatibility with existing scripts. This is done by removing _ and comparing override names with feature names in lower case. Bug: angleproject:6435 Change-Id: I0b6ed2bbf5c312bc4f4be7b3c7d55dbaca2a9886 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3584630 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>