src/libANGLE/renderer


Log

Author Commit Date CI Message
kyongjoo.oh ac80018c 2025-08-17T06:33:17 CL/Vulkan: Set host cached bit for HOST_PTR buffers Leads to better performance on "clEnqueueReadBuffer" operations when CL buffers are created as host-pointer based buffers. Bug: angleproject:42267018 Change-Id: I18048deea96858180b63cfad95fe33fbab7f11c9 Signed-off-by: kyongjoo.oh <kyongjoo.oh@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981096 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Sean Feng 7280d3d1 2025-10-14T09:56:58 Turn off preferSubmitAtFBOBoundary and add early submit logic Disabling preferSubmitAtFBOBoundary for MALI GPUs and submit pending commands at the draw call time if the number of write-commands in the current render pass reaches a threshold to avoid delaying the submission too much. Bug: angleproject:447444701 Change-Id: I413a4beb7147afd4f064286433a76014b19a49c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6994438 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Sean Feng <Sean.Feng@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
hoonee.cho 2027314b 2025-08-26T17:07:27 CL/Vulkan: Enable OpenCL kernel printf in logcat Added `__android_log_write` for kernel print output buffer in case of android build Bug: angleproject:433980940 Change-Id: I4eac408076c3b4d804949724eff439137172fa54 Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981095 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Sunny Sachanandani 774bca93 2025-10-08T18:41:13 [metal] Add commands scheduled sync object We need a thread-safe way to wait for ANGLE Metal command buffers to be scheduled for IOSurface synchronization with DrDC + Graphite on Mac. The existing eglWaitUntilWorkScheduledANGLE API isn't thread-safe as it reaches into ContextMtl innards to flush the command buffer. This CL adds the EGL_ANGLE_metal_commands_scheduled_sync extension which introduces a EGL_SYNC_METAL_COMMANDS_SCHEDULED_ANGLE sync object type. This sync object is signaled when pending Metal commands are scheduled to run on the GPU (MTLCommandBufferStatusScheduled). These sync objects are thread-safe - eglClientWaitSync() can be called on any thread even without a current context which is needed for DrDC + Graphite on Mac. Bug: chromium:444702048 Change-Id: Ia13b352385a6fefaa026526ef74f6e596a6a6964 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7027996 Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Austin Annestrand c1ae67dc 2025-08-18T17:26:21 cl/vk: Introduce Int64 Atomic support Checks for VK_KHR_shader_atomic_int64 and enables/reports the following if supported: cl_khr_int64_base_atomics cl_khr_int64_extended_atomics Bug: angleproject:447192709 Change-Id: I47102efd3e269d518558993f6068bfc4f9dd79b6 Signed-off-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981099 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
hoonee cho 4d52bedb 2025-08-12T00:28:48 CL/Vulkan: Add 3.0 atomic memory order feature macros With OpenCL 3.0, generic atomic_{load,store} functions are defined with memory_order_seq_cst and memory_scope_device as memory order and scope. For these corresponding feature macros need to be enabled. Setting them up accordingly. Bug: angleproject:379669750 Change-Id: I355cf4107fee10d203837ca0aa4a9f473cd81929 Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981092 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
hoonee.cho 7c7fcb92 2025-07-14T07:56:22 CL/Vulkan: Allocate descriptor sets under lock Multiple threads in the application are accessing the OpenCL runtime simultaneously, resulting in multiple SharedPtr of mDynamicDescriptorPools[] being created for a single context. This can lead to incorrect reference counting and potentially cause `DynamicDescriptorPool::destroy` to be called unexpectedly. This fixes the concurrent access issue through acquiring the descriptor set mutex just before initializing mDynamicDescriptorPools to ensure that only one mDynamicDescriptorPools[] is created per context. Bug: angleproject:383999367 Tests-Passing: test_integer_ops int_logic Change-Id: Iba0fad6813a08e1631b73d5efae4f4639892b36f Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981091 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Gowtham Tammana e9e17890 2025-09-24T15:21:17 CL/Vulkan: Make CommandsStateMap as self contained The `CommandsStateMap` object is used to capture all the state that needs post-processing after a command batch is finished. Making this as a standalone object. Bug: angleproject:446112158 Change-Id: I1f33741da15fe32aae06cba79650dc76426490d5 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981090 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuxin Hu 80130da0 2025-10-01T14:53:23 Vulkan: Enable recycleVkEvent on swiftshader Given that no GPU has reported that vkCreateEvent() + vkDestroyEvent() has more overhead than vkCmdResetEvent(), we will keep the recycleVkEvent feature flag off on all major hardware. Enable the recycleVkEvent feature on swiftshader so we can test the VkEvent recycle code path. Bug: b/440066521 Change-Id: I0eb30ea9a01e287664effa33cef5227f9f438a56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7004937 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Gowtham Tammana 45b0571e 2025-09-24T15:20:53 Vulkan: Add barrier log only when present Bug: angleproject:446112158 Change-Id: I4eb94c1514df5a2eaec70267e2dbbd5a1c2579bd Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6975005 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gowtham Tammana ea35293a 2025-04-14T15:52:02 CL/Vulkan: Dump commandstream on request Dump the command stream to stdout when feature flag `debug_cl_dump_command_stream` is enabled. Bug: angleproject:446112158 Change-Id: I58ea7eec4c842aee382568c7f41c99a242d29680 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6975004 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
kyongjoo.oh 02ffcb36 2025-08-01T08:13:21 CL/VK: Fix heap overflow when kernel args exceed size Prevented memory corruption by validating argument size against allocated push constant size before copying. Bug: angleproject:447192711 Tests-Passing: test_basic vector_swizzle Change-Id: I73b03a31089ad922b9ad7c2295fd1578d60458ec Signed-off-by: kyongjoo.oh <kyongjoo.oh@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981098 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Le Hoang Quyen 715e935d 2025-10-08T21:16:08 D3D11: Add UMA metrics for Create*Shader's timing Bug: chromium:399642827 Change-Id: Iaf22b598305d8c11ec0ea9bafa6cd1361db571f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7022089 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao fd353919 2025-10-03T14:32:05 Vulkan: Fix VMA assertion The primitive restart may generate zero size, and VMA does not like it. Make sure we not pass down zero size here. Bug: angleproject:448916158 Change-Id: I9a901127e8de11ab008e39330bd2eb93a9f135bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7008828 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Gowtham Tammana 01280f65 2025-07-29T10:14:54 CL/Vulkan: Remove spurious clear The external events corresponding to a command stream submit and processed and cleared before vkSubmit. So remove the spurious clear at the time finish post processing. Bug: angleproject:446112158 Change-Id: If2efcc3173e400ad2d386ca374eebe9d9f310692 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981089 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Mohan Maiya b276d1f8 2025-10-03T08:56:54 Vulkan: Add supportShaderPixelLocalStorageAngle feature Don't expose GL_ANGLE_shader_pixel_local_storage extension for Samsung Bug: angleproject:386749841 Change-Id: Ia22a6e8d8625db2abc7e7e9816ac34b7a7dec92c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7006000 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 51fcd399 2025-10-03T10:39:14 Revert "Vulkan: Suppress buggy VU" This reverts commit a83d674ed6b9096a5c5b1f3e3924aaa340bd3867. Reason for revert: Buggy VU was disabled in VVL Original change's description: > Vulkan: Suppress buggy VU > > Bug: angleproject:448630613 > Change-Id: Ibccc4fbbe6257a3b96f5ccb112fec866cc2c3efe > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7003828 > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Yuxin Hu <yuxinhu@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:448630613 Change-Id: I19ebc3cb83d9ceefcfbbb92df0a0e1bde4ff7a36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7007012 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao 41bc2afa 2025-10-02T16:22:33 Vulkan: Remove mBindingDirtyBitsRequiresPipelineUpdate mBindingDirtyBitsRequiresPipelineUpdate and mAttribDirtyBitsRequiresPipelineUpdate are used to avoid GraphicsPipelineDesc::updateVertexInput() call. This function is not being used when supportsVertexInputDynamicState is enabled, which almost all recent drivers do. We could potentially do similar optimizations when supportsVertexInputDynamicState is enabled to avoid RenderPassCommands::setVertexInput() call. But the logic is complex enough not really worth it (See crrev.com/c/6961186 for draft CL). If any, simply compare the new value and old value probably is as good as checking the dirty bits. In this CL, all these dirty bits checking are removed so that we do not waste CPU cycles to track these dirty bits while not being used at all when supportsVertexInputDynamicState.enabled is true. Bug: b/439073246 Bug: b/442636174 Change-Id: I7d71d4fc9388612e7c6ccc50a2e781325fe953bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7007241 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao 8f8f0439 2025-10-02T15:44:46 Group the class methods together In previous many CLs, I intentionally not move around the code for ease of code review. Now everything has settled down, it is the time to regroup class methods together. Also renamed some various in VertexArrayVk to be consistent with each other. No functional change is expected in this CL. Bug: b/439073246 Bug: b/433331119 Change-Id: I84f9a2ff9ea20f359e2f546ecb4e3e503b805748 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7007472 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 62b00f86 2025-10-02T12:19:23 Vulkan: Further minimize VertexArrayVk::syncDirtyEnabledAttrib This CL splits the streaming handling into its own function: syncDirtyEnabledAttrib is now splitted into syncDirtyEnabledNonStreamingAttrib and syncDirtyEnabledStreamingAttrib. This minimize the condition check inside syncDirtyEnabledAttrib. VertexArrayVk::syncDirtyEnabledAttrib() function has a check of bufferGL->getSize() > 0 as well as hasAtLeastOneVertex. And if either of them are false, they simply point to empty buffer. This CL merges these this fallout case into hasAtLeastOneVertex and added ASSERT to ensure that if buffer size is 0, hasAtLeastOneVertex is false. Bug: b/439073246 Change-Id: I5e3592c31469d15f5321208eb0278b10e447118c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6987341 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 7b4ff0b2 2025-10-01T16:30:47 Vulkan: Updates to onFramebufferBoundary 1. Rename to the more appropriate onFrameBoundary 2. Add method to renderer for better encapsulation 3. When being moved to the background some apps unMakeCurrent the contexts and exit without calling other frame boundary APIs. Handle such usecases by treating ContextVk::onUnMakeCurrent(...) as a frame boundary Bug: angleproject:386749841 Change-Id: Ic2a8ecb631d132d99f8508f45f3b454c49f6624e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7004936 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Jisun Lee b152eb30 2025-09-12T21:20:08 Vulkan: Refine conditions to force submit immutable textures To minimize unnecessary submissions, make the activation conditions for forceSubmitImmutableTextureUpdates feature more precise. This also enables the feature for Samsung devices. Bug: b/444728814 Change-Id: Idaf6b36596752f55ec6ba0ca1e4ff516f3a280df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6945861 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 7994bf76 2025-09-29T11:55:00 Vulkan: Avoid double-setting the fragment shading rate Because there were two handlers for fragment shading rate, one for the QCOM extension and one for EXT, every time the render pass started, it would set the fragment shading rate to 1x1 twice. Bug: angleproject:420310117 Change-Id: I905c504c7a7b80b5e7173e5d6a7cabe6f271e7a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6995362 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxin Hu 17307955 2025-09-30T18:08:18 Vulkan: Add a threshold for RefCountedEventRecycler::mEventsToReset Surface Flinger process is not guaranteed to call Renderer::flushOutsideRPCommands(), in that case RefCountedEventRecycler::mEventsToReset is never cleaned up and send back to RefCountedEventRecycler::mEventsToReuse list, which causes file descriptors leaking. This change adds a threshold for the number of items in RefCountedEventRecycler::mEventsToReset. If the threshold is reached, don't add item to RefCountedEventRecycler::mEventsToReset, destroy the items instead. Bug: b/440066521 Change-Id: If4aa0b14ab15e70f192f380e3b9707b405dd6fcb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7001562 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Amirali Abdolrashidi 7093e400 2025-09-29T14:31:06 Vulkan: Fix buffer size for vertex array * In syncDirtyEnabledAttrib() in VertexArrayVk, the array buffer size used for binding (BindVertexBuffers2()) has been changed to that of bufferHelper. Bug: angleproject:448047351 Change-Id: I852e4839cba698c01f92644cf32fadf366c0b54f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6996428 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi a83d674e 2025-10-01T12:42:48 Vulkan: Suppress buggy VU Bug: angleproject:448630613 Change-Id: Ibccc4fbbe6257a3b96f5ccb112fec866cc2c3efe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7003828 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Rachael Newitt c4e942d6 2025-09-25T02:47:45 Tidy up some README.chromium files in Angle. Backfills the Update Mechanism field for dependencies and cleans up some of the other fields which are out of date. Bug: chromium:379934539 Change-Id: I9a952e905ce00c379c4d593dd67b7e0fc6f1794e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981101 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yiwei Zhang ba5db43c 2025-09-27T08:51:25 Vulkan: support MESA PanVK compatibility Naming wise: 1. isARMProprietary: ARM Mali DDK 2. isMesaPanVK: MESA PanVK Compatibility wise: 1. No behavior change for ARM proprietary driver. 2. Gone through each isARM check and update to isARMProprietary for those not applicable to MESA PanVK. 3. Fixed some isMaliJobManagerBasedGPU check which assumes the ARM prorietary driver. 4. Enabled doubleDepthBiasConstantFactor for MESA PanVK. Bug: b/399142853 Bug: b/447647367 Test: no unexpected regressions in dEQP-EGL.* and dEQP-GLES* Test: dEQP-GLES3.functional.polygon_offset.* pass Change-Id: I8f830632b4caf2e63a3ae87e15825e21476bf595 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6992252 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yiwei Zhang <zzyiwei@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu 020c8ea3 2025-09-26T12:35:25 Disable convertLowpAndMediumpFloatUniformsTo16Bits on non-ARM devices It is unknown if other GPUs need this explicitly 32-bit to 16-bit casts, and the performance impact of this feature needs to be verified across different GPUs. Bug: b/405795981 Change-Id: I1b450aea58d6f4a20eddac5c9edceb4ebac4d999 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6990532 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 6218bbd4 2025-09-26T12:20:39 Vulkan: Make min submit command count dynamic * Turned the constant submit count threshold to a variable that can be set for different devices independently. * Added feature flag to enable forcing submission for certain GL commands, such as Clear and Invalidate. * If disabled, it would treat all commands the same and submit at the count threshold without exception. Bug: b/422507974 Change-Id: Ib13d36adfdcf75aa865dafadc279287f4a4bd1c7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6990531 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Tingwei Guo 94777428 2025-08-08T10:36:22 Shading rate should be {1,1} when enabled PER_SAMPLE According to spec, if FETCH_PER_SAMPLE_ARM is enabled, the fragment shading rate is set to {1,1}. Bug: angleproject:437957110 Change-Id: I3ea6958f1aaec5f13923f62001906c7c6c71e09e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6839957 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Tingwei Guo <tingwei.guo@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxin Hu 193e9cda 2025-09-25T15:26:39 Revert "Vulkan: Simplify/Fix DmaBufImageSiblingVkLinux import probing" This reverts commit d917f77130e5194e82418f3bdaa2cd5b2af55c03. Reason for revert: Google Meet Regression https://crbug.com/445863166 Original change's description: > Vulkan: Simplify/Fix DmaBufImageSiblingVkLinux import probing > > Remove the multi-format probing logic in DmaBufImageSiblingVkLinux. > Use the renderer’s base VkFormat and a single check with > VkImageFormatListCreateInfo, instead of looping over mVkFormats with > mutable/non-mutable combinations. This cuts down redundant queries > and streamlines initImpl. > > Also, this CL fixes some issues occur when mapping DRM format into > Vulkan backend formats. > - Default to SampleOnly but prefer Renderable if the modifier properties > exposes both sampling and rendering, since usage at import time is > unknown. > - Fix emulated-format handling issue by using getIntendedFormatID() and > getActualImageFormatID() instead of deriving both IDs from VkFormat with > GetFormatIDFromVkFormat() directly. > > Bug: angleproject:442313595 > Bug: angleproject:426475684 > Change-Id: Ia38d8e7901da10948a2c15eb284b055359dd4a2d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6904888 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: mohan maiya <m.maiya@samsung.com> Bug: angleproject:442313595 Bug: angleproject:426475684 Bug: chromium:445863166 Change-Id: I530e9b363a2e25ec2325e3933a409d0aae9940c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6986844 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Amirali Abdolrashidi 1f40285c 2025-09-24T11:54:44 Vulkan: Bypass buffer for VA if Bind*Buffers2 Due to added support for BindVertexBuffers2 and BindIndexBuffer2, there would be no need to allocate a buffer for vertex arrays via getBufferForVertexArray() if the related features are supported. It should be possible to directly reference the original buffer and the proper offset instead without errors. * The buffer handles and offsets in VertexArrayVk now get the original buffer handle and offset instead of using getBufferForVertexArray(). * getBufferForVertexArray() will now be used only when the following feature is disabled: * useVertexInputBindingStrideDynamicState * (which is used as condition for vkCmdBindVertexBuffers2()) * Renamed the function for index buffer: getIndexBufferForVertexArray() This will be used when the following feature is disabled: * supportsMaintenance5 * (which is used as condition for vkCmdBindIndexBuffer2())) * Moved the rest of the code in getBufferForVertexArray() to ~Impl(), which is used by both the functions above. * Removed redundant condition from the vertex input binding stride dynamic state feature. Bug: chromium:40059200 Bug: angleproject:394337110 Change-Id: I665611f92058048a9778aa4b823fabfad7c96c84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6980316 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop 392d4a4d 2025-09-24T15:58:23 Windows: Fix angle_enable_trace build The writeFile helper was modified to take only two parameters. Test: Build on Windows with angle_enable_trace = true Bug: b/436880895 Change-Id: I603cb1e85a7f9c1f0d2d008adf3a6c9351b4252a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981094 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Liza Burakova 69745720 2025-09-23T11:16:21 [WebGPU] Implement texture copy from cpu reads. This CL implements a slow path to copying from a texture that reads data from the CPU. This path is taken when the src and destination formats differ. Bug: angleproject:438268609 Change-Id: I5a81fbed5bbac68c48537d8c7a2fcc487c31e76e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6847147 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org> Auto-Submit: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand ea4dab49 2025-07-08T18:49:19 cl/vk: add missing map routine locks/counts thread-heavy workloads are exposing parent buffer and sub-buffer mapping/map-count logic. using map lock/count to remedy this. Bug: angleproject:376722715 Change-Id: I1e5cba76f388fa62f244a9372238b2526e910b60 Signed-off-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6973873 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Sean Callanan cb3b51a6 2025-09-12T20:45:38 Vulkan: Respect externalFormat properties for AHB When the Vulkan driver sets `VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` in `VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures`, ANGLE has the option of using `VK_FORMAT_UNDEFINED` rather than the reported `VkAndroidHardwareBufferFormatPropertiesANDROID::format` if the feature set is what is desired. This patch introduces separate checks of `formatFeatures` and the capabilities of `format`, and modifies the validation and creation of `VKImage`s to specify a format explicitly only when this would be necessary to conform to user intent expressed by the usage of the AHB. Test: atest GpuFormatIdentityTest Bug: b/440416844 Change-Id: I629b556c1d1daffbced0992f421db2bcd95bbada Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6944813 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 24fdc63a 2025-09-24T11:52:30 Vulkan: Disable recycleVkEvent Until we figure out whats causing VkEvent leak, disable the recycleVkEvent feature for now. Bug: b/440066521 Change-Id: I1b56554e8986b7113b12280d30cce2aae54b9589 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981088 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Geoff Lang e3dc97b1 2025-09-22T16:38:28 Metal: fix SDK condition macro for mathMode. It was missing conditions for tvOS and visionOS and the conditions were > instead of >=. Bug: chromium:383994655 Change-Id: I0a565a7028a3fe43b745419d9bac1da0abcc99be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6972592 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuxiang Qian 7acb00a4 2025-09-15T15:35:51 Add egl config support GL_RGB16F for Linux Headless Add egl config support GL_RGB16F for Linux Headless. If it is renderable, then ANGLE would generate EGL config for this format. Bug: angleproject:446545299 Change-Id: I213fc6856c561890762eb8548a9a22b3e6fb53f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6975604 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi dd51c3e5 2025-09-16T00:03:20 Vulkan: Expand usage of BindVertexBuffers2 * bindVertexBuffers2() can now be used when vertex input dynamic state is enabled. * Since dynamic vertex input already sets the strides, there is no need to add the strides to bindVertexBuffers2() anymore and passing in nullptr should work. * Added the following token: BindVertexBuffers2NoStride * This is used to avoid the condition check overhead for the draw calls taking this code path. * Removed the condition of vertex input dynamic state from using vertex input binding stride. * The following pipeline flags can now be added to a pipeline object at the same time: * VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE * VK_DYNAMIC_STATE_VERTEX_INPUT_EXT * Changed the condition of positive vertex attribute count to any vertex attributes to add input binding stride flag to the pipeline. Bug: chromium:40059200 Change-Id: Id3be458580da0ca46db554bf292f240dae4d5097 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6944912 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Xin Yuan b4d1333d 2025-07-24T10:28:25 Fix the issues when blitting within same resources Per GLES spec,when the attachments in src and dst framebuffers are identical, angle should generate GL_INVALID_OPERATION. But different mipmap levels of a texture, different layers of a 3D texture or 2D array texture, and different faces of a cube map texture do not constitute identical buffers, these are valid operations. Bug: angleproject:433816259 Change-Id: Ie6d34819dfbc2faa4af22ec370e59c1ed4521bcb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6780168 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Xin Yuan <xin.yuan@arm.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Matt Stark 3da898aa 2025-09-17T05:15:40 Add missing include for windows Bug: chromium:40263312 Change-Id: I3c4c82c3f6ec1c4b26b6a26b2fe56945be0351aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6957755 Auto-Submit: Matt Stark <msta@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shyam Manohar c41ec91d 2025-07-03T13:34:09 CL/Vulkan: Zero-copy support added for CL Images - Using syncHost now for HostTransferConfigVisitor - Modified the interface of copyImageToFromBuffer Bug: angleproject:444481344 Change-Id: Iad315952720fcb23cbc0e58321594cb4d0db71dd Signed-off-by: Shyam Manohar <s.manohar@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6939059 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gowtham Tammana bc69e27d 2025-06-19T11:25:35 CL/Vulkan: Add helper routine to calculate VkBufferImageCopy When copying image to buffer and buffer to image, we need to construct VkBufferImageCopy object. Setting up a helper function for command usage. Bug: angleproject:444481344 Change-Id: I4d156454cea6e0de87604aaecde8809f1669de8c Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6939058 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 91263bbb 2025-09-18T14:55:02 Vulkan:Improve ContextVk::handleDirtyGraphicsDefaultAttribs ContextVk::handleDirtyGraphicsDefaultAttribs() calls updateDefaultAttrib(), which basically does the work ContextVk::onVertexArrayChange() is doing. This CL simplify the code by calling onVertexArrayChange directly from handleDirtyGraphicsDefaultAttribs. onVertexAttributeChange is removed. This also has the advantage that onVertexArrayChange put the for loop inside if check, versus current implementation does all the if check inside the for loop. Bug: b/439073246 Change-Id: Ic7b7f531f2f831d16f34794e23fefc9569a3e142 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6967318 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya a8ed5bd1 2025-09-20T16:38:48 Vulkan: Disable convertLowpAndMediumpFloatUniformsTo16Bits for Samsung Bug: angleproject:405795981 Change-Id: Ib71a5121ab71df57cd30ece8698694f11f91c563 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6970446 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Geoff Lang 0e719508 2025-09-22T11:37:36 Metal: Gate mathMode usage on compile time SDK versions. Integrators of ANGLE who compile with SDK versions lower than macOS 15 would get compile errors by referencing mathMode. Bug: chromium:383994655 Change-Id: I152403977c1233e4049f13f3d99cdd12fdf87073 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6973058 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Avi Drissman <avi@chromium.org>
Mohan Maiya 50927761 2025-09-19T14:45:24 Vulkan: Add externallySynchronizePipelineCacheAccess feature Acquire renderer's pipeline cache mutex IFF externallySynchronizePipelineCacheAccess feature is enabled Bug: angleproject:386749841 Bug: angleproject:445240187 Change-Id: I91804e2713944768a5379adc3113ce7632a17111 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6969910 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Amirali Abdolrashidi 75f6faf1 2025-09-05T17:01:43 Vulkan: Use size in BindVertexBuffers2 * Added the following attribute array to VertexArrayVk: mCurrentArrayBufferSizes * Updated during syncing/updating the vertex array attributes. * Added the pointer for buffer sizes to the following call: vkCmdBindVertexBuffers2EXT() Bug: chromium:40059200 Change-Id: I754741d12a729d42dab7e0f0b166a174c8d86181 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6917838 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Jeff Vigil 61c452ba 2025-09-03T17:23:37 Vulkan: Disable supportsShaderFramebufferFetch for Samsung Disable framebuffer fetch extensions for Samsung. Bug: angleproject:445083429 Change-Id: I89828b148ea1ac8ad2d59626e15d5f9358fe5b3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6962954 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Gowtham Tammana 3d60009c 2025-02-26T00:09:37 CL/Vulkan: Don't serialize on external CQ events At the moment, the vulkan backend is setup with a single queue for all command buffer recordings. So flushing the external cq's on its dependencies is sufficient enough. Bug: angleproject:446112158 Tests-Passing: ocl_cts.test_events Change-Id: I7310f1b5e24abf7476b7a753a280456050e1afd5 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6939057 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Solti Ho 7db4a404 2025-09-19T18:12:41 Vulkan: Fix UBSan by initializing CopyImageParameters A sporadic UBSan crash was caused by reading 'copyYuvWithoutColorConversion' member from an uninitialized CopyImageParameters struct. Fix this by zero-initializing the 'params' variable at the call site in TextureVk.cpp Bug: b/446185698 Bug: b/445180744 Change-Id: I92db7a735b91df8603698bb2a33d95ec6d7556a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6965689 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Solti Ho <solti@google.com>
Gowtham Tammana 096924c1 2025-06-13T17:26:20 CL: Consolidate cl::{Offset,Extents} types The following definitions were equivalent, so consolidating their definitions. - cl::MemOffsets ~ cl::Offset - cl::Coordinate ~ cl::Extents Bug: angleproject:444481344 Change-Id: I6c1bd68bc3260b8da0ab4b4796668caf474e56a1 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6939056 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 04cbd20d 2025-06-16T11:06:44 CL/Vulkan: Fix the rect size calculation Take into consideration on the extraneous region when calculating the size of the enclosing buffer size for buffer rects. Bug: angleproject:444481344 Change-Id: Ifd146035565abf5bea0650ccee375bc2b28a55c1 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6939055 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao b1fc47c7 2025-09-17T18:21:02 Vulkan: add check for vertexAttributeInstanceRateZeroDivisor Allow zero divisor for vertex attributes when mVertexAttributeDivisorFeaturesmVertexAttributeDivisorFeatures.vertexAttributeInstanceRateZeroDivisor is true. Bug: b/439073246 Change-Id: I68705faffcefb38360f6fbcf5d937d1d902180aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6961233 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 17c0d100 2025-09-16T13:59:36 Vulkan: Remove VertexArrayVk::updateActiveAttribInfo This function get called from DIRTY_BIT_VERTEX_ARRAY_BINDING context dirty bit processing. It is doing exact same work as ContextVk::onVertexArrayChange(), which was already been optimized in earlier CL. In this CL VertexArrayVk::updateActiveAttribInfo() is deleted and onVertexArrayChange() is being used, which does minimum things when supportsVertexInputDynamicState is enabled. Bug: b/439073246 Change-Id: I6b388a8f89a63e654d290c6f8d2212052b8c0d1f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6945076 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao cba665f3 2025-09-11T17:59:41 Vulkan: Add fast path for supportsVertexInputDynamicState In earlier CLs, we have stored stride/offset/format/divisor in Vulkan structs directly in VertexArray, this CL try to send these structs to vulkan driver directly without making another copy. divisor code has been modified to update inputRate as well as divisor in VertexArrayVk. WHen program and VertexArray's attribute types matches we use VertexArray's mVertexInputBindingDesc and mVertexInputAttribDesc without any data copy. If attribType mismatch then we make a copy and patch up the stride/format. Bug: b/439073246 Change-Id: I905b1e6d0609ffc4eb63b47e11a84f8617e06c29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6898416 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu f28c8029 2025-09-17T16:02:40 Re-enable the feature that transforms float uniforms to 16 bits Re-enable the feature after suppressing the WebGL conformance tests: https://chromium-review.googlesource.com/c/chromium/src/+/6937051. Temporary disable this feature on PowerVR while the bugs are under investigations. Bug: angleproject:405795981 Bug: angleproject:443302350 Bug: angleproject:443302625 Change-Id: I8263bd6fcf120b7bed8211f0439962be40afd992 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6962958 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Geoff Lang 1b5fc24c 2025-09-17T16:36:33 Metal: Avoid deprecated fastMathEnabled on newer MacOS. Use the mathMode and mathFloatingPointFunctions properties instead. The new enum properties are set to the equivalent bool value from before. Bug: chromium:383994655 Change-Id: Ia28f5b8358fe0721183dd6041432856d25e16475 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6962694 Reviewed-by: Avi Drissman <avi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 7217890d 2025-06-17T11:51:08 CL/VK: Add SerializedExecution feature knob Feature allows for each enqueue-able CL command to submit and wait for fence (debugging aid). Bug: angleproject:444491489 Change-Id: I16b7e74f2a321680a81ab3c8a18dd9534a64ce1a Signed-off-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6941617 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 9e8f3c1f 2025-06-06T15:01:59 CL/VK: Cleanup buffer and image map handling - Create/move memory map routine(s) to CLBufferVK/CLImageVk. - Update image staging buffer routines. - Remove unused CLMemoryVk routines. Bug: angleproject:444481344 Change-Id: Ibd8361ce8eec67a1891effe0fee344ef977d25dd Signed-off-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6941607 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 7201e17d 2025-09-16T11:04:05 Vulkan: Move divisor>MaxVertexAttribDivisor to VA::syncState Another preparation for use mVertexInputBindingDesc directly. Instead of checking divisor > renderer->getMaxVertexAttribDivisor() in ContextVk code, this CL take care of them in VertexArrayVk::syncState, so that all other code do not need to take care of it. Bug: b/439073246 Change-Id: Id938c168a1490e072e6f4bb08b85b60b55968ddf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6955256 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Austin Annestrand b3e715de 2025-07-15T13:43:31 cl/vk: Fix user-event handling - add missing internal retain for user-event setting - add missing predicate for condition variable wait - fix double-alloc on user-event backend creation - mImpl is created during "initBackend", not ctor Bug: angleproject:444482493 Change-Id: I48fa8bca43a06d5ff8b2bceb884a924840ec5682 Signed-off-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6941605 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao e542cb6c 2025-09-15T16:35:34 Vulkan: Split handleDirtyGraphicsVertexBuffers into two funcs ContextVk::handleDirtyGraphicsVertexBuffers() has two code paths that are quite different, depends on if supportsVertexInputDynamicState is enabled or not. This CL splits this function into two so that 1) code is much easier to read that what is done in each case and 2) get rid of if check at draw time. Bug: b/439073246 Change-Id: Iaf9f84fb20d82e784f9dfe8ece321cff94b7b58d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6956208 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Charlie Lao <cclao@google.com>
Lokbondo Kung 938c80d5 2025-09-17T11:57:39 Fix missing include for <ratio> used for std::nano. Bug: b/412761856 Change-Id: I7535e7176e4372df6948f903504594e448153d48 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6961860 Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Loko Kung <lokokung@google.com> Commit-Queue: Loko Kung <lokokung@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 130bdaa9 2025-09-10T12:51:37 Vulkan: Store VkFormat in VkVertexInputBindingDescription2EXT In preparation for next CL that uses VkVertexInputBindingDescription2EXT directly, this CL also stores the VkFormat in VkVertexInputBindingDescription2EXT directly. mDefaultAttribFormatIDs is added to store the angle::FormatID for the default attribute (used when attrib is disabled in VertexArray) Bug: b/439073246 Change-Id: Ia36758b258be23676b9b12c0c7cec7adefe1036a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6935270 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 1252d9aa 2025-05-30T14:16:23 CL: Create frontend event and pass to enqueue APIs Since frontend cl_event object does not depend on enqueue API routines, we can construct it early and then pass to mImpl enqueue API calls (for any backend that needs it). Also update backend routines to init their backend event implementations using frontend event object. Bug: angleproject:444482493 Change-Id: I459dbf34f10cb6b30245479c9966f876d6e905d7 Signed-off-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6941604 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 5298dccc 2025-09-13T21:04:47 Vulkan: Fix depth/stencil blit src layer The depth/stencil views used in blit viewed the exact layer, so they are always 2D and no layer parameter is needed. Tests upcoming in https://chromium-review.googlesource.com/c/angle/angle/+/6780168 Bug: angleproject:433816259 Change-Id: I7fa105d2734c47c86d4d0e82e8f68dc1a23e4612 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6944631 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Panfeng Hou c8af6941 2025-09-16T14:51:55 Vulkan: Enable FragmentShadingRateEXT CTS fix patch was merged, enable per draw and per primitive VRS. Bug: angleproject:397255625 Change-Id: I681a52d9d28572153ff868cfbfc71657f26e3b21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6953541 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Panfeng Hou <panfeng.hou@arm.com>
Mark Mentovai 2f564f1c 2025-09-16T16:46:36 mac: handle Metal toolchain being unbundled from Xcode 26 The Metal toolchain was formerly part of Xcode, but in Xcode 26, it has been unbundled and is now a separate install. Attempting to use the Metal toolchain without installing it results in a build error, such as: error: error: cannot execute tool 'metal' due to missing Metal Toolchain; use: xcodebuild -downloadComponent MetalToolchain By running the suggested command, the Metal toolchain can be installed, but the existing angle build does not know how to find it correctly. For system Xcode installations, tools from the Metal toolchain (`metal` and `metallib`) can be run via `xcrun`. This construct should work equally well for older Xcode versions, for situations where it’s still in use. For the hermetic toolchain, we’ll continue splicing the Metal toolchain into the location it had previously been avialable (see https://chromium-review.googlesource.com/c/6950738), although this is subject to change in the future. Bug: chromium:423933062, chromium:445400016 Change-Id: I139eca51938f7cecfec9b90fd488947160ef4ec9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6955000 Auto-Submit: Mark Mentovai <mark@chromium.org> Commit-Queue: Mark Mentovai <mark@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuxin Hu 8e7fa804 2025-09-15T14:06:38 Check shaderFloat16 feature support for enabling Float16 in Spirv According to VK_KHR_shader_float16_int8 device extension spec: "It introduces two new optional features shaderFloat16 and shaderInt8 which directly map to the Float16 and the Int8 SPIR-V capabilities." We should check if the shaderFloat16 is supported before we generate SPIRV that declares SPIR-V Capability Float16 Bug: angleproject:405795981 Change-Id: Ied7edfbed81ed5b862907c9bb1e772cb43acdb8b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6919673 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Xiang Wang <xwxw@google.com>
Shahbaz Youssefi f0370a41 2025-09-09T19:44:57 Vulkan: Use the GENERAL layout if VK_KHR_unified_image_layouts This lets ANGLE simplify synchronization by generally being able to use memory barriers instead of listing image barriers separately. Although the more specific access masks from VK_KHR_synchronization2 is possibly necessary for some hardware to work optimally (VK_ACCESS_2_SHADER_SAMPLED_READ_BIT in particular). It also lets ANGLE optimize a very specific scenario. Take an image used in the following scenario: 1. Copy to image in a transfer operation 2. Sample from image in the fragment shader of render pass 1 3. Sample from image in the vertex shader of shader pass 2 When GENERAL is not used, there's a layout transition between steps 1 and 2, changing the layout from TRANSFER_DST to SHADER_READ_ONLY_OPTIMAL (with dst stage == fragment shader). Later, at step 3, we need to make sure the vertex shader at least waits for this layout transition to finish... a dependency which is not expressible in Vulkan: * There cannot be a dependency to step 1, because the layout transition is not necessarily done * There is no stage mask that signifies the end of a layout transition. Without GENERAL, ANGLE has no choice but to issue a fragment->vertex dependency before step 3, serializing render pass 2's vertex pass with render pass 1's fragment pass on tilers. When using the GENERAL layout instead, step 3 can issue a transfer->vertex memory barrier, including using a VkEvent, parallelizing the two render passes. The above optimization is possible after this change, but not yet implemented. Bug: angleproject:422982681 Change-Id: Ieaae6f92b8b7d1e9c80c810a759c64b1e81d2dc1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6936485 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 98915e44 2025-09-12T14:15:05 Vulkan: Fix blit src missing mip Bug: angleproject:433816259 Bug: angleproject:40644750 Change-Id: I50261279224dea8e37beff388207b927399d099a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6944327 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi b496b7a5 2025-09-14T22:56:16 Vulkan: Bug fix to tracking of last non-shader-read-only access Observed when an image is sampled in one shader stage and then another, the tracking of which non-shader stage the image was last accessed in was accidentally showing the first shader stage the image was sampled in. Bug: angleproject:388307202 Change-Id: Ic809994b67c00226cad44d9dbedec923639ca5b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6947445 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 46444b3d 2025-09-09T16:13:58 Vulkan: Use VkVertexInputBindingDescription2EXT to store stride This is preparation for next CL. Since most driver supports VK_EXT_vertex_input_dynamic_state, which uses VkVertexInputBindingDescription2EXT and VkVertexInputAttributeDescription2EXT to send stride/divisor/offset to the vulkan driver, why not store these directly in these structs instead of store gl::AttribArray<> and copy then into VkVertexInputBindingDescription2EXT/VkVertexInputBindingDescription2EXT later. This CL only replaced mCurrentArrayBufferRelativeOffsets, mCurrentArrayBufferStrides, mCurrentArrayBufferDivisors with mVertexInputBindingDesc and mVertexInputAttribDesc. It still does the data copy, which means this CL is mostly a mechanical change. But it makes the next CL diff smaller. Bug: b/439073246 Change-Id: Ie3c2034df07ea5e973b07a15f715fdb7c73ec04d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6933260 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 60f694c6 2025-09-10T11:55:58 Vulkan: Bugfixes in preferGlobalPipelineCache 1. per-program pipeline cache was being unconditionally initialized during warmup 2. mergeProgramPipelineCachesToGlobalCache should be disabled when preferGlobalPipelineCache feature is enabled Also, prefer use of global pipeline cache for Samsung. Bug: angleproject:386749841 Change-Id: Ifd66ef8c6d10b8a5ffd3c002239e8747f469ba47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6936119 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Sungyong Choi d917f771 2025-09-01T18:44:34 Vulkan: Simplify/Fix DmaBufImageSiblingVkLinux import probing Remove the multi-format probing logic in DmaBufImageSiblingVkLinux. Use the renderer’s base VkFormat and a single check with VkImageFormatListCreateInfo, instead of looping over mVkFormats with mutable/non-mutable combinations. This cuts down redundant queries and streamlines initImpl. Also, this CL fixes some issues occur when mapping DRM format into Vulkan backend formats. - Default to SampleOnly but prefer Renderable if the modifier properties exposes both sampling and rendering, since usage at import time is unknown. - Fix emulated-format handling issue by using getIntendedFormatID() and getActualImageFormatID() instead of deriving both IDs from VkFormat with GetFormatIDFromVkFormat() directly. Bug: angleproject:442313595 Bug: angleproject:426475684 Change-Id: Ia38d8e7901da10948a2c15eb284b055359dd4a2d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6904888 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com>
hoonee.cho b5b46623 2024-11-07T16:14:12 CL/VK: ArgumentPointerUniform support NonSemanticClspvReflectionArgumentPointerUniform is generated replacing NonSemanticClspvReflectionArgumentPointerPushConstant if push constants size exceeds the limit (test_api min_max_parameter_size) Bug: angleproject:442950569 Change-Id: Ief1f6bb96db6d711dcaa147e1992020c9a33ae23 Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916344 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi 66ca0f48 2025-09-11T11:41:39 Vulkan: Extend BGR565 preference to Mesa * Updated the availability of preferBGR565ToRGB565. Bug: b/409867243 Change-Id: Iecda303bb13c2d99a78d326a192759640008eeb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6937661 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
hoonee.cho 46d75031 2024-11-06T17:12:05 CL/VK: ConstantDataPointerPushConstant support add compiler option "-module-constants-in-storage-buffer" to enable Module-scope __constants to be collected into a single storage buffer Bug: angleproject:442950569 Change-Id: I45b3776301a5cee8896cade71bce517dfad2eda2 Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916343 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao c292f292 2025-09-10T14:34:14 Vulkan: Remove compressVertexData feature This feature was added for performance reason. It was used years ago to improve performance of lego legacy. That entire game dashboard feature was disabled a few years ago. So this code path is no longer been used now, and not been tested on bots as well. This CL deletes this feature and related code path so that we don't just leave it bit rotten. Bug: b/167404532 Bug: b/439073246 Change-Id: I384fc97021592da57d38e8c1771892071ae68a89 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6935271 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
jh.eun 059734f9 2025-05-02T13:20:28 CL: Roll OpenCL headers, docs, CTS, loader Updated OpenCL headers and updated third_party sources accordingly. - Updated OpenCL Headers from change 265df85 - Updated third_party/OpenCL-Docs - Updated third_party/OpenCL-CTS and modified ninja build corresponding to update - Updated third_party/OpenCL-ICD-Loader and modified ninja build corresponding to update - When after updating OpenCL-Docs, entry-points for clIcdGetFunctionAddressForPlatformKHR and clIcdSetPlatformDispatchDataKHR (cl_khr_icd 2.0.0) are generated by run_code_generation.py. Filled code returning INVALID_OPERATION error in the entry-points. - When after updating cl_ext.h, cl_khr_external_memory_dx is removed. Deleted codes referencing cl_khr_external_memory_dx (e.q., CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KHR) Bug: angleproject:441956395 Tests-Passing: test_basic, test_api Change-Id: I08e0b78abb5c0ff5f1ea693ea355893b1a6f765e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6915959 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Alexander Ovchinnikov 9530a896 2025-09-05T18:02:42 Don't use DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT A swap chain for Windows.UI.Composition is created with DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT flag, but is resized without it. This leads to an error, because according to MSDN, this flag cannot be changed by a call to ResizeBuffers. In fact, this flag is never used by any code in ANGLE, so we should remove it. Bug: angleproject:442600654 Change-Id: I3eecd96abd243433b402780c30634abf2528c323 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6919163 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao dcbe926e 2025-09-10T17:17:58 Vulkan: Avoid redundant updateVertexInput on disabled attribs When supportsVertexInputDynamicState feature is disabled, we are calling updateVertexInput right from VertexArray::syncState for both enabled and disabled attributes. But disabled attributes we are also calling contextVk->invalidateDefaultAttribute(attribIndex), which end up with VertexArrayVk::updateDefaultAttrib(), which calls updateVertexInput(). This means updateVertexInput() are called twice for disabled attributes. This CL skips onVertexArrayChange for disabled attributes. Bug: b/439073246 Change-Id: Icf9c08d1a920d9112ef4080b95d0451f6230c6dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6937213 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao 36ff2883 2025-09-10T11:32:12 Vulkan: Remove redundant setDefaultPackedInput call VertexArrayVk::syncDirtyDisabledAttrib() is calling contextVk->invalidateDefaultAttribute(attribIndex), which will set DIRTY_BIT_DEFAULT_ATTRIBS, which triggers ContextVk::handleDirtyGraphicsDefaultAttribs() call, which calls updateDefaultAttrib(), which calls setDefaultPackedInput(). So the setDefaultPackedInput() call in VertexArrayVk::syncDirtyDisabledAttrib() is not needed. Further, when program changes we also invalidateDefaultAttributes(), which dirty all active default attribs, so we can rely on DIRTY_BIT_DEFAULT_ATTRIBS. Bug: b/439073246 Change-Id: Iae985697ace757462d1dbe24e5fdd967863e8674 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6935268 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao b71c7fd7 2025-09-10T16:17:10 Vulkan: Avoid recompute vertexArray attribute's ComponentType ContextVk::handleDirtyGraphicsVertexBuffers() is calculating vertex array attribute's component type. We actually already calculated and stored in VertexArrayState. This CL get the component type from VertexArrayState instead. The other benefit is that it removes the usage of formatId, which helps the next CL. Bug: b/439073246 Change-Id: I4ed32b5714fe48437af6f3a2f5da130ea71019a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6935272 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi f27d1719 2025-07-29T16:41:27 Vulkan: Prefer BGR565 for RGB565 if enabled Some platforms exhibit better performance when using BGR565 instead of RGB565, including when loading buffer data to the image. This change allows such platforms to use a BGR565 image in the backend instead of an RGB565 image when using Vulkan, when the corresponding flag is enabled: preferBGR565ToRGB565 * Updated the formats to include B5G6R5 as a fallback to R5G6B5, which would be triggered when the corresponding feature flag is enabled. * The only exception would be when the surface is being initialized as R5G6B5. * In addition, this format will not be subject to forced format fallback. * Added VVL skip that specifically does not allow undefined format for border color for certain formats, including B5G6R5 if flag enabled. * Some suites with RGB565 tests will be run with preferBGR565ToRGB565 enabled on SwS to provide better test coverage. Bug: b/409867243 Change-Id: Ibb8c71b024ba318862f62ded8abd2d07835e8a40 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6799253 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 428afbc2 2025-09-09T12:38:30 Vulkan: Remove hardcoded image layouts In some places, ANGLE assumed and hardcoded the image layout. This was often unnecessary, as the layout (or ImageAccess) was readily available already. In preparation for setting the image layout to GENERAL due to VK_KHR_unified_image_layouts, this change makes sure the image layout is not assumed to be anything specifically not GENERAL. Bug: angleproject:422982681 Change-Id: I831bed0ca20197bd7424295ab0858d6bce83fe81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6932268 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi 5c1ba222 2025-08-22T14:59:58 Vulkan: Add feature flag preferBGR565ToRGB565 * This flag will let certain platforms to prefer using BGR565 instead of using RGB565 for better performance in a follow-up change. Bug: b/409867243 Change-Id: If89eea1e801ca9d1c10021213862e967231a7343 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6876528 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi ad7ee7fa 2025-09-08T11:53:57 Fix RGB565/BGR565 loading functions The BGR565-related loading functions seem to have been defined based on D3D11, especially since D3D11 only has format support for B5G6R5. However, if other backends, such as Vulkan, try to use BGR565, the loading functions do not work as intended. This change aims to correct the loading functions in order to have a single loading methodology for all backends, and to prepare for the future changes that allow the proper usage of B5G6R5 for Vulkan. * Updated the component order in the loading functions related to RGB565 and BGR565. * Updated D3D function map and data related to BGR565 for consistency. * Reverted the PackPixels() exception for RGB565 in Renderer11. * Fixed typo in D3D format data. Bug: b/441803462 Bug: b/409867243 Change-Id: I4d3e497a9435bd65bdf64b527b094267a0353cb8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916353 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi e04b7198 2025-08-28T14:58:08 Fix BGR565 pixel functions It seems that the B5G6R5 read/write pixels switch the red and blue components due to them being based on D3D11, which does not seem to have native support for R5G6B5, instead using B5G6R5 and using the related loading functions to switch the two components. However, Vulkan supports both native R5G6B5 and B5G6R5, and using the latter format (e.g., using BGR565 in the backend instead of RGB565) causes errors in the tests. * e.g., the test BlendPackedTest.RGB565/ES2_D3D11 would fail if the readColor() for B5G6R5 is changed to switch red and blue, although the test is regarding RGB565. This does not affect Vulkan, but if BGR565 is used in Vulkan, the test would fail without this switch. * Fixed the order of the component values in B5G6R5 read/write functions. * Updated packPixels() in D3D11 renderer to use R5G6B5's functions when the internal format is GL_RGB565 and the texture's format is BGR565. Bug: b/441803462 Bug: b/409867243 Change-Id: Ia4883f6dfb5d96e77bbdc087f48e7ffca42a5657 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6847283 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Liza Burakova 718cdb91 2025-09-08T15:32:34 [WebGPU] Set ReadPixels to use context's command encoder. This change modifies ContextWgpu::getCurrentCommandEncoder() such that it now ends a render pass if there's an active one, ensures a command encoder is created, then sets an outHandle command encoder. This streamlines a lot of repetitive calls when getting the command encoder. This change also modifies ImageHelper::readPixels such that it now gets the command encoder from the context instead of making its own. This ensure that when the queue is submitted for a read call, that any draw/clear/etc calls in the queue are also submitted for a texture so that a read call can properly read from the texture. Bug: angleproject:438268609 Change-Id: Iec6d7f7ca27c7640cc8bdb42da53f64e4836dc5a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923328 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Xiang Wang e77725a4 2025-09-02T12:14:55 Add VkFormat id to descriptor cache key's imageSubresourceRange This is to fix the bug when two shaders are modifying the same texture buffer but with different formats, the old buffer view with "incompatible" format can be reused. Bug: b/443105853 Change-Id: Ic3b2202a7d1d408fbbf826414bfcf2b1df4c3a15 Test: GLSLTest.TextureBufferWritesUsingDifferentFormats Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916350 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Liza Burakova f32fa362 2025-09-02T16:14:44 [WebGPU] Add helper methods for streaming indices in syncClientArrays Bug: angleproject:401499251 Change-Id: I2cab62524ce92a01117282726a3d4de1c266f818 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6438259 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jisun Lee 7619f8a0 2025-06-11T00:44:36 Fast copy R8G8B8A8_UNORM / R8G8B8A8_UNORM_SRGB for readPixels Support FastCopyFunction on R8G8B8A8_UNORM and R8G8B8A8_UNORM_SRGB. Copying src pixels to dest directly is more performant than converting UNORM to GLfloat. Bug: b/429541195 Tests: dEQP-GLES31.functional.srgb_texture_decode.skip_decode* Change-Id: If9a3d75dbf7b9fd286a61b144ed607144c833740 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6704713 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
hoonee.cho 1df3b59f 2024-10-30T16:40:51 CL/VK: PrintfBufferPointerPushConstant support Bug: angleproject:442950569 Change-Id: I64edba5a04c2f1f2d3eb7bb34e6629f12269a69c Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916342 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
hoonee.cho 55063f5e 2024-11-06T09:26:38 CL/VK: ArgumentPointerPushConstant support - use physical storage buffers instead of storage buffers - add CLSPV compile options "-arch=spir64 -physical-storage-buffers " - fix NonSemanticClspvReflectionArgumentPointerPushConstant logics Bug: angleproject:442950569 Change-Id: I76a8c3fa6ea87c153022a5976f2914bd62cdfcf1 Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916341 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Shahbaz Youssefi 166c9e23 2025-09-05T12:52:38 Vulkan: Separate barrier data into its file vk::Renderer includes a modified copy of kImageMemoryBarrierData. When using VK_KHR_unified_image_layouts, even more of this data is modified based on device features. Leaving kImageMemoryBarrierData in vk_helpers.cpp runs the risk that it's accessed directly instead of using the copy in vk::Renderer. Bug: angleproject:422982681 Change-Id: I7e288ef0ac519c53842214fe934ba7b2474e1f9c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6927350 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 7d1e4e16 2025-09-08T12:14:57 Manual Roll vulkan-deps from 5107e9eef1bc to af8c2ea541d3 https://chromium.googlesource.com/vulkan-deps.git/+log/5107e9eef1bc..af8c2ea541d3 Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/f6940d2b8a9dc6de805c48eb3e8bafd65118b25c..337fdb6a284fe7f7e374a14271f8e20e579f3263 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/dc22b23433ab3a390b4c75710836691fdb6f11f4..af5376ef7061716a95ab2bc321aeae4f77958a28 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,yuxinhu@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:443133082 Tbr: yuxinhu@google.com Change-Id: I577cc5555b99aa1f903313a83d96ed755634dd79 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923245 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>