src/libANGLE/renderer/vulkan


Log

Author Commit Date CI Message
Mohan Maiya 53abcf15 2022-10-25T15:26:44 Vulkan: Bug fix in supportsTimestampSurfaceAttribute Move the initialization of "vkGetPastPresentationTimingGOOGLE" and the assert check to after vkDevice creation. Bug: angleproject:7489 Change-Id: I1ef50d64af3bea44a182be95dd182532b2c60d36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3979994 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill a41c6173 2022-10-16T08:28:53 Simplify trace test names. Originally we had a lot of conditionally enabled test configs in angle_perftests, that we enabled behind a flag because the total runtime would be too large if we left everything enabled. This CL switches to using a single test set, one for each trace, and using a the same command-line API we use in dEQP and the ANGLE samples to pick a single configuration. This makes it easier to pick exactly what configurations you want from the command line. Because we only run one configuration each time, we don't need to specialize the test name to include the configuration info. We can also simplify TracePerfTest -> TraceTest since these tests are run for both perf and correctness. Old name: TracePerfTest.Run/vulkan_trex_200 New name: TraceTest.trex_200 Example for tests that don't use default arguments: Old args: --enable-all-trace-tests Old name: TracePerfTest.Run/native_offscreen_trex_200 New args: --use-gl=native --offscreen New name: TraceTest.trex_200 Bug: angleproject:7755 Change-Id: Id93cf5725eff2e2c6b3b14804bc2902f38306e7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3966535 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi adde4265 2022-10-19T23:33:48 Vulkan: Separate pipeline cache query and insertion In preparation for VK_EXT_graphics_pipeline_library usage, the query and insertion functions of the graphics pipeline cache are separated. This will allow the implementation using VK_EXT_graphics_pipeline_library to query the monolithic pipeline cache, and if a pipeline is not found, create it through the pipeline library caches. Bug: angleproject:7369 Change-Id: Iebf7669ae3ea95e180646198c4861cc59d67e580 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963854 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 5c0b329e 2022-10-19T16:59:58 Vulkan: Clean up rotation spec const update Update during makeCurrent was done by invalidating the program, and then at pipeline creation time the spec const was updated. This is changed so that makeCurrent updates the spec const directly, and avoid invalidating the pipeline. Also removes spec const usage calculation, as it's unused. Bug: angleproject:7369 Change-Id: I79444ce4173c4db9c6800fb02afd9e8447a25f82 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963853 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Sungyong Choi c6390143 2022-10-12T09:57:55 Vulkan: Make compatible with GCC Resolves below warnings occurred with GCC build. 1) deperecated-copy Overriding an assignment operator without a copy constructor caused the deprecated-copy warnings. 2) unused-function 3) parenthesis Warnings occurred due to missing parenthesis around some logical expressions, add them to quiet the warnings. 4) unused variable 5) 'maybe-unused' attribute ignored Introduces 'ANGLE_MAYBE_UNUSED_PRIVATE_FIELD' macro to avoid 'attribute ignored' warning which is only occurred with GCC because GCC doesn't warn about 'unused non static data member' whereas Clang has Wno-unused-private-field. Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> Bug: angleproject:7764 Change-Id: I8e7410a5ed8cb9b8f8b3202073d779fea63d6b75 Reviewed-by: Jeff Vigil <j.vigil@samsung.com> Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963830 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7b4b56f0 2022-10-19T00:05:22 Vulkan: Missing output mask in GraphicsPipelineDesc Currently, there's some program state used in creating pipelines alongside what's in GraphicsPipelineDesc. This works because the pipeline cache lives in the program executable. With VK_EXT_graphics_pipeline_library however, we could create vertex input and fragment output partial pipelines that are independent from and are shared between multiple programs. To support this, any program state that's necessary for pipeline creation should be part of the GraphicsPipelineDesc structure. This change places the state affecting fragment output in GraphicsPipelineDesc. Bug: angleproject:7369 Change-Id: I2e48fc9da220475e1b2ed376fc947ce13489610e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963652 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi f0e3d8f9 2022-10-18T13:51:31 Vulkan: Shader component type in GraphicsPipelineDesc Currently, there's some program state used in creating pipelines alongside what's in GraphicsPipelineDesc. This works because the pipeline cache lives in the program executable. With VK_EXT_graphics_pipeline_library however, we could create vertex input and fragment output partial pipelines that are independent from and are shared between multiple programs. To support this, any program state that's necessary for pipeline creation should be part of the GraphicsPipelineDesc structure. This change places the state affecting vertex input in GraphicsPipelineDesc. A follow up change will do the same for state affecting fragment output. Bug: angleproject:7369 Change-Id: Iccf691a1597d786efa1625f7b1c22f906201f2e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3964751 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 025504b9 2022-10-17T17:03:03 Pass worker pools to image load functions In preparation for the ASTC decoder using threaded decoding. Bug: b/250688943 Change-Id: I70d669bcb57b900dbb633304182e174aec362203 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3961339 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Greg Schlomoff <gregschlom@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi fbd7d5fa 2022-10-17T17:20:09 Move thread pool classes to common/ In preparation for access by image_util files. Bug: b/250688943 Change-Id: I24777269a5071eae9a60f939635d01ed7246461f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3961454 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b521be4c 2022-10-14T23:09:26 Vulkan: Decouple shader-set from pipeline caches In preparation for VK_EXT_graphics_pipeline_library, where different pipeline caches (for the complete pipelines and the shaders subset partial pipelines) may create pipelines from the same shader set, the pipeline caches are pulled out of ShaderProgramHelper. In an upcoming change, ProgramExecutableVk will have more than one GraphicsPipelineCache instance, both creating pipelines through the same ShaderProgramHelper. The pipeline creation methods in ShaderProgramHelper are now const. This means a thread would be able to create pipelines using an object of this class while the main thread creates other pipelines using the same object, but in a different pipeline cache. Bug: angleproject:7369 Change-Id: Ib8a76dedf1105ba9dfcad9e972157c92ba18e349 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956944 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 09b079bb 2022-10-14T14:28:10 Vulkan: Move pipeline subset out of pipeline desc This way, the same pipeline desc can be used to query multiple caches with different subsets. This design requires the pipeline cache to be templated, while the previous design required the desc to be copied (so the subset bits would be different). Bug: angleproject:7369 Change-Id: Id3fd92e6f9b059069952ff092a5c867e79287604 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956940 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi eaa71709 2022-10-14T11:47:07 Vulkan: s/ContextVk/Context in pipeline creation With VK_EXT_graphics_pipeline_library, pipeline creation may happen on a thread. This change prepares the interface such that only a vk::Context is needed, instead of ContextVk. Bug: angleproject:7369 Change-Id: Ib7e9e7e140e27a4af71bffee069c88e3d7f47dfa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956935 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
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 19fb11b6 2022-10-14T11:12:20 Vulkan: Merge warmed up compute cache into renderer It was done for graphics, but was accidentally missing for compute. Bug: angleproject:5881 Bug: angleproject:7629 Change-Id: I28a4c2e38b07b08e1636b443f2c0963130965ebb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3956496 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
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>
Shahbaz Youssefi 94b45181 2022-10-12T14:54:14 Vulkan: Rearrange graphics pipeline desc bits In preparation for use of VK_EXT_graphics_pipeline_library, the pipeline state is split in three contiguous regions: - Vertex input - Pre-rasterization and fragment stages ("Shaders" for short) - Fragment output There is some state that affects both Shaders and Fragment output, which is split and placed in between the two. This will allow the hash and compare functions to eventually access each of those pipeline subsets as a contiguous piece of memory. Bug: angleproject:7369 Change-Id: Iedc4cf15ed6c7fed6ba93039889fbf5dd191e041 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949914 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
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>
Shahbaz Youssefi 135022e4 2022-10-11T00:03:11 Vulkan: Create robust pipelines based on context state Previously, pipelines were made robust based on whether any context in the share group has so far been made robust. This means that pipelines created on non-robust contexts would still be compiled as robust. Inefficiency aside, this was buggy because robustness was not part of the pipeline cache key, so if a pipeline was created as non-robust first, then recreated in a robust context, it would reuse the non-robust variant. With VK_EXT_pipeline_protected_access, a similar situation arises for context protected-ness. However, it is incorrect in that case to create pipelines as protected unnecessarily. This change makes pipeline robustness a part of the pipeline cache key, in preparation for protectedness to be added similarly. Compute programs may now generate multiple pipelines as a result too. Bug: angleproject:7629 Change-Id: Ie95f10eff878f8c8b221c1018da44385c7aad15e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3943534 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 9b5fff82 2022-10-05T21:56:00 Vulkan: Emulate shader stencil export for MSRTT The MSRTT emulation code had one corner case issue that could lead to performance and memory inefficiencies. That is when stencil needs to be unresolved and VK_EXT_shader_stencil_export is not supported. This change adds a path to emulate VK_EXT_shader_stencil_export and removes this inefficiency. This should help Chromium on older Android devices that lack both this and the recent VK_EXT_multisampled_render_to_single_sampled extensions. Chromium frequently breaks the render pass (crbug.com/1336981), which easily leads to this situation. Bug: angleproject:4836 Change-Id: Ifceec43f7f3807b7e32f4b379edcd4351ae76414 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3935892 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 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>
Amirali Abdolrashidi c19ec948 2022-08-23T10:43:59 Vulkan: Implement imageless framebuffers * Added the attachment image and create info objects to be used for imageless framebuffers created in getFramebuffer(). * New helper class for framebuffers in RenderPassCommandBufferHelper: MaybeImagelessFramebuffer, which includes a framebuffer object, if the framebuffer is imageless, and the image views. This is to make sure that the args for render pass begin info will be correctly set up according to the status of the used framebuffer. * Refactored the collection of attachments in getFramebuffer() into a new function, getAttachmentsAndImagesFromRenderTargets(). It also returns their corresponding ImageHelper* objects used to create the framebuffer (from their image properties). * New struct: RenderTargetInfo; which keeps track of render targets and whether resolve image should be used for the render pass in the form of the enum class RenderTargetImage. * Added a new arg to getFramebuffer(): resolveRenderTargetIn; to use when there is a valid resolveImageViewIn. * Without using the framebuffer cache, we would require to handle the framebuffer destruction by adding it to the garbage instead of releasing it. For example, FramebufferVk::destroy() now adds mCurrentFramebuffer to the garbage. * Added new framebuffer unit tests. * Added tests where two textures with different attributes are bound to the same framebuffer before drawing, one after another. * Added test where a blit occurs from a multisample texture into a non-zero level of a resolve texture, each bound to a separate FBO. * Added a new perf test to compare performance for enabled imageless framebuffers vs disabled. (Credit: cclao) Bug: angleproject:7553 Change-Id: Iacdbd73aaa01cbb0e37abf01ae4892bdfdd4b12f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827644 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 4ebdac79 2022-08-29T16:25:46 Vulkan: Ensure we sync the draw FB before beingQuery. Bug: chromium:1354271 Change-Id: I5fe3649d9d39de37d0a59c80a4f31a17d1a72838 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3863145 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@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>
Le Hoang Quyen d64c54e3 2022-09-26T21:25:18 D3D11: Make DebugAnnotator11 thread safe. Bug: chromium:1366778 Change-Id: I50662895be8ec40de4ded8c4f84bde59ae40e98b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3917936 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Amirali Abdolrashidi 06d0389a 2022-10-04T19:26:48 Remove leftover code regarding render pass serial * Removed the render pass serial reset in the function where the current framebuffer is released. (left over from a prior CL.) Bug: angleproject:7553 Change-Id: I61b4a12ac8957f6e1dcd4bf0f4e233c068736dff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3931901 Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7d10d160 2022-09-29T23:31:40 Vulkan: Fix VK_EXT_pipeline_robustness vs compute Robustness was not specified for compute. Bug: angleproject:5845 Change-Id: I3f3b1e90cc4e965ff4cfcd569587caa952e5eaa2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3924871 Reviewed-by: Alexis Hétu <sugoi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 5d7c4eca 2022-10-02T02:27:27 Vulkan: Don't flush depth/stencil on color blit When syncing the read framebuffer for blit, deferred clears are picked up for the attachments that are not being synced. They are then redeferred so a future command would pick them hopefully as loadOp. This change improves the frame time of Pretty Derby on Pixel 6 by ~23%. Bug: angleproject:7727 Change-Id: Ie7d84c58315cd09204e5229f1ec73605d5a7f639 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3931973 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1d73bad5 2022-10-01T22:50:48 Vulkan: Fix reclear of rendered-to depth/stencil An optimization drops re-clears of images to the same value. When a render pass does: - clear - render - store the "cleared" status of the image was removed because at the end of the render pass, the image no longer has the cleared value. However, this was mistakenly only done for color, but should have been done for depth and stencil as well. Bug: b/239430388 Change-Id: Ib99e0df460eaa82ce87b593276abd9b07f0a8375 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3931972 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: 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>
Constantine Shablya ff7aa214 2022-09-29T19:56:28 GL_PALETTE* sampling Implement GL_PALETTE* formats by decoding them into a R8G8B8A8_UNORM image at load time. Test: angle_end2end_tests --gtest_filter="PalettedTextureTest.*" Bug: angleproject:7599 Bug: angleproject:7688 Bug: angleproject:7710 Change-Id: I94d51e2c480fcdd39f1a0ad241b311d3b4de1579 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3863251 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Constantine Shablya <constantine.shablya@collabora.com>
Yuxin Hu 053c6a06 2022-09-20T15:17:28 Vulkan: Add more tests for attachmentless framebuffer This CL adds below test scenarios for attachmentless framebuffer: 1. Create first attachmentless framebuffer with larger size, and create second attachmentless framebuffer with smaller size. 2. Create an attachmentless framebuffer with smaller size, and grow its default width and height. 3. Create an attachmentless framebuffer with larger size, and shrink its default width and height. 4. Create an attachmentless framebuffer with larger size, given it an attachment with a medium size, and shrink its default width and height. This CL also splits the test failure bugs on different vendor and renderer to different bug tickets. This CL addresses a bug on vulkan backend: only skip onFramebufferChange() if the framebuffer has at least one attachment, and mCurrentFramebufferDesc equals to priorFramebufferDesc. Otherwise in test scenario 2 and 3 above, we will use the wrong scissor size, because the FramebufferDesc remains the same before and after changing the default width and height, and we will wrongly skip onFramebufferChange() where we update scissor area to match with the new default width and height. Bug: angleproject:7666 Bug: angleproject:7697 Bug: angleproject:7699 Bug: angleproject:7700 Bug: angleproject:7705 Change-Id: Ieb143b27f8c1a229dab8f43d0a16e3e871185941 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3908332 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d524157f 2022-09-28T23:16:02 GLES1/Vulkan: Don't validate SPIR-V as VVL does the same Improves TexCombine runtime by ~15%. Bug: angleproject:6644 Change-Id: I01f580fef0caa91ebf600cfc0bbbeca1aa20eb06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3926037 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 1abeeaae 2022-09-28T12:22:58 GLES1/Vulkan: Remove double SPIR-V validation assertion The SPIR-V transformation is validated on program link because many tests link programs but don't draw with them. This helps catch bugs. However, GLES1 programs are always created right before draw, so the SPIR-V transformer will definitely be run on them. The link-time validation is thus unnecessary. This change disables the latter on GLES1, which cuts down the TexCombine test run time by about 10%. Bug: angleproject:6644 Change-Id: Idb9d229fc08bf746f933fa8924fa67e5426f87a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3926036 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi b9cd542e 2022-09-15T17:31:35 Vulkan: Use serial to check which FBO has open RP In preparation for the scenario where an imageless framebuffer is shared, checking whether the started render pass belongs to a certain framebuffer is tweaked to use a serial-based method instead of checking the framebuffer handle. * Added the last render pass serial to ContextVk, which increments every time a render pass begins. The serial is also stored in the FramebufferVk object invoking it. * Added the type RenderPassSerial for this purpose. * Serials are generated through a serial factory in ContextVk. * Updated hasStartedRenderPassWithSerial() to match the serials instead of the handles. * Removed the getFramebuffer() calls from FramebufferVk and UtilsVk that are now unused. Bug: angleproject:7553 Change-Id: Id60dcbf7973558d35e55ff4af4c71e50c6853bba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3897970 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@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>
Constantine Shablya e82eaff9 2022-09-22T16:01:06 Stubs for paletted images Bug: angleproject:7599 Change-Id: Idb49f8ba07ebd3b6cad461fa9e90b856af666183 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3909396 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Constantine Shablya <constantine.shablya@collabora.com>
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>
Shahbaz Youssefi 2b4699ad 2022-09-21T12:19:20 Vulkan: Fix validation error with unset-logic-op in UtilsVk Bug: angleproject:7654 Change-Id: Ie4da045a30fdd12eedd910ade3cb5ffe95e2c9a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3909791 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: 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>
Jeff Vigil a6edb43f 2022-09-19T07:39:38 Vulkan: Fix native ID for GBM configs Remove default value. EGL_NATIVE_VISUAL_ID for GBM configs is handled in GetNativeVisualID as of commit f54e7ee69c331f0. Bug: angleproject:7667 Change-Id: I4168cdc9b406b7d2383bdc611cb04f3494cdbf59 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3905525 Commit-Queue: mohan maiya <m.maiya@samsung.com> Commit-Queue: Jeff Vigil <j.vigil@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 0c7bf627 2022-09-20T10:45:39 Vulkan: Remove static variable from DisplayVkLinux::queryDmaBufFormats + fix the numFormat/Modifier output not set Bug: angleproject:7664 Change-Id: I300710e3ba12f3fb134af4460ef6235eae3e98fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3905327 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
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>
Shahbaz Youssefi 97926f80 2022-09-15T00:10:49 GL: Implement GL_ANGLE_logic_op Enabled only on Desktop GL where logic op is available. Bug: angleproject:7654 Change-Id: I3c17ffb5b21abf31aec247319a625526f1bec37d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3898316 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuxin Hu 0fefbe83 2022-09-14T15:20:00 Vulkan: Do not cache the FramebufferHelper with no attachment If two FBOs don't have any attachments, and their GL_FRAMEBUFFER_DEFAULT_WIDTH and GL_FRAMEBUFFER_DEFAULT_HEIGHT are different, there is no difference in their cache key (vk::FramebufferDesc). Therefore the Vulkan backend is not able to distinguish between the two FBOs. This can create issues when we 1. create first FBO with a smaller size, renders to it 2. create second FBO with a bigger size, renders to it The second renderpass will use the FBO created in the first renderpass, because it managed to retrieve the first FBO from the cache with the same cachekey. This triggers the vulkan validation error: VUID-VkRenderPassBeginInfo-pNext-02853, saying the render area exceeds the framebuffer size. This CL fixed it by not adding the FramebufferHelper to the cache, if it doesn't have any attachment. These framebufferHelpers are cheap, without cache there should not be much performance drop. Bug: angleproject:3579 Bug: angleproject:7351 Bug: angleproject:7666 Bug: b/246334302 Change-Id: Iddecafddb042bd16401f983f9ee1a021b845d8bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3891543 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: 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>
Mohan Maiya 38c01008 2022-09-13T15:11:54 Vulkan: Fix a cornercase bug when dynamically loading AHB APIs. The commit 122a1cc583f0 enabled dynamic loading of AHB APIs but did not handle the cornercase where some Android system services load "libnativewindow.so" with the RTLD_LOCAL flag. In such cases AHB APIs would not be resolvable through dlsym lookup. Explicitly dlopen "libnativewindow.so" in such cases. Bug: angleproject:7656 Change-Id: Ie74140ad816b756e1afc325d370f26bcb09428ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3894658 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@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 a2f00721 2022-06-19T15:17:22 Vulkan: Extend bounding box when pruning updates Add support for extending the bounding box when there are updates that enclose the current bounding box. Bug: angleproject:4691 Bug: angleproject:7389 Test: Texture2DArrayTestES3.TextureArrayPruneSupersededUpdates* Change-Id: Ie7e3cc28f17213361b1be407dbb2d984865fe6bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3712897 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.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>
angle-autoroll 7369e665 2022-09-12T09:59:17 Roll Chromium from e7211d52993a to 3c60121d064a (1898 revisions) Includes a fix for passing nullptr to memcpy, needed after https://chromium-review.googlesource.com/c/chromium/src/+/3830738 https://chromium.googlesource.com/chromium/src.git/+log/e7211d52993a..3c60121d064a If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/chromium-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 Chromium: https://bugs.chromium.org/p/chromium/issues/entry 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 Changed dependencies * build: https://chromium.googlesource.com/chromium/src/build.git/+log/a802f7afd7..efa2ea67b3 * buildtools: https://chromium.googlesource.com/chromium/src/buildtools.git/+log/8e147cfcf5..a7f5ad05c4 * buildtools/linux64: git_revision:00b741b1568d56cf4e117dcb9f70cd42653b4c78..git_revision:b4851eb2062f76a880c07f7fa0d12913beb6d79e * buildtools/mac: git_revision:00b741b1568d56cf4e117dcb9f70cd42653b4c78..git_revision:b4851eb2062f76a880c07f7fa0d12913beb6d79e * buildtools/third_party/libc++/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git/+log/0bcb3f7dbb..60f90783c3 * buildtools/third_party/libc++abi/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git/+log/6285577a9d..5c3e02e92a * buildtools/third_party/libunwind/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git/+log/42aa6de554..60a480ee18 * buildtools/win: git_revision:00b741b1568d56cf4e117dcb9f70cd42653b4c78..git_revision:b4851eb2062f76a880c07f7fa0d12913beb6d79e * testing: https://chromium.googlesource.com/chromium/src/testing/+log/0749f30ea7..f76677edac * third_party/abseil-cpp: https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp/+log/d8ee101941..200c7ed65e * third_party/android_build_tools/bundletool: qqdjz9M6hbP7D7jMsRGwpvibSWdEJn1Tnm-R3B6M6bEC..IEZQhHFQzO9Ci1QxWZmssKqGmt2r_nCDMKr8t4cKY34C * third_party/android_deps: https://chromium.googlesource.com/chromium/src/third_party/android_deps/+log/efda6e3f14..cf9befc4c4 * third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/{catapult_..861067db62 * third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+log/600fdf58c9..2d25dbd149 * third_party/fuchsia-sdk/sdk: version:9.20220902.1.1..version:9.20220912.0.1 * third_party/r8/d8: ODjYnRPfjz6Ml42YJB5QKVfn7qaVLKdc-eZ01g3enDcC.._g2g6FSXHfosnO9NWkIZJwr76tobLOVx2AG7QNdfpvsC * third_party/zlib: https://chromium.googlesource.com/chromium/src/third_party/zlib/+log/9f4113d3ba..05e137d33c * tools/clang: https://chromium.googlesource.com/chromium/src/tools/clang.git/+log/06b66e0116..2a5ebae0f7 * tools/luci-go: git_revision:3226112a79a7c2de84c3186191e24dd61680a77d..git_revision:c93fd3c5ebdc3999eea86a7623dbd1ed4b40bc78 * tools/luci-go: git_revision:3226112a79a7c2de84c3186191e24dd61680a77d..git_revision:c93fd3c5ebdc3999eea86a7623dbd1ed4b40bc78 * tools/mb: https://chromium.googlesource.com/chromium/src/tools/mb/+log/092b87beee..52ce428d8a * tools/perf: https://chromium.googlesource.com/chromium/src/tools/perf/+log/e68727adf5..386c784a62 * tools/skia_goldctl/linux: BcL4zQgD0tZoFzhWm37NnERAPLdbeERfbY_SSBQ3ba4C..XXyhhDL9TuGs6KyzXXakE4eaVnpYMXz8DKbnU5Ew3aAC * tools/skia_goldctl/mac_amd64: 8DiQ6WFPrEn56-jwyQmU4EMXFvf7_-8SYjVD2hHHmZMC..FyHlZdO9A-oMbWsU1rxpkz2dOtU4aOPBSJx9YQF_CLoC * tools/skia_goldctl/mac_arm64: lJ8l4RCPxwrg_f-Z9Lnu3Ma3uRlbRbAcdQA7xwpIzNUC..K3uVqbmFCdJI0hGDotZSM9kPdXQNp7oIGy7pykJInqAC * tools/skia_goldctl/win: 1l0XEVvr2qVUdGYrjLN9Gkt6qfv8KsXM52B8MKDShmEC..DCjjZXPp2-aMyq92DomOu_HdsBScNrumV-n3sIRYCfAC Clang version changed llvmorg-16-init-3375-gfed71b04:llvmorg-16-init-4141-gf48931f3 Details: https://chromium.googlesource.com/chromium/src/tools/clang/+/06b66e0116fd0f48b85f522eb39f543fb641db5c..2a5ebae0f797d7ad1f27d7f20bd926ce76c29411/scripts/update.py Bug: angleproject:7626, angleproject:7649 Change-Id: I1600219f412b421de6c8a63836e34d15ff0004c1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3890101 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 313956f2 2022-09-07T10:15:10 Vulkan: Don't store EGLSyncVk::mAttribs as a const ref. EGLSyncVk::mAttribs is a stack allocated variable in the parent scope. Its usage is currently safe because it is only used in EGLSyncVk::initialize but it is dangerous to have this member present. Bug: angleproject:7637 Change-Id: Idaf2f1a0306e55a5fe00e55c9e72cd71005e3dce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3876889 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
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>
Peng Huang 79aa846e 2022-08-17T13:40:33 Reland "Not recreate Framebuffer for eglMakeCurrent() call" This is a reland of commit bf9c815263455403e587a9d2b0fdb9fb8e964208 Original change's description: > Not recreate Framebuffer for eglMakeCurrent() call > > Right now, in eglMakeCurrent() call, ANGLE always release the > default framebuffer object associated to the current context, > and create a new default framebuffer object for the new current > context. It impacts chrome performance, since chrome call > eglMakeCurrent() a lot. With this CL, the default framebuffer > will be created with gl::Context. When the surface is changed > by eglMakeCurrent() call, ANGLE will detach the previous surface > from the associated framebuffer, and attach the new surface to > the next current context's default framebuffer. > > Bug: chromium:1336126 > Change-Id: Iaa747669250ae250245db383a716b4634df59ea4 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751 > Commit-Queue: Peng Huang <penghuang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: chromium:1336126 Change-Id: Iade19004a4335ac7bc6ca176a3c14d34afff8c9e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877405 Auto-Submit: Peng Huang <penghuang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Peng Huang 02e8497f 2022-09-07T01:12:31 Revert "Not recreate Framebuffer for eglMakeCurrent() call" This reverts commit bf9c815263455403e587a9d2b0fdb9fb8e964208. Reason for revert: compile errors https://ci.chromium.org/ui/p/chromium/builders/try/linux-chromeos-rel/1303510/overview Original change's description: > Not recreate Framebuffer for eglMakeCurrent() call > > Right now, in eglMakeCurrent() call, ANGLE always release the > default framebuffer object associated to the current context, > and create a new default framebuffer object for the new current > context. It impacts chrome performance, since chrome call > eglMakeCurrent() a lot. With this CL, the default framebuffer > will be created with gl::Context. When the surface is changed > by eglMakeCurrent() call, ANGLE will detach the previous surface > from the associated framebuffer, and attach the new surface to > the next current context's default framebuffer. > > Bug: chromium:1336126 > Change-Id: Iaa747669250ae250245db383a716b4634df59ea4 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751 > Commit-Queue: Peng Huang <penghuang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: chromium:1336126 Change-Id: I7c07f62236f57523b29c536c04f9a9de79da2f4b No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877404 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Peng Huang <penghuang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@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>
Shahbaz Youssefi 9c17232a 2022-09-02T16:05:48 Vulkan: Make robustness affect all of share group Since contexts in a share group can share their program, if any context in the share group is robust, programs in all contexts in the share group need to be created with robustness in mind. This fixes the situation when the programs are created after a robust context has been created. However, if programs are created first, then a robust context is added to a share group, there remains a bug where the old programs aren't recreated to have robust behavior. Bug: angleproject:7629 Change-Id: I4922091962a32ca75a6107343df0cd87e5e9592d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3872506 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@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>
Peng Huang bf9c8152 2022-08-17T13:40:33 Not recreate Framebuffer for eglMakeCurrent() call Right now, in eglMakeCurrent() call, ANGLE always release the default framebuffer object associated to the current context, and create a new default framebuffer object for the new current context. It impacts chrome performance, since chrome call eglMakeCurrent() a lot. With this CL, the default framebuffer will be created with gl::Context. When the surface is changed by eglMakeCurrent() call, ANGLE will detach the previous surface from the associated framebuffer, and attach the new surface to the next current context's default framebuffer. Bug: chromium:1336126 Change-Id: Iaa747669250ae250245db383a716b4634df59ea4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
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>
Shahbaz Youssefi ba721efd 2022-09-02T17:51:56 Vulkan: FIx Android AHB format mapping If the implementation returns VK_FORMAT_UNDEFINED as the format, choose the format based on native pixel format. Bug: b/223456677 Change-Id: Ifc8fd1f72a4fad7279473a300c11cd6597c32a70 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3872509 Reviewed-by: Jason Macnak <natsu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Eddie Hatfield 3960e63b 2022-08-09T14:02:59 Infra: Enable angle_deqp_gl46_tests on SwiftShader This change disables the WGL frontend by default on Windows when building ANGLE for desktop GL. This is because the WGL frontend is not yet fully implemented and it causes some of the trace tests to fail. The WGL frontend should be enabled by default on windows when more of its functionality gets implemented. Test: angle_deqp_gl46_tests --use-angle=swiftshader Bug: angleproject:7566 Bug: angleproject:7628 Change-Id: I69c695eb56d3858f715eeb86d28cc805e25c60eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3858142 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
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>
Charlie Lao d9f5b2f8 2022-08-31T13:00:00 Vulkan: Dont skip texture upload if only color space differs sRGB color space does not affect actual data storage, it only affects Image data interpretation. We should still allow data copy if the only format difference is sRGB bit. Bug: b/205995945 Change-Id: Id72b9aae626ee0d1863cde17388f1c1e82f321f8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3864050 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill ae7481a6 2022-08-31T10:56:58 Move entry point classifier helpers into angle_common. These were previously hidden in DebugAnnotatorVk. They're also useful in the frame capture code. Bug: angleproject:7621 Change-Id: If443e41787019925e84f6a108809af1db220b714 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3868930 Auto-Submit: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuxin Hu f2f17bad 2022-08-31T17:40:22 Vulkan: Fix Framebuffer Fetch Test Failure If permanentlySwitchToFramebufferFetchMode is enabled, mIsInFramebufferFetchMode will remain true. If we switch from a non-framebuffer fetch program to a framebuffer fetch program, the condition if (mIsInFramebufferFetchMode != hasFramebufferFetch) doesn't hold, and we will miss setting the dirty bit in OnColorAccessChange, and miss updating the color attachment resourceAccess value. This causes test failure when running the test FramebufferFetchES31.DrawNonFetchDrawFetchInStorageBuffer_Coherent. The color attachment resourceAccess remains unused after the first draw call that uses a program which doesn't read/write from the framebuffer color attachment. The second draw call uses a program that needs to read from the framebuffer color attachment, however, since the color attachment access value is unused, it will use LoadOpNone, making the color attachment value not availble for the shader program to read from. This change fixes the failure by setting the bit dirty whenever the program uses framebuffer fetch mode, given the condition that feature permanetlySwitchToFramebufferFetchMode is enabled. Bug: angleproject:7583 Change-Id: I240381766d75f6e73ea9c20503b2344cc816cbc7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3864127 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Charlie Lao c6ad305c 2022-08-25T11:53:46 Vulkan: No depth load/store if depthFunc==ALWAYS/NEVER && mask==FALSE If depthFunc is set to always or never pass with depthMask disabled, and the entire render pass is drawing with that state, then there is no need to load or store depth value. Bug: b/243711628 Change-Id: I71d470bda49abc48a4a6e20895b7e056c33fa33a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3858143 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@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>
Yiwei Zhang e9cb83dd 2022-08-27T06:20:20 Vulkan: disable EGL_EXT_image_gl_colorspace sRGB texture upload for AHB backed external storage is broken. Disable EGL_EXT_image_gl_colorspace until that gets fixed. Bug: b/205995945 Test: SingleLayer_ColorTest_GpuSampledImageCanBeSampled_*_UNORM_sRGB Change-Id: I1be51f9f3528cd864709cf48ab0d949bb23cdfca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3859694 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Lingfeng Yang c8b0caf1 2022-08-29T15:08:22 Vulkan: Don't try to guess format mapping Either the implementation should tell us what Vk format it is, or it returns VK_FORMAT_UNDEFINED and we should take the "YUV" path, regardless of how un-YUV-like the format ID enum suggests it is. Bug: b/223456677 Change-Id: I979e9d19c466005350aeb8f88f2e0c092b545d51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3864024 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Lingfeng Yang <lfy@google.com>
Shahbaz Youssefi ac19624e 2022-08-26T21:29:53 Vulkan: Handle suboptimal like out-of-date If out-of-date can recreate the swapchain, so can suboptimal. Do so to better support window resizing on desktop. Note that on Android this was already being done. Bug: angleproject:7615 Change-Id: I3d1ce8ca45b002e5382e31fda003f02753a2c94e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3859409 Reviewed-by: Steven Noonan <steven@valvesoftware.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@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>
Yuxin Hu cb618b3d 2022-08-25T13:30:26 Vulkan: Remove useRelaxedPrecision Bug: angleproject:7488 Change-Id: I30ca3e2740d8810a01615ca778eb072d77ad34d9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3856658 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
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>
Shahbaz Youssefi a69e53c5 2022-08-22T16:23:08 Vulkan: Move vertex stride assert Bug: fuchsia:107106 Change-Id: I82c34b5c450f39f2869c8fd6ae938b2cdfc5af13 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3846404 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao b9bc09cb 2022-08-24T13:15:45 Vulkan: Always enable mVirtualBlockMutex Right now this is only enabled if async queue submission is enabled. I think this is a bug that we have to always enable the lock, since suballocation destroy could come from any threads. Bug: b/236098131 Change-Id: I0fda61e5db3ff60f776b8d4917a9f10dafed6b1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3855203 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
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>
Yuxin Hu f10625d3 2022-08-11T14:32:45 Enable Robustness Extension on ARM These dEQP tests failed due to Robustness was disabled: dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#readn_pixels dEQP-GLES31.functional.debug.negative_coverage.log.buffer#readn_pixels dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#readn_pixels dEQP-GLES31.functional.debug.error_filters#case_12 dEQP-GLES31.functional.debug.error_groups#case_12 Re-enable the Robustness Extension on ARM to check if mali driver supports GL_EXT_robustness extension now. If it does we can enable the robustness feature in ANGLE so that the above dEQP tests can pass. Bug: angleproject:7351 Bug: angleproject:4823 Bug: angleproject:2330 Change-Id: Ifce20e410607f2d4b6b3b55235081fef690c983c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3828441 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya b32091b4 2022-08-17T16:00:02 Vulkan: Bug fix related to pre-rotation code Account for possiblity that the draw and read surfaces are different when querying pre-rotation information. When updating mCurrentRotationDrawFramebuffer and mCurrentRotationReadFramebuffer, make sure to query pre-rotation information from current draw and read surfaces. Bug: angleproject:7581 Test: FramebufferTest_ES3.BlitWithDifferentPreRotations* Change-Id: Ibe7a2450907e53aa5c33e13cff00059ab2f6602e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3836491 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>
Lingfeng Yang caf2b427 2022-07-01T18:17:30 Vulkan: Add feature to use PASS_THROUGH for EGL_NONE color spaces This is a temporary solution to fix media tests until ANGLE also has the ability to query the "preferred color space" from Surfaces. Bug: b/235995022 Test: Launch Cuttlefish with this change and the feature enabled with aosp/2167231 Test: cts -m CtsMediaCodecTestCases -t android.media.codec.cts.EncodeDecodeTest Test: cts -m CtsMediaCodecTestCases -t android.media.codec.cts.DecodeEditEncodeTest Change-Id: I17d1a2c1701cd1707b34f5bf2f222e9ad57c7a61 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3770291 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Jason Macnak <natsu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> 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>
Nicolas Capens ad6513fe 2022-08-16T16:06:19 Unconditionally enable EGL_ANGLE_iosurface_client_buffer on macOS EGL_ANGLE_iosurface_client_buffer does not depend on VK_EXT_external_memory_host. Locked IOSurface memory gets copied to/from staging images instead of being imported as device visible host memory. Bug: chromium:1352481 Change-Id: I904e6af53e169ef04446181de91db6f3cdc31530 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3826164 Auto-Submit: Nicolas Capens <nicolascapens@google.com> Reviewed-by: Alexis Hétu <sugoi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>