src/common


Log

Author Commit Date CI Message
Austin Annestrand 54409f2b 2025-09-22T15:00:59 cl/vk: Autogen image order and types Adding ANGLE packed enums for image order and types. Bug: angleproject:447192713 Change-Id: I92950330cbaabc48b3c481d5ce3616a3c0030259 Signed-off-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6980531 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jordan f9685fdb 2025-10-07T07:47:14 Fix: Correct various license issues in README.chromium files Bug: chromium:365320788 Change-Id: I1cb11330176d7a63d3aedee78aa5a5c15fcca595 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7015769 Auto-Submit: Jordan Brown <rop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
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>
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>
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>
Mohan Maiya fde13336 2025-09-21T14:38:09 Update documentation for ANGLE_AHB_FORMAT_* Bug: angleproject:386749841 Change-Id: I235ac1abe7c0fc1e18751377e1a3953d81b507f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6970621 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mark Lobodzinski 02b53738 2025-09-08T08:55:23 Trace/Replay: Fix context grouping issues In tracing Harry Potter Magic Awakened, issues related to context grouping were found affecting shader and program state. While these objects are shared among all contexts, their state is not. This led to race conditions in object lifetimes as well as incorrect states for operations dependent on stader/program state. Test: angle_trace_tests --gtest_filter=*harry_potter_magic_awakened Bug: b/445208963 Change-Id: I8dbb22f72c917103f947cd34d088c4db0cd39731 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6950247 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.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 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>
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>
Charlie Lao 352900dd 2025-09-08T11:54:22 Fix BitSetArray::bits for 32 bit Which was causing compilation issue on some platforms. Bug: b/439073246 Change-Id: I6863f28af3fa5364b7739f2ff61520c9e775752d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6925089 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
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>
Matt Stark e2f7d0e1 2025-09-05T00:26:50 Fix a type error on 32-bit platforms. FileStreamSeek was incorrectly typed to always take a 64-bit integer, but fseeko takes off_t, which is 32 bits on 32 bit platforms. This results in the following error: error: implicit conversion loses integer precision: 'long long' to 'off_t' (aka 'long') [-Werror,-Wshorten-64-to-32] 580 | return fseeko(stream, offset, whence); | ~~~~~~ ^~~~~~ Bug: chromium:425527533 Change-Id: I2fe2596accd33bf41db2dbed2df9a23c3fcd3871 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918314 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Matt Stark <msta@google.com> Reviewed-by: Cody Northrop <cnorthrop@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>
Tom Sepez f8ce4a01 2025-08-26T18:18:54 Add src/common/unsafe_buffers.h Allow for line-by-line control of unsafe buffers warnings. Bug: b/436880895 Change-Id: I609d60c83611037f39d541d5b8c9aba98a6656a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6886308 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Tom Sepez <tsepez@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>
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>
Amirali Abdolrashidi e9214c63 2025-08-26T13:53:52 Update trace event header to allow unsafe buffers * Updated the following file to allow unsafe buffers: trace_event.h * This is to prevent errors when the following GN flag is enabled: angle_enable_platform_trace_events Bug: b/436880895 Change-Id: Iefb5ab6ab07259580b569760816fe9ad1a833161 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885893 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> 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 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>
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>
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>
Sungyong Choi da5a5628 2025-08-11T10:53:06 bitset_utils: Fix GCC shift-count-overflow warning GCC triggers a -Werror=shift-count-overflow when kDefaultBitSetSize is 64, due to the constructor compiling a branch with `value >>= 64`. Although this path is never executed at runtime, GCC still inspects the code and emits the warning as an error. Refactored the constructor to: - Move common reset() into a single place - Split initialization into initFromValue<S>() overloads enabled only for S < 64 or S >= 64 via std::enable_if_t - Avoid generating any shift code when S >= 64 This change ensures GCC does not instantiate invalid shift operations and keeps the initialization logic cleaner. BUG: angleproject:438226513 Change-Id: I1ed0b42540f1bfce469d5738757045bc6d92ac61 Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845475 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Sungyong Choi 6b03372e 2025-08-13T08:58:35 Fix GCC -Wconversion-null error in WriteParamValueReplay Replace insertion of NULL with the string literal "NULL" to prevent GCC -Wconversion-null. BUG: angleproject:438226513 Change-Id: I7048bc43f282d94e72a5e090176c805d2baa5b06 Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845483 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 806c80ec 2025-08-14T13:41:58 Add a new ShaderVariable struct property Add a new ShaderVariable struct property isTransformedFP16FloatUniform. This property will be set by compiler when the corresponding shader variable data type in shader code is transformed from 32 bit to 16 bit. The property value be later passed to LinkedUniform so that the frontend knows if it should transform the data from 32 bit to 16 bit before writing to memory, and if it should transform the data from 16 bit to 32 bit after reading from memory. This change is no op. Bug: angleproject:405795981 Change-Id: Iaae15baa8ab9f7c3295071fa1e1ab04752bd69bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6852396 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Hareesh Karada 7ad67712 2025-08-13T16:33:03 CL/Vulkan: Enable cl_khr_integer_dot_product extension - Enabled extension string and corresponding opencl_c features - Updated packed_cl_enums.json with three new enums - Enabled support for this extension in function clGetDeviceInfo - Add support for CL_DEVICE_OPENCL_C_FEATURES API query through clGetDeviceInfo corresponding integer_dot_product extension - Updated vk_features.json with new ANGLE Feature supports_shader_integer_dot_product - The changes in autogen files are generated by running the run_code_generation.py script Tests-Passing: ocl_cts: test_integer_ops integer_dot_product ocl_cts: test_compiler features_macro VK-GL-CTS:dEQP-VK.spirv_assembly.instruction.compute.opsdotkhr.* dEQP-VK.spirv_assembly.instruction.compute.opudotkhr.* dEQP-VK.spirv_assembly.instruction.compute.opsudotkhr.* dEQP-VK.spirv_assembly.instruction.compute.opsdotaccsatkhr.* dEQP-VK.spirv_assembly.instruction.compute.opudotaccsatkhr.* dEQP-VK.spirv_assembly.instruction.compute.opsudotaccsatkhr.* Bug: angleproject:433980939 Change-Id: Iae7a7753d0556beeb85c254c61a37a0d047df058 Signed-off-by: Hareesh Karada <hareesh.k@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785089 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shufen Ma 5fb77159 2025-08-12T15:21:25 Add stubs for GL_ARM_texture_unnormalized_coordinates Bug: angleproject:352345942 Change-Id: I05e2b0c83f07bfe35eb58fc657b834f6253d4cb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6839660 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shufen Ma <Shufen.Ma@arm.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi bafe39e2 2025-07-14T16:07:51 Vulkan: Use BindIndexBuffer2 when available This Vulkan API becomes available with VK_KHR_maintenance5. In addition to the original args, it also takes the index buffer size. * Added the necessary functions to use the following API: vkCmdBindIndexBuffer2KHR() * handleDirtyGraphicsIndexBuffer() now uses this API if maintenance5 is available. Bug: angleproject:394337110 Change-Id: I9a650ac5a033b449da05e0c226e2cfb6df74a75c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6735725 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Panfeng Hou 2ef85c24 2025-07-09T17:13:52 Vulkan: Add support for GL_EXT_fragment_shading_rate Add support for GL_EXT_fragment_shading_rate. Bug: angleproject:420310117 Change-Id: I7b368afc45baf8551c222b2569991269117d385b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6726817 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Panfeng Hou <panfeng.hou@arm.com> Reviewed-by: Charlie Lao <cclao@google.com>
Mark Lobodzinski 7181239d 2025-04-04T14:13:58 Add long ANGLE traces feature Enables very long Android captures by swapping binary data chunked buffers to/from disk. Bug: b/425728227 Change-Id: I539f72590eece03cfc69d42fc34be9825a9ff1fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6476924 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Geoff Lang b7582680 2025-02-24T18:04:32 Reland: GL: Allow untranslated shaders to pass through on GLES Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which uses the NULL translator and passes the original shader to the driver. The parser is still used for shader reflection. Always enable the null compiler backend. It has almost no binary size cost and is now potentially used when the null ANGLE backend is not enabled. Bug: angleproject:398857482 Change-Id: Id528189ccbbacb1c444eacb151baadfda9fcc04b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6488609 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
angle-autoroll dd6a1a2c 2025-07-24T10:02:04 Roll vulkan-deps from 0b8bda098b9a to b7374531e4a2 (9 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/0b8bda098b9a..b7374531e4a2 Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/597e427cce3fc97a8455b26aba1a1189546717c3..192b610c89300a30221b8909bf71dcb12cd3c92d https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/c8ad050fcb29e42a2f57d9f59e97488f465c436d..de1807b7cfa8e722979d5ab7b7445b258dbc1836 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/8cf1bf9bb922e33135e6e343a566764015da2dc6..04d4deab5d608af8fbe418c422734a73555589c3 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/dad479f6294df6c7a706964c489926be943a8baf..4cf7390eb853a54e7f9ae1c948ac09995ed8b8e5 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,syoussefi@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Tbr: syoussefi@google.com Change-Id: Iff95f0d257f10922a681697549f833092622f395 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6782918 Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com> Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Kimmo Kinnunen b3986258 2025-07-14T14:47:02 Include <utility> in PoolAlloc to fix gcc builds std::exchange needs #include <utility>. Bug: angleproject:429513168 Change-Id: I61e323055cb70545bda883c8bcfb103dcede5136 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6734441 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Takuto Ikuta c03b2d59 2025-07-15T14:18:28 common: Fix include for std::exchange This is to fix error in https://ci.chromium.org/ui/p/chromium/builders/ci/linux-modules-compile-fyi-rel/41761/overview Bug: chromium:40263312 Change-Id: I4d37bd92370b80856571cdd97144b61f8477f362 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6734419 Auto-Submit: Takuto Ikuta <tikuta@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 93b659f9 2025-07-04T12:35:29 Remove PoolAllocator push/pop feature PoolAllocator would manage a stack of memory pools upon client calling push() and pop(). This made the code unnecessarily complicated. The feature was only used with nesting of one, to mark the memory unused after a shader compile. Fix by removing the push/pop feature. Instantiate PoolAllocator in places the previous push() was and uninstantiating instead of previous pop(). This removes the feature where the PoolAllocator would hold on to the allocated memory in order to reuse it. This is seen as a progression: the allocator is held by the compiler, the compiler is held by the shader and each shader typically see only one compile. Thus the free pages were just leaking unused until the shader was destroyed. Instead, destructing the PoolAllocator instead of pop() will donate the memory back to platform/OS, where it is likely more useful. To preserve existing Vulkan behavior, add PoolAllocator::reset() which would mark the memory unused but leave them reserved for the PoolAllocator. Removes UB where PageHeader::nextPage would be accessed after ~PageHeader. Bug: angleproject:429513168 Change-Id: I21e58b46e0887380db3a2cab5ce22f0042cfae9e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6701153 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jeff Vigil 41a5b397 2025-07-09T09:17:10 Vulkan: Fix checking if fds are identical This helps to decide whether it's really disjoint or not. Bug: angleproject:426480610 Change-Id: I8ec9b352195ab16a7e11d2dab30e98138d9f5a6c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6658648 Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 30a1cbc9 2025-07-03T13:00:05 Vulkan: Separate out descriptor set for uniform buffers Bug: angleproject:426412564 Change-Id: Icdbb1e634fc543714d1e3b9cdba0530d400cb153 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6705153 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 2269011c 2025-06-30T14:08:11 Remove BitSet::to_ulong and BitSetArray::to_ulong BitSet::to_ulong() is a bit redundant with bits(), and has a risk of losing upper bits on windows platform where unsigned long is 32 bit. This CL removes the usage of it and replaced with bits(). BitSetArray::to_ulong() method only captures up to 64 bits, all other bits are dropped silently which is wrong. This CL fix this and serialize it as a vector of uint64_t. BitSetArray::to_ulong() is removed in this CL. Bug: angleproject:42264163 Change-Id: I663b2cdacc0e930ee616e333131e831ec124a9d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6691283 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Avi Drissman d28c6adf 2025-06-19T09:41:26 Modernize for macOS 12 macOS 12 is the minimum OS requirement, so remove the "main port" workaround and do other modernization. Bug: b/40250210 Change-Id: I9638014732f0589fc6171c0fe617b3c563f00c28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6655558 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov ad7f595d 2025-06-19T18:20:15 Set src/common/base "Update Mechanism" Bug: chromium:419410757 Change-Id: Ib2a980edd6e7c9b9790c31c8fb6002d58da4a08f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6650800 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Panfeng Hou 9a436772 2025-06-04T16:47:51 Vulkan: Add entry points for GL_EXT_fragment_shading_rate Bug: angleproject:420310117 Change-Id: I8a8efad6cad810b2cb0b600106f6496070495605 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6620340 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi 23097376 2025-06-03T22:26:05 Update src/common/base's README Bug: chromium:378273323 Change-Id: Iaa40abac52fdb2d5f8e3a65333d589097cb98834 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6617103 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 4c964bc7 2025-05-15T00:00:00 Roll third_party/OpenGL-Registry/src/ 5bae8738b..200cea403 (74 commits) https://chromium.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry/+log/5bae8738b23d..200cea4030cb Additional changes: * Removed obsolete workarounds for mismatching signatures between CreateShaderProgramvEXT and CreateShaderProgramv. * Aligned GL backend bindings for GL_OVR_multiview entry points with the specs. * Updated include/GLES2/gl2ext.h. Bug: angleproject:409484297 Change-Id: Ifbb63dcc4bad312b22a368455a121e088b346fab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6596941 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 392dc591 2025-05-15T00:00:00 Remove GL_CHROMIUM_sync_query Fixed: angleproject:420627279 Change-Id: I26dac7c55a7cf6b04121658144e1387be65d2569 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6593552 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Devon Loehr 3e9a1375 2025-04-30T16:03:03 Fix unique object duplication warning Clang has a `unique-object-duplication` warning that warns about objects which are supposed to be unique (like static- or thread-local variables), but may be accidentally duplicated across shared libraries when they have hidden visibility. This CL addresses instances of that warning by: 1. Ensuring that on non-windows systems, objects that need to be exported are unconditionally given "default" visibility 2. Satisfy the compiler by marking everything as default visibility when building a static library, since visibility only matters for shared libraries 3. Mark functions with static or thread local variables as exported. Bug: chromium:368047728 Change-Id: Ic60265353bf2b0af2cd1fef884bfa85038e0db02 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6502093 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 3cf7a604 2025-05-17T19:39:08 WebGPU: Add extensions for importing external textures Add EGL_ANGLE_device_webgpu which exposes the adapter and device used by ANGLE internally. Add EGL_ANGLE_webgpu_texture_client_buffer which allows importing external WGPUTexture handles if they share the same device as ANGLE (queried from EGL_ANGLE_device_webgpu). Bug: angleproject:418022112 Change-Id: I0683d36b84a0f8e0e9b68a5ec0d3aa8b7a95152c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6553063 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 86ce0f0e 2025-04-24T00:00:00 Add EXT_multi_draw_arrays stubs Bug: angleproject:414506477 Change-Id: Idc3ca950b88c9632268922ec7a311936916c2a43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6522405 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev ae70513d 2025-04-18T00:00:00 Remove NamedBufferStorageExternalEXT entry point OpenGL ES does not support DSA. Bug: angleproject:407932145 Change-Id: If5f544de2b43e05888415a4fc805ad6065d4408b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6495409 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Xin Yuan cdcf6a63 2025-04-22T10:19:33 Add R10X6G10X6B10X6A10X6 support on angle Bug: angleproject:409355677 Change-Id: I8115ca73a038360f673552532e9d9b87ff846867 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6438114 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Amirali Abdolrashidi 49d0a332 2025-04-08T16:07:17 Vulkan: Remove ring buffer allocators * Removed the ring buffer allocator functionality from ANGLE: angle::RingBufferAllocator * Also removed the related common files. * (Pool allocators will be used at all times.) * Removed the placeholder functions from the pool allocator. * Removed the following BUILD flag: angle_enable_vulkan_shared_ring_buffer_cmd_alloc * Removed redundant line from ContextVk. Bug: b/410036490 Change-Id: I368fb93a66ddfd192018b09f65004a32339abd5a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6442640 Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 5dd05578 2025-04-14T07:34:57 Revert "GL: Allow untranslated shaders to pass through on GLES" This reverts commit 4e77552b86a89b449ada6d6c18f84285f5812b1d. Reason for revert: breaks ChromeOS and fuzzers Bug: angleproject:398857482 Original change's description: > GL: Allow untranslated shaders to pass through on GLES > > Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which > uses the NULL translator and passes the original shader to the driver. > The parser is still used for shader reflection. > > Bug: angleproject:398857482 > Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: angleproject:398857482, angleproject:410423936 Bug: chromium:410114655, chromium:410100607, chromium:410121218 Bug: chromium:410052365, chromium:410290507, chromium:410178288 No-Presubmit: true Change-Id: I45b01960637a1cda05d21a7df6d07465f6a8f5e9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6448984 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 4e77552b 2025-02-24T18:04:32 GL: Allow untranslated shaders to pass through on GLES Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which uses the NULL translator and passes the original shader to the driver. The parser is still used for shader reflection. Bug: angleproject:398857482 Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 78048112 2025-01-15T15:13:14 Fix IndexRange::vertexIndexCount calculation Use only one loop. Avoid redundant primitive restart index parameter. Avoid calling GetPrimitiveRestartIndexFromType() because the algorithm relies on the value being numeric_limits<T>::max(). Fixes a bug where primitive restart case would process the value after first primitive restart twice, once in both for loops. This would result in incorrect vertexIndexCount. Fix by removing IndexRange::vertexIndexCount, and instead using IndexRange::mCount == 0 to signify empty range. Bug: angleproject:401284933 Change-Id: Ifaeb9949f2e852fb7c5ef80bc47f72bfabba21a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333541 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Roman Lavrov 1593390b 2025-04-07T11:22:21 Increase ANGLE_LIKELY/UNLIKELY probability to 99.99% I can't find the exact value for clang, but according to GCC docs __builtin_expect probability is assumed to be only 90%. When we actually bother to use ANGLE_LIKELY we mean "almost always", so this value can be much higher. Setting to 99.99% because lower values don't seem to trigger the optimization below (at least 99.9% doesn't) __builtin_expect already enables some optimizations such as moving unlikely branches (e.g. cold function calls) out of the primary flow. Increasing the probability enables more aggressive optimizations such as making those function calls store/load registers only in the rare cases when this call is made - which allows the rest of the caller to be made more efficient by not having to handle these register changes. Example: stur w4, [x29, #-0xc] stur x8, [x29, #-0x8] str x3, [sp, #0x8] stp w2, w1, [x29, #0x18] bl 0x356fdc <_ZNK2gl7Context25getActiveLinkedProgramPPOEv> ldp w2, w1, [x29, #0x18] ldr x3, [sp, #0x8] ldur w4, [x29, #-0xc] ldur x8, [x29, #-0x8] Bug: b/383305597 Change-Id: I077f4f2cb90cfb8282409d12adcb02c3302e7761 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6437572 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev eb52b568 2025-03-28T00:00:00 Remove unsupported 1D and DSA entry points OpenGL ES does not support 1D textures, removed TexStorage1DEXT. OpenGL ES does not support DSA, removed EGLImageTargetTextureStorageEXT. Added an explicit command blocklist. Added hashes for *_vulkan_secondaries_* def files. Fixed: angleproject:407932145 Change-Id: Iec34fa475f34a0fa832a49223c51ff1f87b1915d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6426049 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Mohan Maiya 05c491e1 2025-03-15T11:56:07 Vulkan: Optimize GraphicsDriverUniforms update Unless RP is closed there is no need to dirty GraphicsDriverUniforms when the program executable changes. Bug: angleproject:386749841 Test: VulkanPerformanceCounterTest.NoUpdatesToGraphicsDriverUniformsOnProgramChange* Change-Id: Id02e8a17de93e2b73103666fc6cc62ce3cdd8f43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6358315 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Dalton 292bb458 2025-03-14T12:17:49 Cut MAX_COLOR_ATTACHMENTS_WITH_ACTIVE_PIXEL_LOCAL_STORAGE_ANGLE Since the number of real devices that support framebuffer fetch, but do not support draw_buffers_indexed, is effectively zero, MAX_COLOR_ATTACHMENTS_WITH_ACTIVE_PIXEL_LOCAL_STORAGE_ANGLE is an unnecessary complication. These hypothetical devices can fall back on shader images or just not support pixel local storage at all. This closes the door for WEBGL_shader_pixel_local_storage to ever be implemented on top of the ES2 extension that inspired it all, EXT_shader_pixel_local_storage, but WebGL can just use framebuffer fetch instead, or maybe even EXT_shader_pixel_local_storage2 some day. This dramatically simplifies the WEBGL_shader_pixel_local_storage extension. Bug: angleproject:40096838 Change-Id: I9c51f2ce000620f883cb7917d4e8618c8e9ee803 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6354657 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Roman Lavrov 19e45680 2025-03-18T12:50:52 Disable timestamp call from AddTraceEvent for Android platform Android platform's addTraceEvent ignores the timestamp arg, so there is no reason to make this call (and it shows as the hotspot). Behind a new define to avoid breaking this in Chromium Android builds where the timestamp is actually used. Bug: angleproject:404542398 Change-Id: I0f5eea31feb6838c3e62949fcd2947145be4ebf5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6368277 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Mavis Deng 3676ac1f 2025-03-10T17:18:33 Add checks for invalid cases “a[]” and "a[a]" in array parsing Returns empty outSubscripts vector for a[] Adds GL_INVALID_INDEX to outSubscripts for a[a] Bug: angleproject:401979815 Change-Id: Ie18e9bbbec2b15cac69ae048b81f14ab13439400 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6339329 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Mavis Deng <mavis.deng@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 5b343e8f 2025-03-11T11:35:08 Vulkan: Remove support for Stadia Bug: angleproject:42262714 Change-Id: Icae5fe828fe4e0bcd287d297df1bc586708ef86e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6344390 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Amirali Abdolrashidi ae567733 2025-02-26T19:09:14 Vulkan: Make use of VK_EXT_device_fault if exists This Vulkan extension, if available, can provide further details about the device in case of VK_ERROR_DEVICE_LOST. * Added the following ANGLE feature: supportsDeviceFault * It shows whether the extension VK_EXT_device_fault is supported and that the deviceFault bit is enabled on the physical device. * Added the Vulkan entry point for the following function: * vkGetDeviceFaultInfoEXT * Added the following to the renderer: * mFaultFeatures (device feature) * retrieveDeviceLostDetails(); to log information regarding the following if the appropriate support is available: * Address faults * Vendor-specific faults * Vendor binary dump (logged in hex format) * Added RetrieveDeviceLostInfoFromDevice() to vk_renderer.cpp to be used in Renderer::retrieveDeviceLostDetails(). * Updated ContextVk::handleError() to try to retrieve more info in case of DEVICE_LOST. Bug: b/399478440 Change-Id: If8d8e04001dabbe775c023f9922c44ef2205317e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6305888 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alex Dean c0d806b4 2025-02-10T23:01:33 CL: OpenCL support for ANGLE Capture/Replay Implementation of OpenCL Capture/Replay tool in ANGLE. Brief notes about the change: - Most meaningful changes for the capture process are made in src/libANGLE/capture/ - Most meaningful changes for replay are made in util/capture/ and src/tests/perf_tests/ - Many autogenerated files are changed/added to allow the capture of OpenCL objects & calls - The following applications were captured/replayed: benchmark_model, GeekBench Compute, GeekBench ML, AI-Benchmark, various OCL CTS tests - End2end test added to capture_tests. CapturedTestCL.MultiFrameCL/ES3_Vulkan Bug: angleproject:383841335 Change-Id: I55fdaa6cd6c7ba740aaa2351e4d29050059d6d1d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6102105 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov c4caed5f 2025-02-10T06:17:01 Revert "UNREACHABLE -> __builtin_unreachable() in release clang builds" This reverts commit 7370bb573dd8b37006d409fc8917ff49912dd75a. Reason for revert: issue identified by fuzzer crbug.com/394980074 Original change's description: > UNREACHABLE -> __builtin_unreachable() in release clang builds > > This enables compiler optimizations such as reducing the amount of > branching, see anglebug.com/394129077#comment1 > > Reduces .so size in an Android perf build by 0.4%. I spot checked a few > differences and saw less branches (this will be causing a different > behavior in UNREACHABLE branches) as well as more functions getting > inlined (likely due to compiler heuristics due to less branches) > > Bug: angleproject:394129077 > Change-Id: I23411ca7a49d3daf2a0621bfcc0b2523d4db4f5a > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6231111 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Charlie Lao <cclao@google.com> > Commit-Queue: Roman Lavrov <romanl@google.com> Bug: angleproject:394129077 Bug: chromium:394980074 Change-Id: I7398d86c692e5c50ac1185c30e2053eb87f9bd70 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6248417 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen d4083c79 2025-01-31T15:06:36 Metal: Make ObjCPtr available to all modules Move ObjCPtr implementation to src/common/ObjCPtr.h, angle::ObjCPtr so that it's available also outside libANGLE. Bug: angleproject:393263506 Change-Id: I8ecd5632c7ae33ef4b409fc820fad229e91bc0ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219318 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Roman Lavrov 0ef55535 2025-02-06T15:40:28 FastVector::resize_down never increases capacity Note: this function is currently only called by SPIR-V code generation In particular, SpirvTransformer::transform() was bloated 8896 -> 9756 bytes due to ensure_capacity() getting fully inlined. After https://crrev.com/c/6236800 this makes a much smaller difference but this still probably makes sense as before this CL the only difference between resize() and resize_down() was an assertion. Bug: angleproject:394848869 Change-Id: If55a41d67e26a9bc1a30cb0012d1958faa734cc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6238266 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov fb563c3e 2025-02-06T15:29:14 FastVector capacity increase is a function call FastVector::ensure_capacity() gets inlined in many places, but capacity increase is a rarely needed case. Move code to increase_capacity and make it a function call. This reduces the size of a release Android .so by ~14KB. Bug: angleproject:394848869 Change-Id: Iefb5fe894d8c8eaba2d251502925de453290bc31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6236800 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 60a9320c 2025-02-06T14:31:43 Move unlikely path of MakeLengthOp to a function call This function gets inlined many times, adding 96 bytes of assembly to each caller such as angle::spirv::WriteStore etc. In total, this CL reduces Android release .so size by ~14KB Bug: angleproject:394848869 Change-Id: Ief364116fd9b881f9c0dfefb1ca5005282bf57ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6236799 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 7370bb57 2025-02-04T13:19:37 UNREACHABLE -> __builtin_unreachable() in release clang builds This enables compiler optimizations such as reducing the amount of branching, see anglebug.com/394129077#comment1 Reduces .so size in an Android perf build by 0.4%. I spot checked a few differences and saw less branches (this will be causing a different behavior in UNREACHABLE branches) as well as more functions getting inlined (likely due to compiler heuristics due to less branches) Bug: angleproject:394129077 Change-Id: I23411ca7a49d3daf2a0621bfcc0b2523d4db4f5a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6231111 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Jordan 4ce8b71e 2025-02-05T08:06:09 LSC updating angle License ids This is based on the existing id and the license file provided. Bug: b/358504615 Change-Id: I0f0956806f27f8bfed6589157b583d159a25a3d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6232605 Owners-Override: Jordan Brown <rop@google.com> Auto-Submit: Jordan Brown <rop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Kimmo Kinnunen 7d37d970 2025-01-30T13:47:59 Make error messages end in a dot Some messages had dot and some not. Fix by adding dot to all error message string literals. Best effort, for free form string literals, check ANGLE_CHECK invocation sites only. Bug: angleproject:392938089 Change-Id: Idedc3fe1d1e186fb91b5e54407df87f6830995a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6218460 Reviewed-by: Geoff Lang <geofflang@chromium.org>
WeiCong Yu 90e3f6bd 2025-01-17T23:10:55 executable path has non-ASCII characters, metal not available On ARM64 MacOS 15.0.x, Metal Shader with newLibraryWithSource didn't work if the executable path contains non-ASCII characters. Bug: chromium:389559087 Change-Id: I0482c01e2a11973f56c712b36062ed78f3cecf9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6174286 Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Kimmo Kinnunen 0cfea380 2025-01-15T10:46:54 Rename sh::TSpan as general purpose angle::Span Span abstraction is useful for making buffer manipulation more consistent. The commit makes the Span available to all code until std::span can be used. Bug: angleproject:389951202 Change-Id: Id0c6b54bb6e75d3cc4e85af854d9e61b66906752 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6170997 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya de5286fa 2025-01-14T10:59:17 Add missing include to MemoryBuffer.cpp Details can be found here - https://chromium-review.googlesource.com/c/angle/angle/+/6135238/11#message-d271191140cfc29498701cbbb5ee8c6dc20349d0 Bug: angleproject:386749841 Change-Id: I428a61bafcc2d65d7538e0d1c28ebe39ad40b7fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6169566 Reviewed-by: Brian Johnson <hibrian@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Xin Yuan 4c1354d9 2025-01-03T14:41:27 Make sure the AHB is not corrupt when bound to egl image The AHB bound to egl image could be corrupt or not a valid ANativeWindowBuffer, it should be validated when creating egl image. Bug: angleproject:387226848 Change-Id: Iefc5506746ceaad92d16b02d5c0838156eee2f9d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6126739 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi bbc0d702 2024-12-27T07:44:01 Vulkan: Add entry points to lock the Vulkan queue ... which can be retrieved via EGL_ANGLE_device_vulkan. Otherwise the application is unable to use the VkQueue that is retrieved out of ANGLE from other threads (such as Chromium's DrDC feature). Bug: chromium:380295059 Change-Id: Ife80f54440777486f72fc61697a68fb0c2b2d0f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6116046 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya b3af2e86 2024-12-31T08:51:37 Enhance MemoryBuffer API Add support for - 1. reserve - users can reserve sufficient capacity upfront to minimize subsequent reallocations due to resize 2. append - to append data from a source so user doesn't need to track offsets explicitly Bug: angleproject:386749841 Tests: MemoryBufferTest* Change-Id: Ibf2a3228d5a00ed34a7e0c5e3eb185e42677d676 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6135238 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 3226a3df 2024-12-13T14:06:55 Reland: vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid Implement the ability to select a specific device and driver combination through a few new selection criteria: VkPhysicalDeviceIDProperties::deviceUUID VkPhysicalDeviceIDProperties::driverUUID VkPhysicalDeviceDriverProperties::driverID Earlier version had problems due to a test build issue. Per syoussefi@, going to rework the test into a separate CL so that we get the core change merged. Bug: angleproject:351866412 Change-Id: I0a3f4f1a2154a06bf6286a037c9ad4834ef4dda2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6165286 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Yuly Novikov 3b092269 2025-01-09T08:54:00 Revert "vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid" This reverts commit 96abb2c3d9e296ae12e50e0026bf5d3a7b925e7e. Reason for revert: breaks rolling into Chromium https://chromium-review.googlesource.com/c/chromium/src/+/6158098 Original change's description: > vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid > > Implement the ability to select a specific device and driver combination > through a few new selection criteria: > > VkPhysicalDeviceIDProperties::deviceUUID > VkPhysicalDeviceIDProperties::driverUUID > VkPhysicalDeviceDriverProperties::driverID > > Bug: angleproject:351866412 > Change-Id: Ia6716aaed658d2563612d8b5d81287df97b57462 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686557 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Auto-Submit: Steven Noonan <steven@uplinklabs.net> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:351866412 Change-Id: Ic7cf9dcf6a950556cc44f5920498db429c866340 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6164164 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Steven Noonan 96abb2c3 2024-12-13T14:06:55 vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid Implement the ability to select a specific device and driver combination through a few new selection criteria: VkPhysicalDeviceIDProperties::deviceUUID VkPhysicalDeviceIDProperties::driverUUID VkPhysicalDeviceDriverProperties::driverID Bug: angleproject:351866412 Change-Id: Ia6716aaed658d2563612d8b5d81287df97b57462 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686557 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 1a8d7712 2025-01-06T12:44:00 Inline common cases of PackParam<BufferBinding> This appears to improve frame time by ~0.8% in some of my driver_overhead_2 tests on a mobile device. Default implementation is FromGLenum<BufferBinding> https://crsrc.org/c/third_party/angle/src/common/PackedGLEnums_autogen.cpp;drc=0bb109aa3311f35bf0b51bcda3d7e095048168c8;l=106 and has 15 cases. This CL avoids the call for 3 of those cases, most common ones according to frequency of glBindBuffer arg in our trace cpp files. This mapping adds compare/branch instructions for each case, hence inlining increases the caller a little. In this case the increase is about 60 bytes. With the total of 23 callers (GL_*Buffer* exports), this increase the .so size by ~1.3KB. Just inlining the function would yield higher bloat and wouldn't prioritize the common cases. Bug: b/383305597 Change-Id: Icc205fd46fb8ef195c8ffaf67f9cd5194d1d1a5d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6148838 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 00756ced 2024-12-26T01:23:08 Vulkan: Fix build on some compilers Bug: angleproject:352690896 Change-Id: Ia31fef4a3179db08d7fa9f402067c0a9aaf23ffc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6114509 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov db3a88fd 2024-12-19T09:15:50 Add missing include Bug: angleproject:42262955 Change-Id: If0e075d1f291321e3a265d1d68b9d813f8559d68 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6110804 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com> Reviewed-by: Brian Johnson <hibrian@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Solti Ho <solti@google.com>
Roman Lavrov b7d6605a 2024-12-17T09:17:20 Rename GC and CL dispatch threads to <16 chars Current names too long (there is a 15 char pthread limit), they just gets ignored. Add an assert. Bug: angleproject:42262955 Bug: angleproject:375231041 Change-Id: If26c98b709524b9c072f26759b98f81fe0d4367d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6096873 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Roman Lavrov <romanl@google.com>
Yuxin Hu c0ee7b20 2024-12-12T16:49:40 Swap getWidth() and getHeight() if the swapchain is 90 emulate rotated When checking if we need to recreate swapchain, we should swap the getWidth() and getHeight() if Is90DegreeRoration(mEmulatedPreTransform) is true. This is because: When creating swapchain, if Is90DegreeRoration(mEmulatedPreTransform) is true, we store swapped mSurfaceCaps.currentExtent.width and mSurfaceCaps.currentExtent.height in getWidth() and getHeight(), but we use the original mSurfaceCaps.currentExtent.width and mSurfaceCaps.currentExtent.height to create the swapchain. On next acquire, to check if the swapchain property changes, we should swap getWidth() and getHeight() if if Is90DegreeRoration(mEmulatedPreTransform) is true, otherwise we are recreating swapchains when width and height are unchanged. Bug: b/382006939 Change-Id: I1cbe9da2ff5e76602a90963514d2d0d5fbf677e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6090199 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Roman Lavrov 00d9ef8f 2024-12-13T11:59:29 Inline GetUniformTypeInfoFromIndex A very small function call on hot path, highlighted by PGO profile data from driver_overhead_2. Makes driver_overhead_2 1~2% faster on Pixel 8 (measured with shared context lock off). Bug: b/335295728 Bug: b/383305597 Change-Id: I36e58b42b06c72c8f4c282110c85bb5130ced8d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6094283 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian fb743105 2024-11-26T14:37:39 Add stubs for EGL_EXT_surface_compression This patch adds stubs for EGL_EXT_surface_compression to ANGLE, including new API eglQuerySupportedCompressionRatesEXT and adding EGL_SURFACE_COMPRESSION_EXT in EGLQuerySurface and EGLCreateWindowSurface/EGLCreatePlatformWindowSurface. Bug: angleproject:375496226 Change-Id: I1962a11e8e3e5eb2cd5b13c5ba0f685781dfd015 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6073354 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev f5196a27 2024-11-29T00:00:00 Fix normalizedToFloat for signed types * Ensured that INT_MIN is converted to -1. * Fixed max value computation when the input bit width is not type-aligned. * Cleaned up D24X8::ReadDepthStencil to match the updated semantics. * Added tests for all variants. Fixed: angleproject:352963106 Change-Id: I8b9f60d3364331567ad3b55276666bb416c3c6ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6072233 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Igor Nazarov 74609065 2024-11-27T16:09:44 Vulkan: Fix finishOneCommandBatchAndCleanupImplLocked Fix the `finishOneCommandBatchAndCleanupImplLocked()` to always do cleanup regardless if there is something to finish. This method is designed not only to free space in `mInFlightCommands` but also to cleanup already retired commends (in `mFinishedCommandBatches`) and renderer's garbage. In case if `mInFlightCommands` is empty cleanup was skipped - which is incorrect. Change removed `Impl` from the name since it is already have `Locked`. The `finishOneCommandBatchAndCleanup()` is updated to simply call the locked version with the mutex lock held. Change also improved `FixedQueue` assertions (always check that `mSize <= mMaxSize`). Bug: b/280304441 Change-Id: I67bd7c35b164b84e9c07306a5bf48b0adefdfa5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055419 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Panfeng Hou a504b6a2 2024-11-25T15:59:05 Support GL_OES_required_internalformat Enable GL_OES_required_internalformat GLES extension. Bug: angleproject:364069034 Change-Id: Ia57548469abff189472aa20b13ca99179c45f2c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038448 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Panfeng Hou <panfeng.hou@arm.com>
Jordan Brown 5951cac9 2024-12-04T04:37:50 Update xxHash metadata Populating version as 0.8.2 based on: https://github.com/Cyan4973/xxHash/commit/0f2dd4a1cb103e3fc8c55c855b821eb24c6d82c3 Bug: chromium:365320508 Change-Id: Ieec25b6fafc32c98bc29efb1e6c32a5933f30af9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6069746 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jiewei Qian <qjw@chromium.org> Auto-Submit: Jordan Brown <rop@google.com> Reviewed-by: Jordan Brown <rop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 0bb109aa 2024-11-28T00:00:00 Fix validation for 2D multisample array textures * Fixes: * TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY query must be rejected if the functionality is not enabled. * GetInternalFormativ must accept TEXTURE_2D_MULTISAMPLE_ARRAY on unextended OpenGL ES 3.2 contexts. * Added validation to the OpenGL ES 3.2 TexStorage3DMultisample entry point. * Cleanups: * Removed OES suffix from the enum conversion. * Incorrect extension name in the error message. * Do not create a 2D multisample array zero texture object if the backend does not support the functionality. * Replaced redundant FramebufferTexture validation with an assertion. * Do not allocate texture binding vectors for 2D multisample array textures if the backend does not support the functionality. * Aligned the 2D multisample array texture target assert in RecordBindTextureTypeError with the actual error condition. Fixed: angleproject:381270278 Change-Id: Idbbc86e2efe1bbc25d9570d515b67c1a32255d99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6063068 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi da292057 2024-12-03T10:20:17 Update third party metadata Bug: chromium:378273470 Bug: chromium:365321119 Bug: chromium:365320508 Bug: chromium:378273216 Change-Id: Ie24f00112a8f04ff9acdf6e4618b79e082529636 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6062488 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Panfeng Hou d57b1d30 2024-11-28T11:09:53 Vulkan: Support GL_OES_required_internalformat Only export 'GL_OES_required_internalformat' in GLES extension. Bug: angleproject:364069034 Change-Id: I6198b7b79fc2853c7585ebff183016ee110a25e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055198 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Xinyu Fang 5d3d299d 2024-11-25T16:35:51 Expose the required GLES1.0/1.1 extensions in ANGLE Exposed below extensions: GL_OES_texture_mirrored_repeat GL_OES_blend_subtract Bug: angleproject:380704155 Change-Id: Ib095f9bfaabda92bb2c588d633f1512e118f066e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038450 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 3b3783bc 2024-11-18T16:42:47 Reland "Possibly fix FixedQueue.ConcurrentPushPop flakiness" This is a reland of commit 84b175546ec95af14b6a85def7d5b2e81ae5a88a Reverted CL increased flakiness because of incorrect `ASSERT` expressions present in the original code and which should have been also corrected. The fix itself had no new issues. This CL additionally fixes these `ASSERT` expressions. Suspected source of flakiness in both tests is the possibility to call `q.pop()` while `q.empty()` is true. Original fix added check for `enqueueThreadFinished` to break from the loop. New fix instead of checking for `enqueueThreadFinished` to break from the loop, checks if `q.empty()` is true. This change allows processing already pushed values even if the enqueue thread already finished. It is applied to both tests. Additional changes not related to fixing the flakiness: - `std::time()` replaced with `angle::GetCurrentSystemTime()` because `std::time_t` may be integer (Android) while `timeOut` is double. This is confusing. For example, if set `timeOut = 0.5` - actual timeout will still be one second. - fix enqueue thread to actually reach the maximum capacity. - improve dequeue thread to prevent updating to the same of greater capacity. - add extra `ASSERT` checks. - make code in both tests consistent with each other. Original change's description: > Possibly fix FixedQueue.ConcurrentPushPop flakiness > > Queue may be empty when `enqueueThreadFinished` become true. > > This is same as the previous fix for `ConcurrentPushPopWithResize`: > https://chromium-review.googlesource.com/c/angle/angle/+/5823039 > > Change also removes always true expressions from the > `ConcurrentPushPopWithResize` test. > > Bug: b/302739073 > Change-Id: I82ee294208d918b7007d85b2cd90e2642fc1e54f > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6030517 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: b/302739073 Change-Id: I8f3840326f3fceed044fa188245772a5ff7b638d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038334 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Yuly Novikov d81d29e1 2024-11-19T15:53:16 Revert "Possibly fix FixedQueue.ConcurrentPushPop flakiness" This reverts commit 84b175546ec95af14b6a85def7d5b2e81ae5a88a. Reason for revert: more flakiness seen on Pixel 6 and Samsung S22 Original change's description: > Possibly fix FixedQueue.ConcurrentPushPop flakiness > > Queue may be empty when `enqueueThreadFinished` become true. > > This is same as the previous fix for `ConcurrentPushPopWithResize`: > https://chromium-review.googlesource.com/c/angle/angle/+/5823039 > > Change also removes always true expressions from the > `ConcurrentPushPopWithResize` test. > > Bug: b/302739073 > Change-Id: I82ee294208d918b7007d85b2cd90e2642fc1e54f > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6030517 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: b/302739073 Change-Id: Iefd994d5a69d2f4add13485d586384814e5e3dd5 No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6033739 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Neil Zhang 8a2b60b2 2024-11-06T17:13:16 Add stubs for GL_EXT_texture_storage_compression Bug: angleproject:352364583 Change-Id: I607c19c0c9bec7f0e3dd325e44b42e73f826b61c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5998012 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>