src/libANGLE/renderer/vulkan


Log

Author Commit Date CI Message
Shahbaz Youssefi c70c329e 2024-01-31T15:59:19 Vulkan: Fix texture copy vs pre-rotation A minor error where the destination offsets were swapped based on source rotation. Bug: b/319336510 Change-Id: I5541f8d0bf0b7306b951d2601c8c27ffedb8470e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5254238 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 82ba79ff 2024-01-08T15:22:59 OpenCL: Update CLtypes.h to cl_types.h This change/enhancement is to keep codebase more consistent since vulkan backend versions of this header use lowercase-snake_case for file name. Bug: angleproject:8501 Change-Id: I223712c72db06425d192ddfe7300e5475c341e38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5233364 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand f8c06f10 2023-11-30T17:45:35 OpenCL: Add types to cl_mem origin and region Now using cl::MemOffset and cl::Coordinate. Bug: angleproject:8439 Change-Id: Id775fe78467d3b56d2a7cc87f793221ab5e04bc5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5078244 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ecc35205 2024-01-25T23:58:25 Move uniform block dirty bits to State When glUniformBlockBinding changes the mapping from a program uniform block to a buffer binding, all contexts in the share group need to reprocess the affected block index. Prior to this change, the dirty bits that indicated which blocks have their mapping redefined were placed in the program executable, and were reset by the first context that processed them. As a result, the other contexts in the share group where not aware of such modifications. Similarly, when a buffer changed in one context, the mapped program blocks were marked dirty, with similar cross-context issues. In this change, the dirty bits are moved to State, so every context would react to these changes. Bug: angleproject:8493 Change-Id: I5712002224cbc4a576bf2ac46e8e75f26ebc5b2a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5238991 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 1abfdc37 2024-01-31T10:24:51 Remove suppression of VVL error Remove the suppression of VVL error VUID-VkFramebufferAttachmentImageInfo-viewFormatCount-09536. This change in ANGLE https://chromium-review.googlesource.com/c/angle/angle/+/5246088 properly fixed the VVL error. Bug: angleproject:7553 Bug: angleproject:8513 Change-Id: Ic866bae689a649fdabfde8e80a882595e2e7947c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5249864 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya 5c2fc02b 2024-01-29T16:49:28 Vulkan: Bugfix in ImageFormat FixedVector::operator[] does not update FixedVector::mSize. Need to call FixedVector::push_back(...) instead. Bug: angleproject:7553 Change-Id: I544a68276d1635957a27d21c222f50f71d35a609 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5246088 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 349e75cc 2024-01-29T16:41:42 Suppress VUID-VkFramebufferAttachmentImageInfo-viewFormatCount-09536 After this VVL change: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+/40d989c436d43538be341cd614a595505ce907cc, the newly added VVL error starts to be thrown on multiple ANGLE bots. Suppress this VVL error to unblock the vulkan-deps roller first. Will investigate later how to fix the VVL error in ANGLE. Bug: angleproject:8513 Change-Id: I7d74ff762c3b78d70c3ba5139c1b6955d4cd49e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5247713 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 0c4d6446 2024-01-24T10:38:45 Rework uniform block <-> uniform buffer mapping In GLES, the shader declares which buffer binding a block (uniform, storage or atomic counter) is bound to. For example: layout(binding = 1) uniform ubo0 { ... }; layout(binding = 2) uniform ubo1 { ... }; layout(binding = 1) uniform ubo2 { ... }; In the above, ubo0 and ubo2 use data from the buffer bound to index 2 (through glBindBufferRange), while ubo1 uses data from the buffer bound to index 1. For uniform blocks in particular, omitting the binding is allowed, in which case it is implicitly bound to buffer 0. GLES allows uniform blocks (and only uniform blocks) to remap their bindings through calls to glUniformBlockBinding. This means that the mapping of uniform blocks in the program (ubo0, ubo1, ubo2) to the buffer bindings is not constant. For storage blocks and atomic counter buffers, this binding _is_ constant and is determined at link time. At link time, the mapping of blocks to buffers is determined based on values specified in the shaders. This info is stored was stored in gl::InterfaceBlock::binding (for UBOs and SSBOs), and gl::AtomicCounterBuffer::binding. For clarity, this change renames these members to ...::inShaderBinding. When glUniformBlockBinding is called, the mapping is updated. Prior to this change, gl::InterfaceBlock::binding was directly updated, trumping the mapping determined at link time. A bug here was that after a call to glProgramBinary, GL expects the mappings to reset to their original link-time values, but instead ANGLE restored the mappings to what was configured at the time the binary was retrieved. This change tracks the uniform block -> buffer binding mapping separately from the link results so that the original values can be restored during glProgramBinary. In the process, the support data structures for tracking this mapping are moved to ProgramExecutable and the algorithms are simplified. Program Pipeline Objects maintain this mapping identically to Programs and no longer require a special and more costly path when a buffer state changes. This change prepares for but does not yet fix the more fundamental bug that the dirty bits are tracked in the program executable instead of the context state, which makes changes not propagate to all contexts correctly. Bug: angleproject:8493 Change-Id: Ib0999f49be24db06ebe9a4917d06b90af899611e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5235883 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3fdf576a 2024-01-26T14:37:42 Vulkan: Workaround Nvidia driver bug with OpSelect Bug: angleproject:8503 Change-Id: I4bd2580056df3d970a1316d0dbeaaad7590aa947 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5237873 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Chris Forbes 6367f541 2024-01-25T10:16:04 Vulkan: supply YcbcrConversionDesc earlier Previously, the AHB import path would allow ImageHelper to build a bogus YcbcrConversionDesc (in initExternal) and then later overwrite it with what it wanted. The intermediate state was not necessarily valid, and could cause assertion failures and VVL errors. Instead, have ImageHelper clients provide the conversion they want upfront. In the non-external case, build an appropriate conversion for formats which need them, before delegating to initExternal. Bug: b/315387961 Change-Id: Icc8f561bb2de0289ceec56d41978b8c4651a47a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5232769 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Brandon Schade e9bd169c 2024-01-24T12:26:46 Vulkan: Fix nullptr in Diagnostics - VK Spec for VkDebugUtilsMessengerCallbackDataEXT says pMessageIdName may be nullptr and pMessage must not be a nullptr - This was enforced by the following change Vulkan: Don't crash on diagnostics with null pMessageIdName - But this was susequently broken by the following change Vulkan: Enable sync validation - This change adds a check to skip accessing callbackData->pMessageIdName if it is null Bug: angleproject:5290 Change-Id: I82dd225d875e233530158013efc280e979f82a5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5238650 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Mohan Maiya ac71a592 2024-01-23T11:56:42 Vulkan: updates to pipeline cache graph dumping logic 1. To dump pipeline cache graph you need to - 1. add "angle_dump_pipeline_cache_graph" compile time flag to args.gn 2. set Android property "angle.dump_pipeline_cache_graph" or envvar ANGLE_DUMP_PIPELINE_CACHE_GRAPH on non-Android platforms before app start 2. Default path for dump on Android is "/data/local/tmp/angle_dumps/" 3. "angle.pipeline_cache_graph_dump_path" Android property or envvar ANGLE_PIPELINE_CACHE_GRAPH_DUMP_PATH on non-Android platforms can be used to configure the dump path Bug: angleproject:6565 Change-Id: I38848aff58f413dd7bdffc9083116bd4b95e4960 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5226054 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi b007c74d 2024-01-23T14:17:54 GL: Separate dirty bits leading to glUniformBlockBinding The GL backend is special in that it needs to make actual calls (native glUniformBlockBinding) in response to (application) glUniformBlockBinding calls. The other backends just remap the bindings based on that information when creating descriptor sets. Previously, an optimization to track which bindings have changed used the same dirty bits that were used to signify when the GL backend needs to make these native calls. That ended up as a source of bugs. In a previous change [1], the context DIRTY_BIT_UNIFORM_BUFFER_BINDINGS is set when these mappings change, which fixes some of these issues. That change obviates the need for an actual backend sync of programs, except for GL programs that need to make these native calls. This change splits the dirty bits maintained for the purposes of the GL backend, moves them to that backend and removes the program backend sync. [1]: https://chromium-review.googlesource.com/c/angle/angle/+/5228599 Bug: angleproject:8493 Bug: b/318806125 Change-Id: I73c6514e88a116f1cd701cb06da0d8c38f07f7f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5230137 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov a76e2798 2024-01-24T09:50:32 Suppress VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912 Blocking VVL roll, new check recently added in: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+/6180ce40299b1346ee2caf4aa8b1540590e197e8 Bug: angleproject:8497 Change-Id: I40d600409ad0e9900c17fac9700ab4397be6c876 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5231423 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 341906d5 2024-01-22T10:19:25 Vulkan: Never delay device and queue selection Previously, when multiple queue families where eligible, ANGLE delayed the decision on which queue family to use and delayed device creation until a window surface was created. This assumption was never correct. The application may start rendering to pbuffers or using EGL_KHR_surfaceless_context long before it creates a window surface. So a queue may need to be chosen regardless of its surface present capabilities. Once done, ANGLE has no mechanism to change that queue should a window surface require a different queue. This change drops the pretense to support multiple queue families properly and makes ANGLE always choose the first graphics queue family it encounters. So far, only MoltenVk seems to expose multiple graphics queue families, and choosing the first one ultimately correct for the purposes of presenting to a MacOS surface. Bug: angleproject:8478 Change-Id: I8efbfe0c8036be5f9cee01eb657f83f85a4864fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5225081 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c6fbf93d 2024-01-19T09:57:12 Vulkan: Fix input attachments leaking into uniform list To communicate the existence of input attachments added to the shader, the translator was adding `ShaderVariable`s for each to the list of uniforms exported from the shader. This was incorrect, as this list is visible to the application through `glGetActiveUniform`. Additionally, this was unnecessarily causing these uniforms to go through program link. Reserving SPIR-V ids for these uniforms, all that is needed from the translator is the mere existence of these input attachments. This change removes the addition of uniforms, and instead exports a bitset. Elsewhere, that bitset is consulted and reserved SPIR-V ids are used. Bug: b/320563594 Bug: angleproject:5792 Change-Id: Id93846cbc3996248f391fd2d5a65af1e48d6d46e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5215089 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brandon Schade 317108d6 2024-01-18T17:59:51 Vulkan: Enable recordable bit for RGBA8 and RGB10_A2 Enable the recordable flag to be enabled for the RGBA8 and RGB10_A2 configs. Test: CtsMediaV2TestCases android.mediav2.cts.EncoderColorAspectsTest Bug: angleproject:6612 Change-Id: I2afaedde4751c5ca651d0d80ae1a8d14662c2f0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5214887 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 16a5e8f1 2024-01-22T14:22:53 Revert "Prefer linear filtering for YUV for Pixel6+" This reverts commit 0da6522524247d6a1cb88ab1b48a1801ee609991. Reason for revert: Breaks an Android test b/321251332 Original change's description: > Prefer linear filtering for YUV for Pixel6+ > > This is required to pass CtsMediaDecodeTestCases. > Narrowed to just Pixel6+ due to another issue (b/321903468) which > prevents preferring linear filtering on Pixel4. > > Bug: b/315387961 > Change-Id: I6fbbea10a3b4fd835afbcdbecf120264d0ca8605 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5207870 > Reviewed-by: Charlie Lao <cclao@google.com> > Commit-Queue: Chris Forbes <chrisforbes@google.com> > Reviewed-by: Cody Northrop <cnorthrop@google.com> Bug: b/315387961 Change-Id: I4b055a9ffef9ed49992ea5568f723aaff53c7f1c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5224900 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Chris Forbes 0da65225 2024-01-18T10:29:23 Prefer linear filtering for YUV for Pixel6+ This is required to pass CtsMediaDecodeTestCases. Narrowed to just Pixel6+ due to another issue (b/321903468) which prevents preferring linear filtering on Pixel4. Bug: b/315387961 Change-Id: I6fbbea10a3b4fd835afbcdbecf120264d0ca8605 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5207870 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Chris Forbes <chrisforbes@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi fad2adb2 2024-01-12T14:43:33 Vulkan: Fix importing external object and using as storage image The create flags used to create the imported object was 0. Later, when the texture was used as a storage image, TextureVk::syncState would recreate the image (losing connection to external object). This change makes sure the create flags include all the necessary create flags such that the texture can be correctly used as storage image. Bug: angleproject:8464 Change-Id: I6587b53b1c2819a11dec8f2d5a3a30c889a4c63f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5194064 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ed2a8ef8 2023-12-20T00:06:10 Vulkan: Defer QFOT when acquiring texture with GL_NONE layout Instead of issuing a queue family ownership transfer with the UNDEFINED layout (and then hack its dst layout to be GENERAL), this change simply lets the queue family be changed when the image is next accessed (at which point a layout transition is necessary anyway). Bug: angleproject:8464 Change-Id: Iab36af0c641bd04029bdc0d9097e766e8a0f4145 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5138657 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 572323cc 2024-01-11T16:20:02 Fix program link after backend rejects program binary If ANGLE believes the program binary is fine, it populates the program executable. If the backend then rejects the program binary, the executable was not reset. After the rejection, ANGLE proceeds to redo the program link, in which case it fails in various ways (ASSERT failures, incorrect data etc) as it tries to accumulate info on top of the previous executable. Bug: angleproject:8471 Change-Id: Ia4d626f5f9643c39a81062da3d5d58aa4c6be762 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5189152 Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 2e2d7247 2024-01-11T11:50:44 Roll vulkan-deps from eb5fcf15ff7f to 124ff11a5e15 (21 revisions) Skip VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658 added in: https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/939e7c3fcbb75f71f0dfa999064c74f27a014189 https://chromium.googlesource.com/vulkan-deps.git/+log/eb5fcf15ff7f..124ff11a5e15 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/db4d6f85af..1952e63d43 * spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/cffc08a542..37a58e4c95 * spirv-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git/+log/1bfd27101e..bdd1b2ab1f * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/e2b7bb1207..4c20ea3156 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/02f1cb7d55..6f441477e7 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,cnorthrop@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:8482 Tbr: cnorthrop@google.com Change-Id: Iaa696787ae66ba44db591c18833d2b7261474c08 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5185141 Reviewed-by: Solti Ho <solti@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi e00995d4 2023-12-21T15:57:39 Vulkan: Invalidate pipeline with FBO draw buffer change Enabling/disabling draw buffers can affect the graphics pipeline without changing the render pass description. In that case, the graphics pipeline was not being invalidated. Bug: angleproject:8463 Change-Id: I6848472dcbb3d3ce4c34d95be28c8ec3fc50dcd7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5147847 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Amirali Abdolrashidi 4b356c39 2023-08-17T10:49:19 Vulkan: Drop support for VMA 2.0 Since ANGLE and Chromium were last updated to use VMA 3.0, there have been no breaking issues so far. * ANGLE update: https://crrev.com/c/4777337 * Chromium update: https://crrev.com/c/4911597 Therefore, the support for the old VMA (2.3) can now be removed. * Removed ANGLE_VMA_VERSION from the build files, since they are no longer required. * Removed the VMA-related guards in the code as well. * Removed the flags and thresholds for the buddy algorithm, which were used in VMA 2.3. * Share group buffer pools is no longer a map. Bug: b/303290680 Change-Id: Ic2b29e8f95ca5c941b297b20442c5bad4b8f52e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791667 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll f7296e95 2023-12-29T10:01:26 Roll vulkan-deps from 1fd0038f3bbb to 7f90849f10d0 (6 revisions) Skip VUID-VkImportMemoryFdInfoKHR-handleType-00667 added in https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/7199/commits/cebf29d9587aad38acf52351d4b6225e7c1d032f https://chromium.googlesource.com/vulkan-deps.git/+log/1fd0038f3bbb..7f90849f10d0 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/89824a83b7..88c5373ee4 * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/741a9dfd8f..a3b11f1fcc * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/e3d690bb54..98dea76972 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,syoussefi@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:8470 Change-Id: Iba9e9dae398a753fd9675e5b68551abe2dfc0c46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5155494 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Solti Ho <solti@google.com>
Mohan Maiya 295eece6 2023-12-26T17:28:04 Vulkan: Add feature to force enable sample usage Add a feature that would force enable the VK_IMAGE_USAGE_SAMPLED_BIT usage flag for an image with external format, irrespective of the requested AHB usage. Bug: b/155487768 Change-Id: Ie46012d6f905317cd42a69768b4d35b44db474c1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5153131 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya 343e774a 2023-12-26T16:44:47 Vulkan: Bugfix in usage flags of images with external formats Enable VK_IMAGE_USAGE_SAMPLED_BIT usage flag for an image with external format only if the equivalent AHB usage was requested. Force enabling VK_IMAGE_USAGE_SAMPLED_BIT usage will mask bugs where an app or vendor gralloc module fails to include the AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE or the equivalent gralloc usage flag when creating the AHB Bug: b/155487768 Change-Id: If09cd739a6fdc3ac7905f9d4c1fc9d4098e0cdad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5153125 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Alexey Knyazev 706b5abe 2023-12-21T00:00:00 Avoid UB in 16-bit IOSurface tests * Removed incorrect R16UI mappings from backends * Fixed the enum used in RenderToR16IOSurface * Added more 16-bit tests Fixed: angleproject:7445 Change-Id: I7d5fb8b6a5fc7a57de8f988fdcc21e66606f875d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5148211 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Mark Lobodzinski d18f22ca 2023-12-14T11:50:19 ANGLE: Update syncval exceptions and add test for syncval errors Trace testing found some new cases where the current sync val error messages needed to be widened to cover more cases. A test was added to reproduce the behavior seen in the Asphalt 9 ANGLE trace. Test: FramebufferTest.InvalidateAttachmentStencilOnly Bug: b/316337308 Change-Id: Icde7ad560e6949712bfd785d9969b9e179d11492 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5124314 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Shahbaz Youssefi a1143857 2023-12-18T15:24:42 Fix UBO dirty bits vs PPOs This change fixes propagation of UBO dirty bits (such as through glUniformBlockBinding and glBindBufferRange) to program pipeline objects. Since PPOs concatenate the attached programs' UBOs in a list, a map of program UBO indices to PPO UBO indices is introduced to offset these dirty bits appropriately. Additionally, when the program's executable's buffer bindings change (through glUniformBlockBinding), a notification is send to the PPO to update its executable's buffer binding accordingly (which is otherwise only updated during PPO link). Bug: angleproject:8462 Change-Id: I4965ae23e6fc6cac0842e1643755e42e95d3d5cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5131418 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
angle-autoroll e15a7de3 2023-12-21T10:01:41 Roll vulkan-deps from 9c3a33aed0ec to 34a8babeb440 (5 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/9c3a33aed0ec..34a8babeb440 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/c155f881ee..abb79089a8 * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/40633a61aa..3798f68b73 * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/b42addf414..e21dc3deb0 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/ea496a3de8..8095b050f9 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,geofflang@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:8468 Change-Id: Icf23d4056b1f9a6caae2483125841bc6aefe3a8f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5144390 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 13685465 2023-12-20T15:39:24 Vulkan: Don't request surface extensions without VK_KHR_surface ... on headless platforms. Bug: angleproject:8467 Change-Id: Id0032ddd9f57540719d90f58b7d99cfb79f91a8c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5142626 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 0aaa8de9 2023-12-19T23:23:40 Vulkan: Fix memory tracking vs external texture acquire ... with a layout of GL_NONE. Bug: angleproject:8464 Change-Id: I94690c5693c5bcb6d510e4a27097206f0da58a41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5138656 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e9c0241d 2023-12-19T10:23:13 Vulkan: Rely on Vulkan 1.1 entry points in tests Some KHR entry points that were promoted to Vulkan 1.1 no longer seem to be loadable with their KHR symbols. Bug: angleproject:8464 Change-Id: Id5417e5b047e6bd34d144fead518f771c17658e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5135676 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 6951508b 2023-12-19T19:30:05 Manual roll vulkan-deps from de368ee1bf18 to 06ba2decfb32 (1 revision) Manual roll requested by ynovikov@google.com Suppress SYNC-HAZARD validation errors in vkQueueSubmit(), enabled by https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/7129 https://chromium.googlesource.com/vulkan-deps.git/+log/de368ee1bf18..06ba2decfb32 Changed dependencies: * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/eebe1dfcef..0c6e58c7f0 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,geofflang@google.com,ynovikov@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: b/316013423 Change-Id: Id63a3ddd4615f8a520b68588db4520d30a687598 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5137081 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 80db7c4b 2023-10-17T10:03:06 Vulkan: Remove fixed VU suppressions Bug: angleproject:5309 Bug: b/175584609 Change-Id: I8f952a1feb235b6bd060b5fe0b89c01fde6f84be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4946592 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4bf40237 2023-12-18T15:24:15 GL: Fix missing glUniformBlockBinding handling When a program is current and this call is made, the program is made dirty so that the GL backend reacts to this call. Prior to https://chromium-review.googlesource.com/c/angle/angle/+/4922969, the program was made dirty when its executable was installed as well (if it had any UBOs dirty), but that change removed it. As a result, if this call was made while the program was _not_ current, the GL backend would miss processing it. This call ensures that the appropriate dirty bit is set when the program is made current again. This revealed a bug in the Vulkan backend where sometimes the executable's dirty bits would not get reset. This was benign but fired an assertion, and is fixed in this CL as well. Bug: chromium:1511506 Change-Id: Iae86ba0aa5b8f9e4f20dd6df6002d37e405280e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5123005 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yiwei Zhang 1e4c4c76 2023-12-18T19:35:13 Vulkan: avoid disabling explicitlyCastMediumpFloatTo16Bit for venus We disabled it to work around below legacy skia cts: CtsSkQPTestCases org.skia.skqp.SkQPRunner#gles_gradient_many_stops The test no longer exists in newer skia cts. Meanwhile, we have to drop the workaround for other precision issue on Mali-G52. Bug: b/316474995 Test: dEQP-GLES2.functional.shaders.algorithm.rgb_to_hsl_vertex Change-Id: I18394595632d05657e96f8b9c9675b4dd959d92b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5133372 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Charlie Lao 40f4de8f 2023-12-15T10:17:32 Vulkan: Ensure we use cached memory for readPixels stagingBuffer Previous CL crrev.com/c/5112759 does not solve the performance issue for ChromeOS. The reason is that on more recent intel GPU, there is no hostVisibleCachedCoherent heap. When we allocate staging buffer, we specify CachedCoherent as the preferredFlags instead of requiredFlags. This means we still end up getting UncachedCoherent since VMA tries to respect coherent bits as first priority. This CL Changes CachedCoherent to CachedPreferCoherent, and made Cached as required bit, thus ensures the memory allocated is cached. Since coherent bit may not be honored, thus we have to call invalidate/flush (which underline implementation will check the bit and early out if no need). Somehow on ARM GPU using cachedNonCoherent staging buffer causing many test failures, even though we do call invalidate() after allocation, and tests pass on all other GPUs. It almost indicates ARM driver have a bug with invalidate() that it is not doing expected. But before I can be sure and fixed, I added feature bit to keep ARM the old behavior, which uses UnCached memory for readPixels which should suffer the performance as well. Bug: b/315836169 Bug: b/310701311 Change-Id: I1eec6105ce74275faa893b0206be8470f0cde72f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5122318 Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Stephen White a950f005 2023-12-06T18:58:35 Move compressed format validation to Vk backend. Add test to call glCompressedTexSubImage3D() from a pixel unpack buffer. This currently fails on OpenGL. Bug: angleproject:8449 Change-Id: I863b602e39a14878af8745ff62b408bdd879bc98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5100348 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Austin Annestrand 80893f26 2023-11-30T16:57:15 OpenCL: Remove unneeded impl getters Some of the OpenCL backend (impl) getters are not needed. These are the size query for image creation, and CL source retrieval for program objects not created from source. Bug: angleproject:8438 Change-Id: I76b39b75f1ae76ec0c3c94d5715632cb9dd4900a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5078243 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 66d29149 2023-10-16T12:43:43 OpenCL: Add scaffolding to renderer/vulkan code Start off ANCLE (OpenCL on ANGLE) with backend scaffolding code with placeholder API error returns until they are later implemented. Bug: angleproject:8377 Change-Id: I223d3482cce097ccb298e121fc03ec416e8958fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4950556 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 3439e421 2023-12-15T11:37:53 Vulkan: Remove AHB workaround for camera app This is now fixed in camera app main branch. The workaround is removed here. Bug: b/239181279 Change-Id: I782baf7a42a8c9a897f1947d8b2f6feba606ce29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5126931 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand ed7c31c7 2023-11-29T18:31:43 OpenCL: Replace error-passing APIs to use angle::Result Part 2 of Issue 8435: This part replaces existing error handling for all CL APIs that return CL objects to now use "angle::Result". Bug: angleproject:8435 Change-Id: I75e41c7cbb06220cabec7cc9f9cb5107a3b6bd6d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5075773 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand a9512a9f 2023-11-29T14:56:29 OpenCL: Replace error-return APIs to use angle::Result The motivation of converting existing CL APIs using "cl_int errorCode" to now use "angle::Result" is for better interop with internal ANGLE plumbing/abstractions. To facilitate this, we now make use of a TLS errorCode object that we set internally and read from entrypoint/stubs layer so that we can propagate back to user. Bug: angleproject:8435 Change-Id: I7c2a786019c33c56649be4b6e8b61bc318497bb1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5075772 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yiwei Zhang 524bcb8e 2023-12-13T20:21:38 Vulkan: avoid forcing preferSubmitAtFBOBoundary with Venus It turns out benefiting Venus atop ARM while hurting in a non-trivial way on old Gen Intel due to execbuf overhead. Bug: b/314847707 Test: 2%+ gain for trex on ANV on CML Change-Id: I61eb18a05e94c97ee6a4d70f98ae30423155e632 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5118128 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Solti c8604e97 2023-12-13T19:48:16 suppress VUID-VkVertexInputBindingDivisorDescriptionKHR-divisor-01870 Unblock the autoroller first Bug: angleproject:8454, b/316176944 Change-Id: I7f692a81e7a8b0189f83ce6f00e0cec6e2d7e2b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5118126 Commit-Queue: Solti Ho <solti@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Kieron Josephs 282a5fb4 2023-12-08T15:53:17 Fix out-of-bounds vector index when using SPIR-V precision fixer Accessing mVariableInfoById after id has been replaced by the precision fixer was causing an out-of-bounds access. Running SpirvVaryingPrecisionFixer::modifyEntryPointInterfaceList before SpirvSecondaryOutputTransformer::modifyEntryPointInterfaceList was causing an out-of-bounds access for the same reason. Bug: angleproject:8452 Change-Id: I54f7f105ec2fb5aeb3e4234e8e3e052bcc42977c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5105193 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao de591cff 2023-12-11T13:15:30 Vulkan: Add CachedCoherent staging buffer Right now if we allocate a coherent staging buffer, it always uncached. I believe the reason it picked uncached is that most usage for staging buffer is data flow from CPU to GPU. CPU only sequentially write into staging buffer. Uncached may has better performance here due to write combined. But this performs horrible if CPU ever read from it. This CL adds a CachedCoherent staging buffer and let staging buffer use that for coherent memory. UncachedCoherent is currently not used, but I still kept here in case we find regression for certain type of usage. Bug: b/315836169 Change-Id: Ica331914c1f4729baa9d2eab048dc3099a2887b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5112759 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao d0eb968d 2023-12-08T16:11:46 Vulkan: Fix the AHB leak for AHB backed buffer object For client buffer backed OpenGL buffer object, we call InitAndroidExternalMemory which calls AHB acquire. But when buffer object is released/destroyed, we never call ReleaseAndroidExternalMemory, which end up leaking AHB. Bug: b/314791770 Change-Id: I693c74213e73008497a6dfeca93ea62e84c71352 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5106599 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Charlie Lao <cclao@google.com>
Geoff Lang c27a4a1d 2023-11-27T14:44:07 Re-use EGL sync object allocations. Create a pool of EGL sync objects with their implementations that can be re-used. Update all backend implementations to support multiple calls to initialize/destroy. Pool size of 32 chosen through experimentation using Chrome. Bug: angleproject:8430 Change-Id: I86fea41aed35eddccc953efb3802bf5fdb7f3cb2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063341 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi b8ca8de4 2023-12-05T13:36:53 Vulkan: Don't crash when glCopyTexImage2D redefines itself The Vulkan backend marks a level being redefined as such before doing the copy. If a single-level texture was being redefined, it releases it so it can be immediately reallocated. If the source of the copy is the same texture, this causes a crash. This can be properly supported by using a temp image to do the copy, but that is not implemented in this change. Bug: chromium:1501798 Change-Id: I9dde99aa0b88bc7d5f582ff15772f70b36f424e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5089150 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e9d5f13e 2023-12-04T22:36:41 Vulkan: More trace points in the readpixels path Occassionally we hit a bad path in this case, this change makes it clearer from the traces which bad path is hit. Bug: b/310701311 Change-Id: Ic674d6396b0e88f1a1db3ded7efe195fb7397135 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5087207 Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 74f9da02 2023-12-04T19:53:25 Vulkan: Remove spam about depth/stencil feedback loop It triggers a warning even if the application is appropriately using BASE and MAX levels to avoid feedback loop. Bug: b/289436017 Change-Id: Ie7e8281908802e91dfaad1b49dd95197ac6de1a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5086070 Commit-Queue: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi fb6b960c 2023-11-27T14:24:28 Remove GL_CHROMIUM_texture_filtering_hint This was using an unregistered Vulkan extension to set the precision of SwiftShader's internal filtering for the sake of Chrome. That's baked in at build instead. Bug: angleproject:8349 Bug: chromium:726075 Change-Id: I12849d2d29d99626f22a92ee9d74366f78658476 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063344 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 90767546 2023-12-01T12:27:15 Vulkan: Add test for __samplerExternal2DY2YEXT then swizzle Added a correctness test SourceYUVTextureTargetExternalRGBSampleYUVSampleWithSwizzle for applying swizzle after sampler. Also removed some bug workaround for VVL and drivers since they are fixed now. Bug: b/309480316 Change-Id: If82b2251745a96335b535c67b6e0c0847268b25b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5080497 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b46cf698 2023-11-30T11:00:18 Vulkan: Fix Android deadlock with querying buffer age Similar to eglSwapBuffers, eglQuerySurface with EGL_BUFFER_AGE_EXT can cause a call to vkAcquireNextImageKHR. Bug: angleproject:6851 Bug: b/313975825 Change-Id: If3f0521219cab9aba2aeb2b70958bf0f197bc96a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5077406 Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 3fe678c9 2023-11-30T12:15:57 Avoid malloc in VertexArrayVk::mergeClientAttribsRange Replace temporary std::vector with angle::FixedVector Bug: b/300968773 Change-Id: I002233afc99c0eb03a5ad11ab7a5bfd85626b3a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5074625 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3680a5dc 2023-11-17T13:51:07 Vulkan: Let program warmup continue passed link The warmup task does not actually affect the link results, so there is no reason to wait for it when the application queries the link status. This change allows the warm up task to continue in parallel until the program is used at draw time. This allows the warm up to be more efficient when the link itself is not parallelized. For applications that create programs in the middle of every frame, it's still likely best to disable warm up (as the following immediate draw will already effectively do the warm up). Note that currently the warm up code in the Vulkan backend is not completely thread-safe, and so the program still blocks on that task before the first draw can happen (or the program is modified in any way). Bug: angleproject:8417 Change-Id: I0877fef39a0585c3279e32699ce817d4643d7cd6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5037538 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yiwei Zhang d842f3db 2023-11-29T06:53:58 Vulkan: add a disableSeparateShaderObjects feature Dota Underlords uses one PPO and keeps swapping the attached program. Though we get cache hit, the hundreds pipeline creation calls still amount to non-trivial CPU overhead via ANGLE. The use of SSO has been disabled by the app in certain cases, and this feature is added to support entirely disabling SSO in ANGLE on all Vulkan backend impls. Bug: b/309028728 Test: Dota Underlords easily hits target FPS on ANV and RADV Change-Id: I54532975237218563b8750f1878a83e386fe776d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5073414 Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao b746dc3b 2023-11-29T17:40:53 Vulkan: Fix assertion when texture's min/mag filter disagree Camera CTS test testCameraGpuEncoderPath[1] is hitting assertion due to minFilter is NEAREST but magFilter is LINEAR. This CL use sampler's filter if min/mag agrees. Otherwise it uses default YCbCr chroma filter. The min/mag filter will still apply separately if VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT is set. If this bit is not set, we will force all of three filter to be the same anyway. Bug: b/302196568 Bug: b/308208067 Change-Id: I19007a107cfcea0f839cb66c236a70c003c43653 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5074826 Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao f7eb7efb 2023-11-28T11:20:57 Vulkan: Fix camera panorama hang When EGL attributes does not speficy color space, right now we pick VK_COLOR_SPACE_SRGB_NONLINEAR_KHR. This overwrites the color space people set via ANativeWindow. This causes camera goes into CSC conversion and errors out and stops media codec pipeline and causes camera to hang. This CL enables mapUnspecifiedColorSpaceToPassThrough feature flag for all platform that supports VK_EXT_swapchain_colorspace so that it will pick VK_COLOR_SPACE_PASS_THROUGH_EXT and vulkan swapchain code will try to keep whatever color space surface already has. The feature flag is still kept here in case there is regression and we need to experiment this feature flag again. We can remove it once everything settles down. This CL also adds updateColorSpace() and getActualFormatID() to de-duplicate the logic of R8G8B8_UNORM overriding and use of VK_COLOR_SPACE_PASS_THROUGH_EXT. Bug: b/309480316 Bug: b/302196568 Change-Id: I0952fe78c2bfd59446391c553745b2b5cb152a9d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5066801 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Roman Lavrov 333e3a9c 2023-11-28T12:12:44 Re-add VUID-vkDestroySemaphore-semaphore-01137 temporarily To unbreak ANGLE-> Chromium swangle.. https://crrev.com/c/5066784 Bug: angleproject:7729 Change-Id: Ic7aaa10540cb9c6581872c9709b2d329eae4b8f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5067854 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 233b6675 2023-11-28T12:48:17 Roll vulkan-deps from e892a337898c to 47125179fa7d (24 revisions) VVL renamed VUID-vkDestroySemaphore-semaphore-01137 -> VUID-vkDestroySemaphore-semaphore-05149 https://chromium.googlesource.com/vulkan-deps.git/+log/e892a337898c..47125179fa7d Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/153064f2c7..b820431a2c * spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/42299f92ef..50e90dd74e * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/2a238ed24d..7d2a618bf9 * vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/7d92fe7b68..9d27c893cd * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/0e7cf57a29..b00cb455c4 * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/9ef6c05af3..98d168c168 * vulkan-utility-libraries: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries.git/+log/228f7487dd..1fb77ad1d4 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/4d7cdcc223..e00625d685 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,romanl@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:7729 Tbr: romanl@google.com Change-Id: I8268b3532b78aa4362e632ae68f335b6808966e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5066853 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Geoff Lang 1ff6a6f2 2023-11-27T13:08:29 Pass the attribute map to egl::Sync::initialize. The attribute map was typically passed to the impl objects in the constructors. Instead, pass it to the initialize function. This removes the need for many member variables in different backends and opens up the future optimization of re-using sync objects by calling initialize on them with new attributes. Bug: angleproject:8430 Change-Id: If69970462cfed39d9a205034adb5ddd937c5ea31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063335 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 99b077b7 2023-11-26T08:24:18 Vulkan: fix data clobbering with AllocateNonZeroMemory The offset of the suballocation was not being used when initializing memory, so it was possible to overwrite the start of an existing buffer with garbage. Bug: angleproject:8427 Change-Id: I8205068a173dc4342894c6c49ee5fa9c4a8a255a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5060776 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Chia-I Wu 170ba8c9 2023-11-16T19:45:35 Vulkan: Workaround depth bias constant factor on RADV Both ANV and RADV need the same workaround. Improve IsRADV to support Venus-over-RADV. Also "git cl format" to make presubmit happy. Bug: b/308835020 Test: dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units Change-Id: Ibbad4d09f12df419e38aff1365d37d55ca326532 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5040097 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Chia-I Wu <olv@google.com>
Mohan Maiya 8ae36a93 2023-11-14T10:11:51 Vulkan: Bugfix in isFastUnpackPossible Disallow fast unpack when there is a mismatch between the actual texture format and intended buffer (PBO or client buffer) format. Bug: angleproject:3777 Test: Texture2DTestES3.UnpackCompatibleFormatButDifferentType* Change-Id: I9ea9d9cdd5e1391acebb3d75d69437e27cfa90df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5029504 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi d4281637 2023-11-15T13:17:36 Add names to worker threads Bug: angleproject:8417 Change-Id: I5841d194cb695387aa8fe48638cc025173152347 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5034797 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c5eb810b 2023-11-14T15:01:25 Remove angle::Result::Incomplete entirely Bug: angleproject:8414 Change-Id: I8d607614614360b65c530e3e7647d8a7ba38b18e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5031191 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi dd8432b5 2023-11-14T14:39:45 Remove angle::Result::Incomplete from shader/program paths angle::Result is not an error code, and having Incomplete made it very unclear what the purpose of this class is. A follow up will remove it entirely. Bug: angleproject:8414 Change-Id: Ica8271b9f7d8868671c7658161e50a53ef23c681 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5028091 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3a6b385f 2023-11-09T15:48:48 Vulkan: Fix depth/stencil texture copy Bug: angleproject:7289 Change-Id: Icde8a26e855e95a6c0a1e506d2435e981adc6f28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5018798 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi d896fab8 2023-11-09T15:03:05 Vulkan: Fix texture self-copy A new layout is introduced to support self-copy. Bug: angleproject:7289 Change-Id: Ib914c433d55b9a79cfeb7a91f8a2b8680824d473 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5018797 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi cea3775c 2023-11-02T15:41:06 Vulkan: Suppress VU Undefined-Value-ShaderOutputNotConsumed Bug: angleproject:8401 Change-Id: I3b561ec98090cf1c0050f113db96ea0c6c79d785 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002728 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 12cc04d0 2023-11-07T10:26:18 Vulkan: Workaround camera AHB's layerCount being random value We are seeing AHB used by google's camera app has random value in the layerCount. In my reproduced case, it is 0, which translates to layerCount in the VkImage. Sometimes I am also seeing a huge number in the layerCount as well. This causes problem in ARM driver that end up with assertion and other problems that end up with crash later. We need to root cause the underlying bug which is tracked by b/239181279. But before we have an actual fix in AHB creation code, this CL forces com.google.android.GoogleCamera AHB's layerCount to be 1 as a temporary app specific bug workaround so that we can move forward to get camera app up running with ANGLE. Bug: b/309480316 Bug: b/239181279 Change-Id: I219f6f89863a2cb8dee6c5efb0812389272373ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5010082 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Roman Lavrov 0584ffd8 2023-11-06T16:34:13 Unsuppress VUID-VkGraphicsPipelineCreateInfo-pStages-00739 Possibly was due to a VVL bug https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/6717 Bug: b/303219657 Change-Id: Ic9a6e7b45fb42572af04f94382906cd6f0f512df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008042 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi e7ce481f 2023-11-01T22:44:22 Consolidate parallel compilation in front-end This cleans up the multiple compilation task implementations in the backends and consolidates them in the front-end. The front-end is then able to do the compilation in an unlocked tail call instead if desired (in a future change). This change is in preparation for having the program link tasks directly wait on the shader compilation tasks. As a result, the "shader resolve" should not be needed to access the shader compilation results; it should be enough to wait for the compilation job. This change therefore moves post-processing of results to the compilation job itself as they did not need to actually be done after compilation is done (merely after translation is done). As a side effect, shader substition and other debug features should now work for the GL backend as they are now done before back-end compilation. Bug: angleproject:8297 Change-Id: Ib9274b1149fadca7545956a864d6635b6cba5c3a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4994655 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 8b4901d0 2023-11-06T10:43:14 Avoid GLenum conversion in BlendStateExt blend and equation The following functions now return value as is without ToGLenum conversion (that is often unnecessary): getEquationColorIndexed getEquationAlphaIndexed getSrcColorIndexed getDstColorIndexed getSrcAlphaIndexed getDstAlphaIndexed (at least) getEquationColorIndexed is on the hot path with noticeable performance impact; this CL also moves the implementation to the header to allow inlining. Bug: b/300968773 Change-Id: Ie223abe14b12afd7844686863ee5806945d10e45 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008031 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Igor Nazarov 146a01ea 2023-11-03T15:49:30 Vulkan: Do not pad pipelineCacheData with zeroes Instead of padding, reduce buffer size to the one returned from `pipelineCacheData`. Padding `pipelineCacheData` with zeroes in cases when `vkGetPipelineCacheData()` returns less data then requested, may invalidate the entire buffer. Next time padded buffer is used in `vkCreatePipelineCache()` call, it may be rejected as invalid. I have checked the above by deliberately increasing `pipelineCacheSize` by 42 before `vkGetPipelineCacheData()`. After zeroing these 42 bytes, I passed padded buffer to the `vkCreatePipelineCache()`. Result was successful, however resulting cache size was always 52 bytes instead of the expected `pipelineCacheSize`. Bug: angleproject:2516 Change-Id: Ia1668ca96fc54e9b818ba0c8441e27c9dc2aedc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002451 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Igor Nazarov 0a8a7c2b 2023-11-02T13:52:03 Vulkan: Remove rx::WaitableCompressEvent class The `WaitableCompressEvent` class is a left over from the old code and currently serves no purpose. Change that made class obsolete: Vulkan: Sync pipeline cache only when truly changed https://chromium-review.googlesource.com/c/angle/angle/+/3668835 Removal of `WaitableCompressEventImpl` fixes problem, that `CompressAndStorePipelineCacheTask::mCacheData` was not destroyed until next time we assign the `mCompressEvent`. So basically, most of the time we had `mCacheData` allocation wasting memory. After this change, `mCacheData` will be deallocated as soon as the task finishes. Deallocation will happen in the async thread, saving some CPU cycles on the main thread. Bug: angleproject:4722 Change-Id: I9e8826e10535d7f6d844a0043704bd35838a0e02 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5001430 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Hailin Zhang 67222ef4 2023-10-20T22:56:09 Reland "Vulkan: merge client buffer data." This is a reland of commit 563569acfcaf56ea87916d2ab5d50f09c8e0094e Original change's description: > Vulkan: merge client buffer data. > > some old fashion game still use lots of interleaved > client buffer. instead of copy each attrib alone. > this cl try to merge all the attrib ranges. reduce > allocated memory and do whole range memcpy. > > Bug: b/306763053 > Change-Id: I493d7f0e1ef593fb7059c36ae0ed2149c4595e42 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960642 > Commit-Queue: Hailin Zhang <hailinzhang@google.com> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: b/306763053 Change-Id: If079ab055b7b7a2d14235bee3311fd628f657f35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4997325 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Mike Schuchardt 221117ab 2023-11-02T08:48:51 Tests: Add The Sims Mobile trace Test: angle_trace_tests --gtest_filter=TraceTest.the_sims_mobile Bug: b/308927628 Change-Id: I5de44b7eedb904c318168fbc7e308af218dc5ab1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002145 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 053aa915 2023-11-01T12:01:27 Vulkan: Disable VK_EXT_graphics_pipeline_library on RADV Causes crashes in the driver. Bug: chromium:1494778 Bug: chromium:1497512 Change-Id: I0a9a74d8d77c48744ce9a62d27f48120209d1476 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995274 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 9a5d75de 2023-10-30T11:59:19 Vulkan: Fix incompatible redefinition of cube faces The TextureVk::mRedefinedLevels bitmask tracked which levels are incompatibly redefined, greatly reducing the complexity of dealing with GL's mutable textures. It did not however take into account the fact that GL allows each cubemap face to be separately redefined (unlike 2D arrays, where all layers are defined together). This change turns the bitmask into an array of bitmasks. Previously, a single bit represented whether the level is incompatibly redefined. Now, elements of the array track the same information for each cube face. For non-cube-map textures, only element 0 is used. Bug: chromium:1494664 Change-Id: I69568d3da2391796bf5f01505861fee42c6c8924 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4986289 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Peiyong Lin 46817856 2023-11-01T04:38:40 Revert "Vulkan: merge client buffer data." This reverts commit 563569acfcaf56ea87916d2ab5d50f09c8e0094e. Reason for revert: Broke Android build, see aosp/2812590 Original change's description: > Vulkan: merge client buffer data. > > some old fashion game still use lots of interleaved > client buffer. instead of copy each attrib alone. > this cl try to merge all the attrib ranges. reduce > allocated memory and do whole range memcpy. > > Bug: b/306763053 > Change-Id: I493d7f0e1ef593fb7059c36ae0ed2149c4595e42 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960642 > Commit-Queue: Hailin Zhang <hailinzhang@google.com> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: b/306763053 Change-Id: I31ab923af16bf3f9e99033ebd6ea4c5e5b310d71 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995494 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Peiyong Lin <lpy@google.com> Auto-Submit: Peiyong Lin <lpy@google.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Hailin Zhang 563569ac 2023-10-20T22:56:09 Vulkan: merge client buffer data. some old fashion game still use lots of interleaved client buffer. instead of copy each attrib alone. this cl try to merge all the attrib ranges. reduce allocated memory and do whole range memcpy. Bug: b/306763053 Change-Id: I493d7f0e1ef593fb7059c36ae0ed2149c4595e42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960642 Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Hailin Zhang 2ee06400 2023-10-31T10:57:02 Vulkan: fix dynamic buffer alignment issue. Bug: b/306763053 Change-Id: I2f15fe2a2a36a9f55686987641e6afddb44ec9aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4994410 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Shahbaz Youssefi c6dc00d2 2023-10-31T11:50:40 Manual roll vulkan-deps from 69081d0e32f7 to e55b4f78bcf3 (110 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/69081d0e32f7..e55b4f78bcf3 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/7fa0731a80..f8dd5adde4 * spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/2de1265fca..637cff3d05 * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/73876defc8..4f014aff9c * vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/f4bfcd8852..aff5071d4e * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/131a081e08..1ddcde3c55 * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/f7017f2333..116b6b1513 * vulkan-utility-libraries: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries.git/+log/dcfce25b43..5b3147a535 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/cc1e12c6fc..c27900222c If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,syoussefi@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Change-Id: I0c94d5f8e6d5b4c42186c063052f824c5cb5a3df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995264 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 471b5040 2023-10-26T09:33:29 Vulkan: Only enable DS dynamic state if there is DS attachment. This is discovered while investigating EXT_yuv_target crash in driver. What happens is that UtilsVk::copyImage does not set depth stencil dynamic state since there is no depth stencil attachment. But we enabled dynamic state for D/S, thus driver still does D/S state setup, which sees garbage data and hitting assertion. Even though this is discovered with EXT_yuv_target test, I believe this is a general issue. This CL adds the renderPassDesc.hasDepthAttachment() and hasStencilAttachment() check and enable depth or stencil related dynamic state only if there is depth or stencil attachment. This fixes crash in driver with ImageTestES3.ClearYUVAHB test. This also has added performance benefit that we now completely skips depth/stencil related dynamic state dirty bit handling code, thus reduces state processing CPU overhead. Bug: b/223456677 Change-Id: I3a4fe6d97b14c066d78f8b8ded21c626cb2f376c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4980765 Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Geoff Lang eca38a10 2023-10-26T11:02:38 Vulkan: Supress new DrawNone VVL errors Errors: VUID-vkCmdDraw-None-09000 VUID-vkCmdDrawIndexed-None-09002 Bug: angleproject:8394 Change-Id: If43390e837df088ba7a6d0c7eb5947927ad186d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4979786 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Hailin Zhang 5dd0c842 2023-10-24T13:48:29 Vulkan: improve memory type mismatch issue. for dynamic buffer usage, the memoryTypeIndex returned from findMemoryTypeIndexForBufferInfo not used. if we add more flags like VK_MEMORY_PROPERTY_HOST_CACHED_BIT at alloction. the actual memory type allocated may not have such flag. Bug: b/306763053 Change-Id: I778e51fdd5ce0bc0810a965c45b5763a155fc391 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4973574 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 43187a24 2023-10-25T09:43:56 Vulkan: remap YUV clearColor component from GL order to vulkan order For EXT_YUV_TARGET, OpenGL and vulkan uses difefrent mapping between YUV to RGB. OpenGL spec says "When clearing YUV Color Buffers, clear color should be defined in yuv color space and so floating point r, g, and b value will be mapped to corresponding y, u and v value and alpha channel will be ignored.", but vulkan spec says "Values in the G, B, and R channels of the color attachment will be written to the Y, CB, and CR channels of the external format image, respectively.". This CL adjusts clear color to remap the clear color from GL ordering to vulkan ordering. This CL also adds a temporary workaround for ARM driver bug where they were looking at unused color attachment instead of resolve attachment. Bug: b/223456677 Change-Id: I9800bffc18ccd9d77b4e86995161cdde06257e1f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4973355 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 4f611a1f 2023-10-24T20:56:19 Vulkan: Remove RendererVk::collectAllocationGarbage Instead of adding separate method overload `DestroyGarbage()` method. This will avoid checking `mUse` and creating garbage list twice. Bug: b/218891184 Change-Id: If56ffe72a639021b1fd37feb02ebb91f62ad0933 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4974318 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao e4a267e5 2023-10-20T16:10:50 Vulkan: Fix YUV external format resolve attachment load/storeOp When YUV external format resolve attachment is used, and nullColorAttachmentWithExternalFormatResolve is true, the loadOp and storeOp are packed in color attachments.When we setup the resolve attachment, we must use the color attachment information instead of general resolve code path (where there is always a color attachment). Without this fix, the resolve attachment is always uses loadOp=DontCare which is wrong. Bug: b/223456677 Change-Id: Ib41eb438aedbcd9a37c356540e81cdf7b9610a20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960502 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 9298baa9 2023-10-20T10:26:00 Vulkan: Fix ImageTestES3.RenderToYUVAHB assertion The bug here is that for YUV resolve, we always set mTransience to YuvResolveTransient. And isImageTransient() returns true if mTransience != Default. And if image is transient, we will do unresolve, which is incorrect here. For nullColorAttachmentWithExternalFormatResolve() case, the image is actually not transient. This CL will only set transience to YuvResolveTransient if we need to create a transient color attachment. This CL looks at mImage->getExternalFormat() as the answer for isYUVResolve instead of rely on transience. Bug: b/223456677 Change-Id: I1bc176df22b0abc91d668a178e48d6b90eacbdd7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4959194 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Yuly Novikov 6188c0a6 2023-10-23T16:47:10 Unsuppress VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912 VUID removed in http://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/5941 Bug: chromium:1420265 Change-Id: I8e3b9462df5e250c97c6bff02635cd28fec2a4e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4967241 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Amirali Abdolrashidi ba65feb4 2023-10-18T17:33:38 Vulkan: Limit mutable texture flush to one update In case there are many updates for a mutable texture, flushing it preemptively can reduce performance, especially if it is done repeatedly. * Added getLevelUpdateCount() to ImageHelper. * Previous mutable textures will now be flushed only if they have exactly one update per mip level/cubemap face (if defined). * This means that mutable textures with no data will also not be flushed. * Added unit tests for single-level texture flushing and situations with no updates or more than one update. Bug: b/285613719 Change-Id: I1592ecf502051a55ebfbb7fcd22577c9ce87bf43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4953847 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao d2de7451 2023-10-19T14:10:44 Vulkan: Fix VK_android_external_format_resolve VVL error part 5 Fix assertion in RendererVk::getFormatFeatureBits(). When formatID is external format, we can not use vkGetPhysicalDeviceFormatProperties to get the formatFeature (since VkFormat is undefined). To fix this, we keep the formatFetaure that returned from AHB in the ExternalYuvFormatInfo and use that in getFormatFeatureBits() if it is external format. This also fixes the VVL error VUID-VkImageCreateInfo-pNext-02396: The Vulkan spec states: If the pNext chain includes a VkExternalFormatANDROID structure whose externalFormat member is not 0, flags must not include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT Bug: b/223456677 Change-Id: I625c2bf4fe534fa206918b16772ac3ac7c6fa79a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4956117 Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 80e2d8d7 2023-10-19T13:53:32 Vulkan: Update PipelineProgram if mStreamingVertexAttribsMask dirty When mStreamingVertexAttribsMask bit chnages, we are going to switch between a internal buffer and user's buffer. We must update graphics pipeline program, even if bufferOnly is true. Bug: b/303219048 Change-Id: I0536cb7bcd6ed8f1de39aaea5bd6cd6eef61c5e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4957193 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>