src/common


Log

Author Commit Date CI Message
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>
Igor Nazarov 84b17554 2024-11-18T16:42:47 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>
Mark Lobodzinski c7a43ec8 2024-10-28T12:26:05 Capture/Replay: Track framebuffers by context Some game titles treat framebuffer objects as shared. Framebuffer objects are now tracked per-context to avoid conflicts. Test: angle_trace_tests --gtest_filter=TraceTest.limbo --offscreen Bug: b/371985732 Change-Id: I34ae5b54d569eec75ad86b7b363f7a84d56d955c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5973639 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Gowtham Tammana 05b58737 2024-11-04T13:52:09 CL: Add CL command execution status to the enum list Adding the CL command execution status enums to the auto enum generation list - packed_cl_enums.json. The execution status are defined as cl_int in the CL api, and as such they are not packed at the entry points - entry_points_cl_autogen.{h,cpp}, and are left to be used at the implementation layer. The following files are autogeneration through `run_code_generation.py` script. - scripts/code_generation_hashes/packed_enum.json - src/common/PackedCLEnums_autogen.cpp - src/common/PackedCLEnums_autogen.h Bug: angleproject:37997556 Change-Id: Ia00fc12ef02e3882d47a1ad18cd6c11ce6bf63dc Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004062 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ho Cheung d30d81d0 2024-11-06T16:08:28 [code health] Remove underscores from test names in ANGLE (1/N) In the GoogleTest framework, underscores are not allowed. [1] ANGLE has underscores in many test names, and those should be changed. At the same time, add a comment to a test case according to the requirements of the Presubmit check. ```` *************** ANGLE requires a comment describing what a test does. *************** ```` [1] https://github.com/google/googletest/blob/main/docs/faq.md#why-should-test-suite-names-and-test-names-not-contain-underscore Bug: angleproject:377543127 Change-Id: I90e634bd985ca518eca43e2c919a3a8bca91a55b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5997835 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Ho Cheung <hocheung@chromium.org>
Igor Nazarov 11d73f1d 2024-11-04T20:31:57 Revert "spirv::Print without ANGLE_ENABLE_ASSERTS -> compile error" This reverts commit be9e63ad090dc4b86eae08ad8f9f4c9f1a18a6a4. Reason for revert is to fix build error in "CLProgramVk.cpp" if build with `dcheck_always_on = false`. Since https://crrev.com/c/5898609, `spirv::Print()` is now always defined, so no liker error if `ANGLE_ENABLE_ASSERTS` is not defined. Bug: angleproject:370557215 Change-Id: I983b57987eb63f601a75e90646c24b9cd16170a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6003012 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Chris Dalton a05a0e15 2024-09-25T22:33:36 Validate PLS shaders against context state Add shader introspection for PLS uniforms and validate that they match context state during draw calls. Bug: angleproject:40096838 Change-Id: I76cdf8add03de8f8b0b3e772c15c0087c1d97e98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893962 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Amirali Abdolrashidi 6b9d3762 2024-08-22T15:29:00 Vulkan: Optimize full texture clears Currently, a full texture clear (glClearTexImageEXT()) is treated as a special case of a partial clear (glClearTexSubImageEXT() with image dims as the input). However, it can be further optimized by treating it as a clear update. * For full clears from EXT_clear_texture, the clear update path is taken. * It leads to a more optimized path, including the usage of the following APIs: * vkCmdClearColorImage() * vkCmdClearDepthStencilImage() * It uses the following enum: ClearTextureMode * If a partial clear uses the extents for the entire image, it is treated as a full clear. * Updated the method to determine if a texture is renderable in clearSubImageImpl(). * Added perf counter: fullImageClears * Added new unit tests * Single 3D texture full clear (Clear3DSingleFull) * 2D RGB SNORM clear (Clear2DRGB8Snorm) * Added Vulkan perf counter test for 2D and 3D color image clear. * Updated the related skipped tests on Pineapple. Bug: angleproject:42266869 Bug: angleproject:375425839 Change-Id: I12ef3002dee190d7f8f43204f7d3f76e05d0b54f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806207 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll ddbfae96 2024-10-10T18:30:55 Manual roll vulkan-deps from e8e61a227e2c to b8d6ceadf45d (8 revisions) Manual roll requested by ynovikov@google.com https://chromium.googlesource.com/vulkan-deps.git/+log/e8e61a227e2c..b8d6ceadf45d Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/a62b032007b2e7a69f24a195cbfbd0cf22d31bb0..50bc4debdc3eec5045edbeb8ce164090e29b91f3 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/4310fd4edae21d711ab31f5183704ad320329419..fcf994a619608c2bdb505189f6e325b1a6b4f294 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/61037741e4d8ccdb8c7b761bc726ab87cc11496d..9553b9751916c06ea6f6a78236397450bc76bd32 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,ynovikov@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Tbr: ynovikov@google.com Change-Id: Ie07afc8447e73678f6fb9772a3477def5f120117 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5923803 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Geoff Lang 492cf265 2024-09-27T13:44:22 Stubs for GL_blob_cache_angle Bug: chromium:370538323 Change-Id: Ib56b28c24305db8931f382b16a24975b7277fa7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5900760 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b16d105f 2024-10-03T10:25:32 Remove Desktop GL front-end support For Desktop GL applications, please use Zink! Bug: angleproject:370937467 Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 55980dbd 2024-06-07T13:45:23 common: Improve/fix spir-v utils This change improves the handling of macroed-sections of the code. Also, fixed some typos. Bug: angleproject:370557215 Change-Id: I437b8c4d835dada4554569c72ef7100568c6be48 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5898609 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiewei Qian 435bd0a9 2024-10-02T16:37:06 ssci: use canonical date format Bug: chromium:370881022 Change-Id: Ie8a310b11517fd1be7f95f246bcb9cfe48d95791 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5903336 Auto-Submit: Jiewei Qian <qjw@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 8469debb 2024-09-04T20:04:10 Vulkan: Add dual slots in CompressAndStorePipelineCacheVk() Change fixes following problem: Currently, each call to `CompressAndStorePipelineCacheVk()` stores chunks in order, starting from 0. This overrides previously stored chunks. In case of app termination (kill) in the middle of this process, the entire cache data will be corrupted, since it will partially contain chunks from the new and old caches. Solution: In order to fix this problem, this change introduces `slotIndex` into the `chunkCacheHash` calculation. Slot index is managed by `vk::Renderer::getNextPipelineCacheBlobCacheSlotIndex()` method, which will alternate between 0 and 1 when "useDualPipelineBlobCacheSlots" feature is enabled, and always 0 otherwise. Additionally, chunk storing order is reversed: last chunk is stored first and the first (0 chunk) - last. This is done because 0 chunk is the first that is loaded in `GetAndDecompressPipelineCacheVk()` and used as indication that there is data in the cache. Writing it last, ensures that other chunks will be also available. When "useDualPipelineBlobCacheSlots" is enabled, each call to `CompressAndStorePipelineCacheVk()` will use slot index opposed to the slot that is stored in the cache, avoiding damaging existing data. After writing all chunks for a brief moment there may be 2 instances of the data. However, data for the previous slot will be immediately erased (by writing 1/0-sized blobs) starting from the 0 chunk. To control if erasing of old pipeline cache data will be erased by using 0-sized or 1-sized blobs blobs, added `useEmptyBlobsToEraseOldPipelineCacheFromBlobCache` feature. The `GetAndDecompressPipelineCacheVk()` function will iterate over each available slot index checking only 0 chunk until data is found. In case of the OpenCL API, features will always have following values: - "useDualPipelineBlobCacheSlots" -> false - "useEmptyBlobsToEraseOldPipelineCacheFromBlobCache" -> true Note: this solution requires 2X pipeline cache size space in the blob cache to work as expected, otherwise it will exacerbate other problem: When blob cache is full, but still allows to store the current pipeline cache data, storing next chunk may trigger eviction of already stored items. Depending on the blob cache implementation, eviction process may choose to evict chunks from the current pipeline cache data. As the result: blob cache will not contain all chunks. The above problem will be addressed in the follow up CL. Bug: angleproject:4722 Change-Id: I2920bc3d89263280cdfe0466446fca26415e2b25 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756576 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Yuxin Hu 44b6203c 2024-09-02T16:23:44 Add new functions defined in VK_KHR_Synchronization2 extension Add vkCmdPipelineBarrier2 and vkCmdWriteTimeStamp2. The other functions introduced in VK_KHR_Synchronization2 are not being used at the moment. Bug: b/356985874 Change-Id: I4f8b432aee9b11debcb8abe8b3089f88ad7a069b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5832709 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>