src/libANGLE


Log

Author Commit Date CI Message
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>
Geoff Lang 0cc9b7be 2025-09-03T11:33:37 Support more YUV formats in CopyTextureCHROMIUM Add support for formats in GL_ANGLE_yuv_internal_format as source textures to glCopyTextureCHROMIUM. These formats are common AHardwareBuffer formats and Chrome uses them as copy texture sources when decoding video. Bug: chromium:405308165 Change-Id: Ic817cce83b676ee9a517bee4fac6ef94a174961f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6908295 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
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>
Aurora Zhang f8c8264a 2025-09-17T10:01:22 Support RGBX format with GL_RGBA when using glTexSubImage2D Add an additional combination support with GL_RGBA in glTexSubImage2D for RGBX format. Add an end2end test. Bug: angleproject:444335354 Change-Id: I96fc9d3543fc58c9f666bf149f78cf9049758a32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6938945 Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
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>
Chris Dalton ef9c5ce4 2025-09-07T17:50:37 Add a "noncoherent" layout qualifier to PLS Raster ordering can be expensive. If an app knows the geometry in a draw does not overlap, it can mark the PLS planes as noncoherent and opt for using barriers instead. Bug: angleproject:40096838 Change-Id: I2d686c2e64f51940face186637a9fcadcc251bef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923300 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Mark Lobodzinski cf04616b 2025-09-11T12:16:54 Trace/Replay: Make SetupReplayContext(main) last in setup The SetupReplayContext function for the main context was always executed first in the main setup replay function -- move it to last to minimize issues where Frame1 is expecting specific shader state from the main context. Test: angle_trace_tests --gtest_filter=*harry_potter_magic_awakened Bug: b/445208963 Change-Id: Ia48760e704465150617ffd33d419195723a51285 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6950246 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
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>
Cody Northrop 7a630c62 2025-09-15T16:29:55 FrameCapture: Disable GL_EXT_texture_norm16 during capture Test: Lineage2M Bug: b/445241477 Change-Id: Ib4cfd87f0b79646965ea3e24db5b725062cfa725 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6951980 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Mark Łobodziński <mark@lunarg.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>
Xiang Wang 28f18f4c 2025-09-05T12:27:46 FrameCapture: Add GL_TEXTURE_CUBE_MAP_ARRAY support Updated the CopyImageSubDataCubeMapArray e2e test with full rendering pipeline to draw on screen using default frame buffer. Tested that the frame capture will crash during game capture or the e2e test without the fix. Bug: b/419863436 Test: (enable capture sysprop) TextureCubeTestES32.CopyImageSubDataCubeMapArray/ES3_2_Vulkan Change-Id: I7c30ed0fc7304b528020e5ab4f9b23be952c5a51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916781 Commit-Queue: Xiang Wang <xwxw@google.com> Reviewed-by: Cody Northrop <cnorthrop@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>
Shahbaz Youssefi ebf29178 2025-09-05T12:15:23 Vulkan: Rename ImageLayout to ImageAccess This enum really describes how the image is accessed, including what VkImageLayout it should be in for that access. With VK_KHR_unified_image_layouts, it makes little sense to call this enum ImageLayout anymore, given how almost all of them will have VK_IMAGE_LAYOUT_GENERAL. Bug: angleproject:422982681 Change-Id: Id0ea107d339457e90b7a167292b75211eb42f803 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918518 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
hoonee.cho e9a30817 2024-10-28T14:54:38 Vulkan: Support vulkan physical addr in vk_helpers - Add extraAllocationInfo for physical addressing in AllocateBufferMemory/AllocateImageMemory - Add getDeviceAddress which calls vkGetBufferDeviceAddressKHR API to get device address In CL, All the physical addressing supports are enabled when the runtime flag "supportsPhysicalAddressing" is set. Bug: angleproject:442950569 Change-Id: I1658062b3f031b3d55923937947cece0c1b67d67 Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916340 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Shahbaz Youssefi 26926a8b 2025-09-08T13:07:49 Vulkan: Rename CommandBufferAccess to CommandResources CommandBufferAccess was named as such to indicate "what the command buffer is going to access". The new name indicates "what resources are the following command going to use". The rename is happening to reduce usages of "access", in preparation for introducing another "access" which can be confused with this. Bug: angleproject:422982681 Change-Id: Ib072cde8533515ba76734b6426b4d673cb07cc45 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923331 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 0042de5f 2025-09-08T12:04:33 Vulkan: Rename ImageAccess to ImageFormatSupport `ImageAccess` to be used for other purposes. Variable name `access` was also identical to variables of `CommandBufferAccess`. Bug: angleproject:422982681 Change-Id: I69b4d2bd773f1c5ff0fb15c7b611efd1f736061d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923330 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Rafael Cintron 2207a0a2 2025-09-04T17:32:12 Remove multisampledRenderToTextureEXT from D3D Partial implemented was never completed, nor utilized for XR scenarios. CL removes the implementation Bug: chromium:443111620 Bug: angleproject:433462527 Bug: angleproject:42261786 Bug: angleproject:42263509 Bug: angleproject:42263677 Change-Id: If95581d5f9b0e43be96ef6913fe73f547e0b5501 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6915970 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
hoonee.cho acb59de1 2024-10-26T13:13:34 Vulkan: Add VK_KHR_buffer_device_address feature Add to check VK_KHR_buffer_device_address is supported to query a 64-bit buffer device address value for a buffer, which can be used to access the buffer memory via the PhysicalStorageBuffer Bug: angleproject:442950569 Change-Id: Ic86f448c1cb5cef40757406d0ce6259838f77fdb Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916339 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi dbbae298 2025-09-05T12:39:01 Vulkan: Remove debug name from ImageMemoryBarrierData It was always there, but never became useful. Bug: angleproject:422982681 Change-Id: I409c061b07840a1cc9b85220fcbe792944358dba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6919463 Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi fee5826f 2025-09-05T11:23:23 Vulkan: Enable VK_KHR_unified_image_layouts Functionality of the extension is not used by this change. Bug: angleproject:422982681 Change-Id: I68c8b93e69eb47b1d4287edad105514edd36dfcd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918517 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu cb6b73d2 2025-09-05T10:37:28 Temporarily disable FP16 float uniform transform feature Some webgl_conformance_vulkan_passthrough_tests are failing with the shaders generating 16-bit for lower precision uniforms. Temporarily disable the feature while investigating the root cause. Bug: chromium:443182226 Bug: chromium:443182234 Bug: angleproject:405795981 Change-Id: I62850f5dc979912a0605edb1aea5b74774b4421d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918101 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Charlie Lao fecb02db 2025-08-28T12:08:34 Vulkan: Reduce onVertexBufferChange/onVertexAttributeChange When we loop each attribute we end up calling onVertexBufferChange or onVertexAttributeChange. For most drivers supportsVertexInputDynamicState is enabled. This means we are repeatedly check feature bit and set DIRTY_BIT_VERTEX_BUFFERS repeatedly for each dirty attributes. This CL moves these calls out of attribIndex for loop. ContextVk::onVertexArrayChange() now get called directly from VertexArrayVk::syncState() so that we only go through most logic only once if supportsVertexInputDynamicState is enabled. Bug: b/439073246 Change-Id: Ib1316560ef686222e72b4d7ad32c63b043dfbaa5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896934 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 8bae2565 2025-08-22T14:38:23 Vulkan: Improve VertexArrayVk::syncState VertexArrayVk::syncState often time shows up the biggest single API in simpleperf. For example, in tower_of_fantasy it is 7.9% of all CPU time in libANGLE. This function also uses macros which made it hard to debug. This CL removes the usage of macros which makes code much easier to handle. The other real problem is that we are repeatedly calling syncDirtyAttrib() function for disabled attributes. This CL breaks the dirty bits into bindingDirtyBits and bufferDataDiryBits and attribDirtyBits. Only attribDirtyBits will end up doing the actual state sync. All other dirty bits will just turn them into attribDirtyBits. Also disabled attributes will be looped separately. This simplification makes it impossible to have duplicate state syncs since we only call sync*Attrib at the end of function. By splitting syncDirtyAttrib into syncDirtyEnabledAttrib/syncDirtyDIsabledAttrib/syncNeedsConversionAttrib, we also moved the if check from syncDirtyAttrib (which is called within for loop) to syncState. With this CL, simpleperf shows this function has reduced from 7.9% to 5.9%. Bug: b/439073246 Change-Id: I99b5ff0b34a5992e31541d2e9cd81ff5c9dda716 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6876527 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
angle-autoroll 1c275402 2025-09-04T12:38:29 Roll vulkan-deps from 8415cc875465 to 5107e9eef1bc (8 revisions) * Skipped some WRITE-AFTER-READ hazards related to the following: * vkCmdDraw() -> vkCmdCopyImageToBuffer() * vkCmdDrawIndexed() -> vkCmdCopyImageToBuffer() https://chromium.googlesource.com/vulkan-deps.git/+log/8415cc875465..5107e9eef1bc Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/3289b1d61b69a6c66c4b7cd2c6d3ab2a6df031e5..9d764997360b202d2ba7aaad9a401e57d8df56b3 https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/345804025b4cd32ff6e1959cc6c0280927c2e9dd..055b25c02fa80cdcca77fcf94ab64a02f02d9199 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/44cf554790020ee44355dde75f0aff79141cab3c..f6940d2b8a9dc6de805c48eb3e8bafd65118b25c https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/a528f95dc2f92bdd83c0c32efe2d13c806428c9d..34edde1191548c51cf4958f2dc6772bf7f76c8cd https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/54e4c34d401b5b4c5abc5dd04804f7b02a8bc0c0..dc22b23433ab3a390b4c75710836691fdb6f11f4 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 abdolrashidi@google.com,angle-team@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:443095908 Tbr: abdolrashidi@google.com Change-Id: I305b9dc0089ac58be610b99cbf61112c33a03d7d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916334 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu c1cdc2b5 2025-08-22T15:23:58 Transform SPIRV to use 16-bit float for lower precision uniforms This change adds a ShCompileOption flag transformFloatUniformTo16Bits. The flag is turned on in vulkan backends where VK_KHR_16bit_storage extension is supported, and uniformAndStorageBuffer16BitAccess feature is supported. When the compiler flag is turned on, in the generated SPIRV, float data types in mediump and lowp uniforms are transformed from 32-bit to 16-bit. The 16-bit float uniform data is converted to 32-bit with OpFConvert instruction upon loading in SPIRV, this is to minimize the changes in OutputSPIRV.cpp. The converted variable is decorated with RelaxedPrecision, so that SPIRV compiler should be able to treat the converted variable as 16 bits, and the hardware can still benefit from reduced precision floats. The frontend is also notified such SPIRV shader changes by setting the isFloat16 bit in CollectVariables() step, and the frontend will transform float uniform data from 32-bit to 16-bit before storing the data into memory. That way, the uniform data that SPIRV shader reads matches with the uniform data type transformed in the SPIRV shader. This change also updates some test code to allow relative 2^-10 precision wiggle room for mediump uniform floats. This is valid according to spec: https://developer.arm.com/documentation/102502/0101/Shader-precision Bug: angleproject:405795981 Bug: angleproject:440941211 Change-Id: I05db7f5ef744df513fbad87cfed8aa173890ec26 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6851560 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 6888dfb1 2025-09-03T13:40:33 Vulkan: Fix missing vkGetImageSubresourceLayout2EXT ... with angle_shared_libvulkan=false Bug: angleproject:352364583 Change-Id: I6c81aefc6b074d45103a514ddd6d55192c2f660b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6912583 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Liza Burakova 778969f2 2025-08-28T15:54:35 [WebGPU] Fix ImageHelper::flushSingleLevelUpdates This change modifies ImageHelper:flushSingleLevelUpdates to only send a flush command to the context once, instead of in each iteration of the loop if there are multiple texture uploads. This also means that the last texture upload is guaranteed to be flushed, as otherwise that texture could be staged in the queue, but a different command could redefine texture levels which would delete the underlying texture handle but not the command queued for that texture. Bug: angleproject:438268609 Change-Id: I2d49b15fc921829175e99bdb550dddbd81179061 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885223 Commit-Queue: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Geoff Lang b449a24a 2025-08-28T14:23:00 GL: Disable BaseVertex and BaseInstance extensions on Linux This is a speculative fix for some rendering issues seen on Linux. Client data also appears to be broken when using BaseVertex functions, this will disable the functions until those issues are fixed. Re-add the check for GL_ARB_base_instance, this was likely not the culprit. Bug: chromium:427956856, angleproject:431097618 Change-Id: If48121d3c4819a46091de4360a2159b9bf14313e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6897307 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yang Gu a3505ae6 2025-08-28T13:47:05 Prefer non-WARP device for angle_end2end_tests When we have both WARP and a real GPU, but WARP comes first, angle_end2end_tests always shows the active GPU is 0, and always uses WARP for tests. This CL prefer the non-WARP device instead. Bug: angleproject:441816895 Change-Id: I787b25f9ff6ad0a98e5fbc445b580b897bd52033 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896220 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Tom Sepez 2d28e33f 2025-08-28T23:50:51 Avoid some large copies in range-based for-loops Avoid copies as detected some time ago by a clang compiler plugin, typically this indicates a missing & in the range-based for-loop. -- For the vector initialize code, see https://godbolt.org/z/4PWseve5P as to why I think a copy-assign is more efficient than a copy- construct followed by a move-assign. Bug: b/415953694 Change-Id: I2cf9f713277d811127834235507ee075c4a72956 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6898417 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Tom Sepez <tsepez@chromium.org>
Cody Northrop 1e3e4eb7 2025-08-30T17:25:20 FrameCapture: Don't issue Begin/End for Timestamp queries Timestamp queries are issued with glQueryCounterEXT rather than glBeginQuery/glEndQuery. This CL updates how we generate timestamp queries in MEC. Before this, we were getting the following errors: API, Error, High: Error:glBeginQuery::<target> is not an accepted value API, Error, High: Error:glEndQuery::<target> is not an accepted value Test: Minecraft Vibrant Visuals trace Bug: b/442154222 Change-Id: Ib6dc01c3b57afcbebfdefa38e6abc883564ea6bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6903038 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com> Auto-Submit: Cody Northrop <cnorthrop@google.com>
Tom Sepez 3d08d885 2025-08-27T23:27:51 Log sanitized message in InfoLog::appendSanitized(). Currently, after producing a sanitized version, the unsanitized string is logged. -- convert away from char* arguments while at it. Bug: b/441583909 Change-Id: I9ee91d303df6c5b874fd1971347b9db3ba03f51c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6893268 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Tom Sepez <tsepez@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tom Sepez 6f0337a0 2025-08-28T23:13:22 Avoid some needless c_str() calls. Remove conversions from string -> char* -> string, as detected some time ago by a clang compiler plugin. Typically, this occurs when passing a c_str() result to a function that expects a string argument. Bug: b/412730353 Change-Id: I1d9c83e9ed5c4900eec266e71f534661f0f3d4d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896657 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Tom Sepez <tsepez@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuxin Hu 28682948 2025-08-14T15:20:16 Update setFloat and getFloat APIs to handle 16-32 bit transformations This change checks that if linkedUniform.isFloat16() is true, then transform 32-bit float to 16-bit half float before writing the data to memory, and transform 16-bit half float to 32-bit float after reading the data from memory. Given that we did not change buffer layout, and the spirv requirement with matrix component alignment, we have to copy transformed data row by row / col by col, or element by element. This change is no op, as none of the linkedUniform.isFloat() bit is set to true. The change will take effect in the future change when we add the compiler code that set linkedUniform.isFloat() to true. Bug: angleproject:405795981 Change-Id: I72b74eb340dae723501038875c3706ad2c1cc3f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6851558 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Igor Nazarov e64b1e54 2025-08-29T15:51:30 FrameCapture: Restore end of trace capture log The log was accidentally removed by: Add long ANGLE traces feature https://crrev.com/c/angle/angle/+/6476924 That was originally added in: FrameCapture: log end of trace capture https://crrev.com/c/angle/angle/+/5557966 Bug: angleproject:343190307 Bug: angleproject:425728227 Change-Id: I68125981a3841c3d5e25aeaab3d792b8b047182a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6898285 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Gowtham Tammana 4983b4c9 2025-05-14T13:54:47 CL/VK: Track both read/write usages of mem objects Track both the read and write usages when determining the need for barrier insertion. Bug: angleproject:441240590 Change-Id: I2a70905dbadd9bdba6fe6b83dd980963b6380a79 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885851 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gowtham Tammana ce158355 2025-05-06T17:11:33 CL/VK: Add isReadOnly() query for CLKernelArgument A new helper function `isReadOnly()` is added to CLKernelArgument. This makes the determination of memory dependencies more flexible. As a result, updated the `addMemoryDependencies` function to take in the write usage boolean. Bug: angleproject:441240590 Change-Id: I8826f88b7ff84ee7c689a68df4c5121ee9f12619 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885850 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Gowtham Tammana 2a44be85 2025-05-28T15:17:33 CL/VK: Update the HostTransferConfig to supported configs Setup HostTransferConfig constructors to enable only supported configurations. Bug: angleproject:441471275 Tests-Passing: - ocl_cts.test_mem_host_flags - ocl_cts.test_basic readwritebufferrect - ocl_cts.test_buffers - ocl_cts.test_allocations Change-Id: I19afab8f66d2b025b532b42de161557b9dfbf563 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6892626 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Gowtham Tammana 0efe1a44 2025-05-16T16:23:10 CL/VK: Use UHP buffers for host transfer config We setup staging copy command for host side enqueue commands - eg. enqueueWriteBuffer. Setting CL_MEM_USE_HOST_POINTER (UHP) buffers as defaults for these staging ops so that zero-copy can be leveraged if supported. Bug: angleproject:441471275 Tests-Passing: - ocl_cts.test_buffers - ocl_cts.test_allocations - ocl_cts.test_mem_host_flags - ocl_cts.test_basic bufferreadwriterect Change-Id: Ifc584652b513f0ed0633a8d0383b244f53d57363 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6892625 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tom Sepez cf28f60d 2025-08-26T19:25:22 Avoid c-style string arguments to writeFile(). Demonstrate how std::string_views can be used to make code simpler and safer, since all the callers already have std::strings. Bug: b/436880895 Change-Id: I0f9d4d95925e684c83eb10c2a1fbab22df55c2d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6886033 Auto-Submit: Tom Sepez <tsepez@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shyam Manohar e842b5f8 2025-05-06T14:38:27 CL/Vulkan: Zero-copy support added for CL Buffers - Used VK_EXT_external_memory_host and VK_KHR_external_memory extensions - Added interfaces to CLBufferVk class for validating zero-copy ability - Added logic in CLBufferVk::create to use zero-copy if eligible - Added new HostExternalMemory class to provide utility functions - Added VkPhysicalDeviceExternalMemoryHostPropertiesEXT for querying Tests-Passing (having usage of CL_MEM_USE_HOST_PTR): - ocl_cts.test_api - ocl_cts.test_basic - ocl_cts.test_buffers - ocl_cts.test_mem_host_flags Bug: angleproject:441471275 Change-Id: I296e709a4f67911dcd6d0ae89750e8e0262625f4 Signed-off-by: Shyam Manohar <s.manohar@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6892624 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Tom Sepez a4e0bacc 2025-08-28T16:41:09 Avoid dangling pointer in Context11::popGroupMarker(). Fortunately, the pointee is unused, but move the string from the marker stack before destroying it during a pop() of the stack, so that its c_str() may live through a call to endEvent(). -- Do the same for Context9::popGroupMarker(). Bug: b/441729484 Change-Id: Id05aa92529ecc8938282273e68d95ac51966d229 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896927 Auto-Submit: Tom Sepez <tsepez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 1ed999ea 2025-08-25T16:02:01 Vulkan: Move sampler cache to share group The sampler cache (and the adjacent yuv-conversion-info cache) were in vk::Renderer, but they were not thread safe. Bug: angleproject:440364873 Change-Id: I2dc034f2db400f680ca91a9fde509d90f90c957e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6870736 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Jonghyuk Eun cdf428a2 2025-04-01T10:24:08 CL/VK: Update Samsung preferred/native vec widths Update CL_DEVICE_PREFERRED_VECTOR_WIDTH_* and CL_DEVICE_NATIVE_VECTOR_WIDTH_* for Samsung. The values may vary depending on the vendor. Updating only the values for SAMSUNG here. Bug: angleproject:406022413 Change-Id: Iad575298a11cfb41e620ab9cfd5f970eb6ea0b55 Signed-off-by: jh.eun <jh.eun@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6386421 Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tom Sepez a02670d6 2025-08-26T20:41:16 Move unsafe buffers inside header guard macros While this is exactly opposite of what Chromium has chosen to do, there is an issue with clang-format trying to indent preprocessor directives four spaces relative to include guard. This is because Angle's .clang-format file specifies IndentPPDirectives: AfterHash but Chromium's does not. The current placement is sufficient to throw off clang-format's guard detection since the guard macro no longer covers the entire file. Bug: b/436880895 Change-Id: Ic6b99c8cef6213939cdf9b42af8730e1eb423065 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885892 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Tom Sepez <tsepez@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tom Sepez 25390156 2025-08-21T00:13:19 Suppress unsafe buffers on a file-by-file basis in src/ [1 of N] In this CL, we suppress many files but stop short of actually enabling the warning by not removing the line from the unsafe_buffers_paths.txt file. That will happen in a follow-on CL, along with resolving any stragglers missed here. This is mostly a manual change so as to familiarize myself with the kinds of issues faced by the Angle codebase when applying buffer safety warnings. -- Re-generate affected hashes. -- Clang-format applied to all changed files. -- Add a few missing .reserve() calls to vectors as noticed. -- Fix some mismatches between file names and header comments. -- Be more consistent with header comment format (blank lines and trailing //-only lines when a filename comment adjoins license boilerplate). Bug: b/436880895 Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Sungyong Choi 616a341b 2025-08-26T13:56:40 Vulkan: Set EGL_NATIVE_VISUAL_ID for EGL_KHR_platform_gbm Spec requires EGLConfig on GBM platform to report a GBM color format in EGL_NATIVE_VISUAL_ID. Previously this field was left unset. This change ensures compliance by assigning the appropriate GBM color format. Bug: angleproject:7829 Change-Id: I6c5a23374824c444e0de0b6592ea31eb855722e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6882716 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuxiang Qian 611f9ac0 2025-08-20T16:10:13 Lower the cap of max element index Currently, ANGLE follows vulkan spec and returns UINT_MAX -1 for GL_MAX_ELEMENT_INDEX. However, ANGLE stores vertex index in int, so even if we use index a little less than the limit, ANGLE would still catch the overflow error. Modify the cap to 2^30 - 1 to make it safer. An end2end test is also added. Bug: angleproject:440227026 Change-Id: Ie089c9847f3908f0e8a1b7c4b83c8fea1cde262e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6870270 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 677d8281 2025-08-25T15:59:46 Vulkan: Pass ContextVk to view-creation functions In preparation for moving the ycbcr conversion cache to the share group. This change is a no-op. Bug: angleproject:440364873 Change-Id: I0c18062259b07813dd04ec02650bb6fab48947ad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6879204 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
kyongjoo.oh 2b45ec65 2025-08-24T12:26:12 CL/VK: Fix default LWS when GWS is less than 64 In the case where LWS is NULL and GWS is smaller than 64, the runtime produces a useless uniform region info. Thus, this change clamps LWS to the GWS to avoid this edge-case. Bug: angleproject:42267067 Change-Id: I418c7d503918f4f082825924b463c266bfd862dc Signed-off-by: kyongjoo.oh <kyongjoo.oh@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6877794 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Shahbaz Youssefi fee2bf73 2025-08-25T15:54:50 Vulkan: Limit EGL_NV_context_priority_realtime to Android Device creation fails on Linux when a REALTIME queue is requested, likely due to permission issues. Bug: angleproject:397474813 Change-Id: I0451db1dac9cbf2795439b251274f1a8057cbd6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6880530 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
hoonee.cho 5fed937e 2025-08-24T12:21:53 CL/VK: Add a compile option "-inline-entry-points" When processing the -cl-std=CL2.0 option, ensure that the processed options string includes both "-cl-std=CL2.0" and "-inline-entry-points". This change addresses a CLSPV's compiler option check failure where the -inline-entry-points flag was not being added when the -cl-std=CL2.0 (using generic address space) was specified. Bug: angleproject:440814992 Change-Id: Ie3e8907e367f21830e58cd5c405de06ba2cbd1da Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6877793 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Panfeng Hou d65058be 2025-08-18T11:01:11 Vulkan: Add support for GL_EXT_fragment_shading_rate_primitive Add support for built-in GL_EXT_fragment_shading_rate_primitive and tests. Bug: angleproject:397255625 Change-Id: I0f37a87a73e869a91e39402f01e53166b359ec3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6850353 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Panfeng Hou <panfeng.hou@arm.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Jisun Lee 0af6e4ee 2025-08-13T06:16:01 Vulkan: Check format compatibility to enable mip levels If redefining the texture level is needed while respecifying the image storage, the base level could be incompatible with the max level count. Enabling the whole level count can cause a null pointer dereference when copying an image that does not support `pixelReadFunction`. To handle the problem, this CL checks the format compatibility and enables only the effective base level. Bug: b/435727832 Test: angle_end2end_tests --gtest_filter=DXT1CompressedTextureTest.* Test: angle_end2end_tests --gtest_filter=Texture2DTestES3.* Change-Id: I01060332f282ef9b2856390d0d7296811a464795 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6813835 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian 51cffa97 2025-08-13T14:23:51 Implement EGL_NV_context_priority_realtime In this extension, new attribute value EGL_CONTEXT_PRIORITY_REALTIME_NV is accepted for EGL_CONTEXT_PRIORITY_LEVEL_IMG. In ANGLE, this extension should depend on VK_EXT_global_priority and VK_EXT_global_priority_query. The implementation of creating device queue is also modified for this new attribute value. New end2end test is added to check if this new attribute works. Bug: angleproject:397474813 Change-Id: I68316fe371f5a495dbc78b106fc89787be18e086 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6857673 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
jh.eun 061a43c6 2025-08-13T16:35:20 CL/Vulkan: Implement cl_khr_priority_hints cl::CommandQueue contains queue priority from clCreateCommandQueueWithProperties. Similar to EGL_IMG_context_priority, a queue with a pre-assigned priority is selected when submission. Bug: angleproject:433980937 Tests-Passing: OCLCTS.test_api queue_hint Change-Id: I3a7bcc62e5d8186b51f771ab2c01cc18ddfcd195 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785088 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Raja  Wasim Husain 8ef76b6a 2025-08-04T12:34:17 CL/Vulkan: cl_khr_external_memory extension (pt.2) - Make this extension visible if Vulkan implementation support features supportsExternalMemoryFd and/or supportsExternalMemoryDmaBuf - Implemented APIs clEnqueueAcquireExternalMemObjectsKHR and clEnqueueReleaseExternalMemObjectsKHR - Updated clCreateBufferWithProperties to handle external memory file descriptor. Bug: angleproject:378017028 Change-Id: I1751982c8e9b2cd07b7e251cc54db5dcd1bcda20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6843980 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu d4d42356 2025-08-22T11:30:42 Remove the duplicated branch There is no code difference in the if and the else branches, remove the duplicated branch. Bug: angleproject:405795981 Change-Id: If593476d2b5cd02567ed1896625072128cf21b0f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6876346 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxiang Qian 1f83d739 2025-08-01T16:59:11 Expose VK_EXT_global_priority and VK_EXT_global_priority_query To implement EGL_NV_context_priority_realtime, VK_EXT_global_priority and VK_EXT_global_priority_query should be exposed. With these extensions, we can query supported global priority and set global priority for the Vulkan queue. Bug: angleproject:397474813 Change-Id: I83f9f19d46f3c81b02246aae2892f7a9c1a09d1d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6857671 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 01cfb98f 2025-08-14T14:17:28 Add a new property to LinkedUniform struct The new property isTransformedFloat will be used by front end API to determine if we should transform 32-bit float to 16-bit float before writing to memory, and transform 16-bit float to 32-bit float after reading from memory. The property value will be passed from UsedUniform (child struct of ShaderVariable) object in UniformLinkder::getResults(). This CL is no op. Bug: angleproject:405795981 Change-Id: Ic4908712f5fa56cb657206a25d9d618b51ac6322 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6851554 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Geoff Lang 86a8d11c 2025-08-11T16:45:39 Metal: Fix potential incorrect format used for texSubImage TextureMtl caches the most recent format used for a texture redefinition in mFormat. During subImage calls, this format may not be the same as the image being uploaded to. Pass ImageDefinitionMtl to these functions which reference mFormat, it contains the format of the image being updated. MacOS OpenGL is skipped because the driver generates errors in glCompressedTexImage2D. Bug: chromium:435683799 Change-Id: Idec6f71870c2d376cad3a5e3628b957009bdced9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6838878 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Raja  Wasim Husain 6c160cad 2025-08-04T12:32:36 CL/Vulkan: cl_khr_external_memory extension (pt.1) - Make this extension visible if Vulkan implementation support features supportsExternalMemoryFd and/or supportsExternalMemoryDmaBuf - Implemented APIs clEnqueueAcquireExternalMemObjectsKHR and clEnqueueReleaseExternalMemObjectsKHR - Updated clCreateBufferWithProperties to handle external memory file descriptor. Bug: angleproject:378017028 Change-Id: Idff08808bc0227b5f98b84c2086b68541665146d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785087 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Liza Burakova 03068e0c 2025-08-20T17:36:22 [WebGPU] Implement direct copy for images. This CL implements CopyImage specifically in cases where the source is the same size and format as the destination. Bug: angleproject:438268609 Change-Id: Icf5f3685bb2f49874d996883c839515314f1c189 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6842317 Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Raja Wasim Husain 6ff016fb 2025-03-31T09:52:14 CL/Vulkan: Update caps for image1d_buffer max size Updated max number of pixels for a 1D image created from a buffer object to come from VK implementation. Bug: angleproject:406022415 Change-Id: I56e9821895245c3a3655ca0c4afbe49ed89baded Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6386422 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Sungyong Choi 68baeeeb 2025-08-12T15:51:07 State: avoid GCC -Waddress by using constexpr null-check helper GCC with -Waddress warns that the static_assert comparing `handlers[0] != nullptr` is always true when MakeDirtyObjectHandlers() fully initializes the array. During constant evaluation, handlers[0] is replaced with the specific member function address (&State::syncActiveTextures), which can never be null, making the comparison tautological. This change replaces the direct `handlers[0] != nullptr` check with a constexpr helper that iterates over all handlers and verifies none are null. By comparing each element in a loop, the check still runs at compile time (constexpr), but avoids a direct “function address vs nullptr” pattern that triggers -Waddress. BUG: angleproject:438226513 Change-Id: Iaa8441000f8b2aa28c44d17730ca223fd4d4595b Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845477 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Sungyong Choi 39265327 2025-08-13T08:05:24 Fix BindDescriptorSetParams bit-field size and -Wpadded warning Replace pipelineBindPoint : 8 with full VkPipelineBindPoint to hold all enum values. Reorder members and adjust bit-field widths to pack within 32-bit units, adding explicit padding to eliminate compiler-inserted padding and silence -Wpadded. BUG: angleproject:438226513 Change-Id: I8950fcb10d5796bd8485791f63980a2905179324 Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845479 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Sungyong Choi 1622d4ad 2025-08-13T07:22:13 Fix -Wparentheses in unlockAndRelease Add parentheses around (valid && owns_lock()) to clarify the intended grouping and silence GCC -Wparentheses warning. BUG: angleproject:438226513 Change-Id: I0d4f3e0153c277c96ec85f255f844bab085f9550 Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845478 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Sungyong Choi 3474d4f3 2025-08-13T08:13:31 Guard overlayVk->onPresent call in drawOverlay GCC warns "'this' pointer is null" (-Wnonnull) when overlayVk could be null at the call site. Wrap the call with an explicit null check to avoid dereferencing a null overlay and silence the warning. BUG: angleproject:438226513 Change-Id: I3c719d703277c0a888eac9fb9edaaac77cf76a85 Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845481 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Sungyong Choi 7febacfe 2025-08-13T08:10:11 Remove unused compressionProp in TextureVk::initImage compressionProp was declared and sType initialized but never used, triggering -Werror=unused-but-set-variable with GCC. The query path uses compressionInfoVar instead, so drop the dead variable and its initialization. BUG: angleproject:438226513 Change-Id: Ib81f418a570b1a7fd858eec4cee4250db49cdd08 Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845480 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>