src/libANGLE/renderer/vulkan


Log

Author Commit Date CI Message
Charlie Lao ecaefce0 2024-03-06T14:54:17 Vulkan: Disable optimizeWithLoadOp if there is unresolve If there is unresolve operation for MSRTT emulation code path, dont fall back to loadOp for midRenderPassClear. Otherwise the clear will be lost due to unresolve. Bug: b/309355117 Change-Id: Ib39be0c980f663c08e80855ead32f6e0b07e60fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5350741 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi aba3705b 2024-03-02T21:58:34 Vulkan: Completely remove egl::Display from RendererVk This class is now independent of EGL. The only mentions of EGL is egl::ContextPriority, which is just an enum and is tolerable for now. OpenCL can now instantiate RendererVk without having to create a temp egl::Display. Bug: angleproject:8564 Change-Id: Ia78cfcb3a48c97f397441cf7cda71d74cfaddd8f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5335581 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 91ddf851 2024-03-03T10:57:22 Vulkan: support QCOM foveated rendering extensions Add support for foveated rendering in the vulkan backend. This is done by leveraging the VK_KHR_fragment_shading_rate extension. Bug: angleproject:8484 Change-Id: I0d01d07583f710b2302ea07b19c9d113c73bfe41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5269907 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi c71de868 2024-03-05T13:14:54 Add workaround for ext dynamic state on Win/Intel The feature "useVertexInputBindingStrideDynamicState" seems to be causing test crashes on older Win/Intel drivers. A workaround should be added to disable extended dynamic state on such platforms. * useVertexInputBindingStrideDynamicState is now disabled for Win/Intel drivers before 100.9684. * Added constructor for IntelDriverVersion to use major and minor versions (Windows only). Bug: angleproject:8563 Bug: b/326657712 Bug: b/288916329 Change-Id: I36e27ec1189435a75075a9ac9d235ff224cfcb42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5341658 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mohan Maiya b2773c11 2024-03-01T11:24:44 Vulkan: Bug fix in immutable sampler pipeline layout recreation An immutable sampler is tied to a sampler index and changing sampler uniform location value should force a recreation of the pipeline layout Bug: b/155487768 Bug: angleproject:5033 Bug: angleproject:5773 Tests: Texture2DTestES3.TexStorage2DMultipleYuvSamplersSwitch*Vulkan Change-Id: I82aaed332d7f87f11a2fd4923cfc004403ff0bd2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3657480 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi f044aaf8 2024-03-02T00:51:33 Vulkan: Create instance/device without access to Display The feature overrides are now encapsulated in a struct, a reference to which is passed around until features are initialized. Additionally, some window system information needed to decide which extensions to use or workarounds to apply are passed around. This is a step towards decoupling RendererVk from egl::Display for direct use with OpenCL. Bug: angleproject:8564 Change-Id: Id6c5d1c3b38aafcd4397e54cc6cad32bf849eeda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5335823 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 545e3f6e 2024-03-01T23:27:03 Vulkan: Decouple RendererVk from egl::BlobCache The new vk::GlobalOps class abstracts access to egl::BlobCache. This is a step towards decoupling RendererVk from egl::Display for direct use with OpenCL. Bug: angleproject:8564 Change-Id: I7b3910254430df74b889759639da1749735584a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5332082 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 95294b24 2024-02-28T16:11:45 Android: Add Galaxy S22 support (Xclipse) Test: angle_tests Bug: b/267953710 Change-Id: I53ac424bce23a93fe980539f0946c04aeae6e91e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5333957 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen 0ad73958 2024-03-04T11:17:36 Deduplicate and fix ConstStrLen implementations Move multiple implementations to one angle::ConstStrLen. Some of the implementations were partially incorrect, too. Fixed: angleproject:8569 Change-Id: I760c173a5b75932f4ae2fabcc4916329247d3cb5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5332384 Commit-Queue: Kenneth Russell <kbr@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 258b751f 2024-03-04T20:38:48 OpenCL/Vulkan: Fix processedOptions whitespace Final processedOptions in ProcessBuildOptions() needs to add whitespace padding between options. Bug: angleproject:8549 Change-Id: If418d17aa661bbb20e8367cc9b2b78ceb952e5a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5341668 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya b978974d 2024-03-03T10:48:48 Update frontend support for QCOM foveated extensions Modifications to frontend support - 1. EXTENDED_DIRTY_BIT_FOVEATED_RENDERING is removed 2. New framebuffer attachment API - getFoveationState 3. Attachment type restriction for foveated rendering is removed 4. Addition of new test - RenderbufferAttachmentClearThenDraw Bug: angleproject:8484 Change-Id: I699cbed81346c9a6344c4ff36afa51d6cc1bf052 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5338529 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 39040b0b 2024-02-29T15:45:34 Vulkan: Decouple RendererVk from EGL attributes The attributes are now processed in DisplayVk and the results are passed to RendererVk. Bug: angleproject:8564 Change-Id: Iac8add7953d3f88e19942a21dcdfbedf3b672f52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5331607 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4e6fe5e0 2024-02-29T15:01:06 Vulkan: Cache ImageLoadContext in context This avoids the need to requery this from the display every time. Bug: angleproject:8564 Change-Id: Ied650e7789741f59b7662c0f97c55132b105778d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5332074 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand fc440afa 2024-02-16T13:57:32 Vulkan: Move DS builder class to Vk utils Currently, UpdateDescriptorSetsBuilder lives in ShareGroupVk.cpp/h. The UpdateDescriptorSetsBuilder isn't really GL-specific. Thus it can be moved over to vk_cache_utils.h (more of a Vk utility class). Bug: angleproject:8546 Change-Id: I1ead04bab4c5840e6c471cdc7c5db4220e32bd50 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5303540 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand f85b6970 2024-01-18T11:59:24 OpenCL/Vulkan: Implement program get[Build]Info Adding backend routines for: - clGetProgramInfo - clGetProgramBuildInfo Bug: angleproject:8549 Change-Id: I890bb957e687a429eb0ed3b4756427ac98e302f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5303565 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 0ed0de4f 2024-01-18T10:47:50 OpenCL/Vulkan: Add initial program build support Introducing both clspv compiler lib integration, and clBuildProgram support. Internally we also add buildInternal() routine to abstract compile, link, and build phases. Output SPIR-V is also parsed internally via parseReflection() so that we can extract needed reflection information for CL runtime. Bug: angleproject:8549 Change-Id: If0563f4bea7ed0e04a13ea7a46c125c811d9c2a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5303564 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 2ee295b4 2024-02-15T11:27:39 Vulkan: Add per-level image update tracker * Add a per-level image write tracker to ImageHelper. * It tracks the updates scheduled for different parts of the image. Within each level, it also tracks different layers, currently up to 64. * kMaxParallelSubresourceUpload renamed to kMaxParallelLayerWrites; moved to vk_helper header. * It is reset when a barrier is issued for the image. * Modified ImageHelper::recordWriteBarrier(). * Added isWriteBarrierNecessary(). * Now it checks the added writes for the image. It will no longer issue a barrier if the image is in the same layout and there is no write to a part of the image to which was previously written. * Added ReadImageSubresources to CommandBufferAccess. * It is used for layouts that allow both reading and writing to the image (including self-copy): * TransferSrcDst (used in CopyImageSubData) * ComputeShaderWrite (used in compute-based mipmap generation) * CommandBufferImageWrite -> CommandBufferImageSubresourceAccess * Updated onImageSelfCopy() args to include read subresource data. * Improves gpu_time for TextureUploadETC2TranscodingBenchmark perf test * Windows/NVIDIA: ~180609 ns -> ~62669 ns (~2.88x) * Linux/NVIDIA: ~157283 ns -> ~93360 ns (~1.68x) * Windows/Intel: ~72297 ns -> ~57153 ns (~1.27x) * Added a test to show that self-copy for a write-after-read works. * ArraySelfCopyImageSubDataWithWriteAfterRead * (ArraySelfCopyImageSubData covers RAW hazards; renamed) Bug: b/308455694 Change-Id: I5cef296d991ce6ec02792edc3ffc5cc4994831e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5301855 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Austin Annestrand 1ceddbf6 2024-01-11T16:15:08 OpenCL/Vulkan: Add createProgram routines Introduce createProgramWithSource and createProgramWithBinary. Additionally introduce KernelArgument types, SPIR-V Reflection info types, and DeviceProgram types. Bug: angleproject:8549 Change-Id: I611627d747a5ba6718778fd27fd28477b77fbbe1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5303563 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mark Lobodzinski b45b350a 2024-02-29T10:11:42 Add skip for Pokemon Masters Ex validation warning This warning was generated in the Pokemon Masters Ex trace due to application issues and does not cause the test to fail but does create confusing output: Undefined-Value-ShaderFragmentOutputMismatch. Added it to kSkippedMessages. Test: angle_trace_tests --gtest_fitler=*pokemon_masters_ex Bug: b/319228278 Change-Id: I57bd9cca4b9bb5b681fb26884c9ba6ce8e66c667 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5334761 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 4d362242 2024-02-28T22:00:05 Vulkan: Remove call to angle::GetSystemInfo() This function is expensive, especially when it creates a temp VkInstance to query device info. It was only used to check if running on a Pixel device, but the information retrieved was to make a workaround slightly more precise. This change does away with that information and applies the workaround more generally. If the workaround precision is necessary, the necessary information should be retrieved directly without making the expensive angle::GetSystemInfo() call. Bug: b/327509734 Change-Id: Id097b427c59efde16a5811d484823b207c1a8917 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5331602 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mohan Maiya cdf6220c 2024-02-25T05:12:21 Reland "Vulkan: Feature addition for QCOM foveated rendering extensions" This is a reland of commit 72cf9915f561ca6ca72fa4b6c84c36bba815bf29 In the reland, cache the sample counts as VkSampleCountFlags type and clamp framebufferColorSampleCounts with kSupportedSampleCounts Also evaluate supportsImagelessFramebuffer feature before evaluating supportsFoveatedRendering Original change's description: > Vulkan: Feature addition for QCOM foveated rendering extensions > > Add a new vulkan feature gating support for QCOM foveated rendering > extensions and cache shading rates and sample counts of Vulkan ICD. > > Bug: angleproject:8484 > Change-Id: Id2925541098a605749f93ad5a54c885f4a4a2c66 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5322317 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:8484 Change-Id: Ie831d27ecc0e1429a3fe365d7728f264496e234c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5328188 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brian Sheedy a627dd89 2024-02-27T19:00:07 Revert "Vulkan: Feature addition for QCOM foveated rendering extensions" This reverts commit 72cf9915f561ca6ca72fa4b6c84c36bba815bf29. Reason for revert: Causing crashes on Win/NVIDIA crbug.com/327027614 Original change's description: > Vulkan: Feature addition for QCOM foveated rendering extensions > > Add a new vulkan feature gating support for QCOM foveated rendering > extensions and cache shading rates and sample counts of Vulkan ICD. > > Bug: angleproject:8484 > Change-Id: Id2925541098a605749f93ad5a54c885f4a4a2c66 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5322317 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:8484 Change-Id: I45764d8119388fa2edb3e08825957fbc811b31a5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5328729 Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi f0af4730 2024-02-26T21:16:02 Vulkan: Catch misuse of AddToPNextChain Bug: angleproject:8484 Change-Id: I02a9071509f68ad050a8abab25f11b9a8da53816 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5321049 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Mohan Maiya 72cf9915 2024-02-25T05:12:21 Vulkan: Feature addition for QCOM foveated rendering extensions Add a new vulkan feature gating support for QCOM foveated rendering extensions and cache shading rates and sample counts of Vulkan ICD. Bug: angleproject:8484 Change-Id: Id2925541098a605749f93ad5a54c885f4a4a2c66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5322317 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 3c517e45 2024-02-14T14:26:42 Vulkan: Process ClearEmulatedChannels update first * When going through the level updates in flushStagedUpdates(), the ClearEmulatedChannels updates are expected to be before the rest. In addition, there can be only one such update in the level update list. Therefore, now they are processed and applied before the rest of the updates. By doing so, if this is the only update for the image, an unnecessary layout transition can be avoided. * Added flushStagedClearEmulatedChannelsUpdates(). * Added flushStagedUpdatesImpl() for the rest of the update types. * Used clipLevelToUpdateListUpperLimit() to limit the flush loops to the number of levels in subresource update list. * Added unit test to ensure updates after ClearEmulatedChannels are not ignored. * ImageTestES3.IncompleteRGBXAHBImportThenUploadThenEnd * The test contains a ClearEmulatedChannels followed by an image update. If the latter is ignored in this test, there is a failure during teardown due to orphanNonEmptyBufferBlock when destroying the buffer that contains the update. Bug: b/308455694 Change-Id: I53c73acb60a9c5440548886cde913112a664402d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5297317 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 38cc4cf0 2024-02-14T16:36:08 Vulkan: Update flushStagedUpdate to use switchcase * The if-else statements to check update type have been replaced with switch-case statements for more clarity. Bug: b/308455694 Change-Id: I3d5b77e697d342e77596fd177b2527ece4d228ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5297547 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi acba61cb 2024-02-23T17:13:17 Fix Vulkan driver version for Win/Intel * Updated the Vulkan renderer version for Windows/Intel to follow this format: <DriverMajor>.<DriverMinor> Bug: b/326669051 Change-Id: I41e868820ec351f454589cc33ed66a85669d3790 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5321166 Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski 8c503c1b 2024-02-21T09:37:06 Add skip for 07753 validation error in trace Running Pokemon Masters Ex game on Android generates the validation error VUID-vkCmdDraw-format-07753. Update the SkippedMessages list to avoid trace failures. Test: angle_trace_tests --gtest_filter=*pokemon_masters_ex Bug: b/319228278 Change-Id: I8ffbb8c6f35ef3fead583be1b8f0b96d85c7ea12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5313836 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Gowtham Tammana bcf814fd 2024-02-02T10:30:34 Vulkan: Constrain the dependency on ContextVk in BufferHelper Make the BufferHelper interface be not dependent on ContextVk state. This makes the interface to be suitable for implementation of other APIs with Vulkan backend. Any dependency on ContextVk is made explicit and handled in ContextVk. Bug: angleproject:8544 Change-Id: I8b285f54c8758a26dd7edf27b1371f9afcf7e241 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5303573 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mark Lobodzinski f546983c 2024-01-30T13:39:27 Add test and skip for 07753 validation error Running Pokemon Masters Ex game on Android generates the validation error VUID-vkCmdDrawIndexed-format-07753. This CL adds the TexImageFormatMismatch test to reproduce the error and updates the SkippedMessages list to avoid test failures. Test: angle_end2end_tests --gtest_filter=*TexImageFormatMismatch* Bug: b/319228278 Change-Id: I6ee2cac0bc899e945ef0d4aff33d5e73299c6954 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5309857 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Shahbaz Youssefi 8346addb 2024-02-06T15:40:31 Contain X11 includes and free usage of common terms This change undoes workarounds where some terms were avoided so there is no clash with X11 (such as Success, Bool and None). In particular, this helps us make sure we never include the X11 headers in such an unconstrained manner as to clash with our code. Bug: angleproject:8520 Change-Id: I53d9657c5a33164064d2c80a206b96fd52f607f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5273491 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org>
Austin Annestrand 19e21b1e 2024-01-11T14:38:49 OpenCL/Vulkan: Add initial support for cmdQueue Introduce OpenCL command queue object creation for Vulkan backend in ANGLE. Bug: angleproject:8500 Change-Id: I08a63e91aa0ee75dd2be00c770f521c43a3f83b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5233367 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Mohan Maiya e04b7c73 2024-02-17T10:42:56 Vulkan: Expand feature to enable sample usage for all AHBs Rename forceSampleUsageForImageWithExternalFormat to forceSampleUsageForAhbBackedImages and expand scope to force enable VK_IMAGE_USAGE_SAMPLED_BIT usage flag for all AHB images irrespective of the AHB usage requested by the app. Bug: b/155487768 Change-Id: I81cc4b705339b6ff00d187faf37f66d1be1a2c8a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5304997 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand af56ca61 2024-01-11T13:14:32 OpenCL/Vulkan: Initial support for context Introduce OpenCL context object creation for Vulkan backend in ANGLE. Bug: angleproject:8499 Change-Id: I56794649c87d5cf1490e496525e6534c8f90ce32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5233366 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Mohan Maiya 3ca8befb 2024-02-14T12:35:08 Vulkan: Handle multi-context apps in pipeline cache graphs Append a monotonically increasing counter to filename so apps and benchmarks with multiple contexts don't clobber each others files. Bug: angleproject:6565 Change-Id: I5c781895e1ec8cc65728aa752e28fb2acb02abe9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5297288 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya 6607a2b9 2024-01-17T15:58:20 Vulkan: Add support for VK_EXT_vertex_input_dynamic_state Hook into VK_EXT_vertex_input_dynamic_state so pipeline states that differ only in vertex input state can reuse existing pipelines. Bug: angleproject:7162 Tests: StateChangeTestES3.Vertex* Change-Id: Icd3134dee93fc5fc2e9d284fcfa8c674b62faec8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5207462 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi aa244358 2024-02-06T14:44:39 Reland "Vulkan: Get rid of X11 include in DisplayVkXcb.cpp" This is a reland of commit 8abbe2836bb49faba8a97e2df59058290e1c385a In the reland, the xcb-util dependency is removed. Original change's description: > Vulkan: Get rid of X11 include in DisplayVkXcb.cpp > > Bug: angleproject:8520 > Change-Id: Iaa251b0ba2858873b8d22e8f9e5dae7a2567c95e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5273489 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: angleproject:8520 Change-Id: I238e0a6c3b94398c10fa1bc39c5a0b4261797311 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5292774 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b380ed1f 2024-02-14T09:31:26 Vulkan: Add EGL_ANGLE_global_fence_sync Chrome has an implicit assumption that due to context virtualization, signaling a fence in one context results in synchronization with _all_ contexts that have previously made submissions. This is not per EGL spec, but the functionality is easily implementable in the Vulkan backend. In the Vulkan backend, each context is given its own "timeline" of submissions (tracked by serials associated with "indices"). The required functionality is implemented through a new EGL fence sync object whose sole difference is that it synchronizes with all the existing timelines rather than the one of the current context. Bug: b/318721705 Change-Id: I6c45d065e592d0d4ed627ce9695196b1086d5021 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5297396 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 2cae27c2 2024-02-14T10:38:18 Vulkan: Enable the doubleDepthBiasConstantFactor feature on NV Experimentally found to make behavior more consistent with other platforms. Discovered through a Dawn issue [1]. [1]: https://bugs.chromium.org/p/dawn/issues/detail?id=2076 Bug: b/249380591 Change-Id: I27777397d717da0d400b9e15508b17b5329e1e8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5296380 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi dbc6bd9d 2024-02-12T14:07:49 Reland "Vulkan: Fix alignment issues with SecondaryCommandBuffer" This is a reland of commit e53270c9ca1afe393d6d7d0359e81cf6755b6ca5 Original change's description: > Vulkan: Fix alignment issues with SecondaryCommandBuffer > > This solves undefined behaviour on 64-bit systems. This inflates the > size of a few commands, but most commands either already did align to 8 > bytes or could be aligned to 8 bytes with a few tweaks. > > Bug: angleproject:7852 > Change-Id: Ie61976d5bf8df7790acd95c0e15d4c79402622a1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5288636 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:7852 Change-Id: Ie206e66fc21c5db7c9e67eb478d9cddada5db8e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5296376 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Austin Annestrand c673c837 2024-01-08T19:05:38 OpenCL/Vulkan: Initial support for platform/device Introduce OpenCL platform and device object creation for Vulkan backend in ANGLE. Bug: angleproject:8498 Change-Id: I5af9a23ed343648115bd9f0e81cd7a53080e2982 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5233365 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov 243f8ad9 2024-02-14T11:44:58 Revert "Vulkan: Fix alignment issues with SecondaryCommandBuffer" This reverts commit e53270c9ca1afe393d6d7d0359e81cf6755b6ca5. Reason for revert: breaks x86 Android build: https://chromium-review.googlesource.com/c/chromium/src/+/5293321 https://ci.chromium.org/ui/p/chromium/builders/try/android-x86-rel/144329/overview Original change's description: > Vulkan: Fix alignment issues with SecondaryCommandBuffer > > This solves undefined behaviour on 64-bit systems. This inflates the > size of a few commands, but most commands either already did align to 8 > bytes or could be aligned to 8 bytes with a few tweaks. > > Bug: angleproject:7852 > Change-Id: Ie61976d5bf8df7790acd95c0e15d4c79402622a1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5288636 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:7852 Change-Id: Id9c7a94ccc12816bc9e8c3803bd940550d9f7953 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5295854 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi e53270c9 2024-02-12T14:07:49 Vulkan: Fix alignment issues with SecondaryCommandBuffer This solves undefined behaviour on 64-bit systems. This inflates the size of a few commands, but most commands either already did align to 8 bytes or could be aligned to 8 bytes with a few tweaks. Bug: angleproject:7852 Change-Id: Ie61976d5bf8df7790acd95c0e15d4c79402622a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5288636 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e45b2fd8 2024-02-08T12:34:06 Vulkan: Implement ANGLE_translated_shader_source Support for this extension was dropped when ANGLE generated SPIR-V directly. Generating disassembled SPIR-V is not ideal as it incurs a large binary size. The online SPIR-V tool found at https://www.khronos.org/spir/visualizer/ is capable of disassembling SPIR-V from hex values. ANGLE now implements this extension by outputting the SPIR-V in hex values and relying on this tool. Bug: angleproject:8523 Change-Id: I1a0529785147acee7b49a7a75b24f7d107ef690c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5278566 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Forbes eaddd3ba 2024-02-09T15:39:43 Vulkan: use linear chroma filter for ycbcr by default This aligns our choice of initial chroma filter with the initial sampler state in a texture object with target GL_TEXTURE_EXTERNAL_OES. It is still possible to confuse the backend in some edge cases (which will be addressed with later patches), but at least we have the default right. Bug: b/315387961 Test: atest CtsNativeHardwareTestCases Test: atest CtsMediaDecoderTestCases Change-Id: I2430a084a95010c7c5084cd858d4255e531e6f13 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5278362 Commit-Queue: Chris Forbes <chrisforbes@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 5d9abeca 2024-02-06T16:24:34 Revert "Suppress VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576" This reverts commit 39b9d94750328ec33aad244ddf28d16d9e748b2d. Reason for revert: Fixed upstream: https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/7439 Original change's description: > Suppress VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576 > > VVL is still working on a fix for > https://bugs.chromium.org/p/angleproject/issues/detail?id=8516#c2. > > Suppress the VVL error to unblock the vulkan-deps > auto roller > > Bug: angleproject:8516 > Change-Id: I58a2593fe0bdde5d53e07ee68e6b83847cd41d37 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5263501 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:8516 Change-Id: Iec2a523e56040b2173489f26a38fe6df6fe1b609 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5273485 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Forbes 3ad163d0 2024-02-09T12:29:40 Vulkan: Don't attach format features 2 version of AHB structure There's no need to attach both VkAndroidHardwareBufferFormatPropertiesANDROID *and* VkAndroidHardwareBufferFormatProperties2ANDROID here. We don't use anything from the `2` variant so just drop it. Bug: b/315387961 Change-Id: I23166743010550ad3f6bb0144c9665b392deac66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5275259 Commit-Queue: Chris Forbes <chrisforbes@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Solti 475784f5 2024-02-07T21:24:36 suppress VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext Bug: angleproject:8522 Bug: b/324243941 Change-Id: I825986e7c98f50522d7ba25c0c78839802c42c3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5277631 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Solti Ho <solti@google.com>
Roman Lavrov c603a4f1 2024-02-08T10:53:27 Don't perf warn about ETC1->ETC2 emulation as it is efficient Format is forwards compatible: https://crsrc.org/c/third_party/angle/src/libANGLE/renderer/gl/formatutilsgl.cpp;drc=21f16cb16333802dfa942d67cac59885f904301d;l=701 Added hasInefficientlyEmulatedImageFormat() helper Bug: b/302115557 Change-Id: Ibc82c27ecf4e3afbfaac52cb45bdda776c50b4b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5278562 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yiwei Zhang ef78e570 2024-02-07T20:52:19 Revert "Vulkan: disable warmUpPipelineCacheAtLink for Venus" This reverts commit 0be59b3d83dd7b72daf2aab9d03702cfa46d4751. Needed by GPL. Meanwhile, the prior jank issue with Dota Underlords has been worked around separately. Bug: b/323708819, b/267577845 Test: parallel shader warmup works with ANGLE-on-Venus Change-Id: I61c63581b8c4e4c776842e7906e52d268e024ed2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5277630 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Solti Ho f431641a 2024-02-07T17:27:51 Revert "Vulkan: Get rid of X11 include in DisplayVkXcb.cpp" This reverts commit 8abbe2836bb49faba8a97e2df59058290e1c385a. Reason for revert: https://chromium-review.googlesource.com/c/chromium/src/+/5274193 Original change's description: > Vulkan: Get rid of X11 include in DisplayVkXcb.cpp > > Bug: angleproject:8520 > Change-Id: Iaa251b0ba2858873b8d22e8f9e5dae7a2567c95e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5273489 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: angleproject:8520 Change-Id: I91bdd48d8893cbe3a6eed8058c0034a4ef1aed0a No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5276987 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Solti Ho <solti@google.com>
Shahbaz Youssefi 8abbe283 2024-02-06T14:44:39 Vulkan: Get rid of X11 include in DisplayVkXcb.cpp Bug: angleproject:8520 Change-Id: Iaa251b0ba2858873b8d22e8f9e5dae7a2567c95e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5273489 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Mohan Maiya d05c9a5e 2024-01-25T13:01:49 Frontend support for QCOM foveated extensions Add frontend state management to support foveated rendering extensions. Bug: angleproject:8484 Test: Texture2D*Foveation* Change-Id: I0e1be9f11b2d442207674562da760f5bfd7debc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5208091 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi 5a061558 2024-01-31T13:05:59 Vulkan: Update dynamic buffer size policy When allocating a dynamic buffer, it is checked if the new data can fit in an existing allocation. However, if the size of the new data exceeds that of the current buffer, a new one is allocated. To avoid using too much memory, if the data size is less than a threshold (a fraction of the current buffer size, a smaller size will be used for the new buffer. However, with a specific pattern for the new sizes, combined with the threshold value, there could be many allocations and deallocations, which can affect the performance. In this CL, the policy to update the dynamic buffer size is updated to avoid this issue. * Instead of using a smaller buffer when the required size is less than 1/4 of the current buffer size, it is done when the average required size is less than 1/8 of the current size. * Added a decaying average required size for the DynamicBuffer object. * mSizeInRecentHistory * For each new buffer allocation, the new required size is used with the average size to calculate the new average. * For each calculation, kDecayCoeffPercent is used as the weight for the existing average, and the rest is the new required size, plus rounding. * kDecayCoeffPercent is currently set to 20%. * sizeIgnoringHistory renamed to minRequiredBlockSize for more clarity. Bug: b/322216767 Change-Id: Idcabbbe50f656910fe2103925e4d6d8602ca3425 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5254218 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxin Hu 39b9d947 2024-02-02T13:32:30 Suppress VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576 VVL is still working on a fix for https://bugs.chromium.org/p/angleproject/issues/detail?id=8516#c2. Suppress the VVL error to unblock the vulkan-deps auto roller Bug: angleproject:8516 Change-Id: I58a2593fe0bdde5d53e07ee68e6b83847cd41d37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5263501 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Forbes f5f3304a 2024-02-02T16:27:38 Vulkan: Simplify handling of YUV filtering support When the requested filtering mode changes, we need to consider whether it is actually supported by the Vulkan driver. Now that we support renderable YUV textures, there are now three interesting cases: 1) The texture has a VkFormat, and so filtering support can be queried from GPDFP, as was already done. 2) The texture is imported from an opaque AHB using an external format, that format is renderable, and so we have assigned one of the EXTERNALn angle formats. This was *not* covered properly, and would lead to VVL errors or UB. 3) The texture is imported from an opaque AHB using an external format, and we have not assigned an EXTERNALn angle format to it, because the format is not renderable, or the Vulkan driver is missing the external format resolve functionality; In this case the angle format is NONE. This was similarly *not* covered properly, although the code did attempt to protect itself from querying the capabilities of format NONE. VVL errors and UB were still possible. To most simply cover all of these cases, capture whether the image has the VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER feature upfront, and forget about format lookups in the internals of the YcbcrConversionDesc. Bug: b/315387961 Change-Id: Ie140293d52c2b88bf06ef19bc54bb1c95927b8ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5259719 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
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>