src


Log

Author Commit Date CI Message
Igor Nazarov 5fd368aa 2025-07-30T14:45:55 Replace Surface::getWidth/Height() with getSize() Most places in the code use both `getWidth/Height()` methods at the same time. On some back-ends it is more optimal to have single method. For example, `WindowSurfaceWGL` first uses `GetClientRect()` Win32 API inside each method to then calculate width and hight in each method, causing repeated `GetClientRect()` call. The only place where only one of the methods may be used is from `SurfaceImpl::getUserSize()` when one of the parameters is `nullptr`, which is only possible from `QuerySurfaceAttrib()` function. This method is rewritten to use new `getSize()` method and then use whatever dimensions is requested by the caller. This may cause `QuerySurfaceAttrib()` inefficiency on some back-ends that get width and height of the surface differently (`SurfaceEGL` for example). In such cases `getUserSize()` is overridden to avoid returning a dimension which is not required. After this change all places in the code that previously used both `getWidth/Height()` methods (like `Surface::getAttachmentSize()`) will be more efficient. The `QuerySurfaceAttrib()`, on the other hand, will have slightly more overhead on back-ends where base `SurfaceImpl::getUserSize()` method is used, which only happens on back-ends with trivial `getSize()` implementation. Bug: angleproject:397848903 Change-Id: I4a22701a1e62ee4e7d07e77cac5b388050d98e4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6802440 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Shahbaz Youssefi fa90dac8 2025-07-30T14:04:58 Revert "Vulkan: Disable VK_EXT_host_image_copy on Fuchsia" This reverts commit d62db89e1753ece99633143faf4c87b2ff23f96c. Reason for revert: It's been years, hopefully VVL is updated by now. Bug: angleproject:8341 Original change's description: > Vulkan: Disable VK_EXT_host_image_copy on Fuchsia > > An old version of VVL is used, causing incorrect failures. > > Bug: angleproject:8341 > Change-Id: I0fc605616671343a49fed6ff02ecd67eea672dca > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4873440 > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Yuxin Hu <yuxinhu@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:8341 Change-Id: Ia7a8875b955a120c80d59f2ae7566648e055eedc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6804001 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten aa533732 2025-07-28T15:56:13 CreateGeometryShaderInES3: Skip on ES3.1+ When testing the system EGL (angle_test_enable_system_egl = true), the context returned is the maximally conformant version, which can be OpenGL ES 3.2. The test GeometryShaderTestES3.CreateGeometryShaderInES3 verifies that geometry shaders cannot be created, assuming it will only ever be testing ES 3.0 contexts. 1. Add ANGLE_INSTANTIATE_TEST_ES3_AND_ES31_AND_ES32() to instantiate a test for ES 3.0, 3.1, and 3.2. 2. Update GeometryShaderTestES3.CreateGeometryShaderInES3 to skip when testing ES 3.1+ contexts. 3. Instantiate GeometryShaderTestES3 for ES 3.0, 3.1, and 3.2. Bug: b/409384875 Test: GeometryShaderTestES3 Change-Id: Ic5b4dbb167b8de7f24da285b4620f5257ed7df54 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6794766 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Eugene Zemtsov 4189fbb8 2025-07-29T17:50:24 Implement EGL_ANDROID_presentation_time for Vulkan backend The implementation leverages the VK_GOOGLE_display_timing Vulkan extension. Bug: chromium:434977616 Bug: angleproject:42261214 Change-Id: I7e6c64eca6c01e7eb79d41dc5ef63311a7792e2b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6799254 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 92089dce 2025-07-29T14:09:24 Vulkan: Limit maxPerStageTextures to 4096 Many devices support a huge number of samplers (millions) and every one needs a uniform location, either generated by ANGLE or assigned by the user. Limit the number of samplers per stage to something reasonable, which in turn also lowers the number of uniform locations. This isn't expected to have any practical effect on real apps/users, but is instead to keep tests for these limits (e.g., dEQP, end2end) within reason in terms of shader program sizes and compilation times. Test: KHR-GLES31.core.explicit_uniform_location.uniform-loc-mix-with-implicit-max Test: angle_end2end_tests --gtest_filter=GLSLTest.VerifyMaxVertexUniformVectorsWithSamplers* Bug: b/434763439 Change-Id: I378483fd869b9f5ebee21760eec4dec2dd793b92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6798920 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi cd969c3e 2025-07-28T16:27:12 Vulkan: Disable clipCullDistance ext if GS/TS The extension GL_EXT_clip_cull_distance also interacts with geometry and tessellation shaders. These features are currently in development. * Added temporary flag: supportsClipCullDistanceInGSAndTS * Currently disabled by default * clipCullDistanceEXT can only be enabled if this feature is enabled, or if the device does not support geometry or tessellation shaders. * After the features become available, this flag can be removed. Bug: angleproject:42264006 Bug: b/415288635 Change-Id: Iac5c672fd980710519407c482bc95d2b0019aea2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6795025 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Mark Lobodzinski b61038bf 2025-07-28T21:55:11 Tests: Add ANGLE trace for Whiteout Survival Test: angle_trace_tests --gtest_filter=*whiteout_survival Bug: b/435147875 Change-Id: I09c429dca130321f2a7cd33abdb0521715637257 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6801131 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Igor Nazarov 3e52318c 2025-06-26T10:46:00 Vulkan: Ensure always using resolved Window Surface size `WindowSurfaceVk::getWidth/Height()` methods return cached, previously resolved Surface size. Using these methods while current Window Surface size is unresolved may return stale values, causing undesired behavior. Appropriate ASSERTs were added to these methods to prevent such usage. Added ASSERTs revealed few places with incorrect usage: - In `Context::makeCurrent()` to set initial viewport or for capture. - In `IsPartialBlit()` and `ValidateReadPixelsBase()` validations. - In `SerializeFramebufferAttachment()` during capture. Rest of the code was thoroughly checked if it is possible to call `WindowSurfaceVk::getWidth/Height()` when size is unresolved. All other places always call these methods after framebuffer state synchronization, which acquires swapchain images and resolves the surface size. Added `ensureSizeResolved()` method that is called during validation and in the `SerializeFramebufferAttachment()` method. It is possible to use existing `Framebuffer::syncState()` method as alternative, but this solution was discarded since it may potentially interfere with `State::syncDirtyObjects()` method. The `Surface::getUserSize()` replaces old methods as optimization, to prevent calling relatively expensive method twice from `Context::makeCurrent()` to get width and height of the `drawSurface`. Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeBeforeMakeCurrent/* Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeBeforeMakeCurrentPostSizeQuery/* Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeAndReadPixelsRobustANGLE/* Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeAndBlitFramebufferANGLE/* Bug: angleproject:397848903 Change-Id: I082e13d0b8db5fd7d08ff25b102df1f283e1256d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6792928 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Solti e286ef78 2025-07-24T21:19:54 ANGLE: Add validation test for GL_RENDERER string format This change introduces a new ANGLE end-to-end test to validate the format of the GL_RENDERER string, preventing regressions caused by downstream modifications. A recent issue (b/318636997) was caused by a partner modifying the ANGLE GL_RENDERER string in a way that broke Skia's parser. This revealed that the string format is a de-facto API contract that must be enforced. This new test, RendererTest.ValidateCanonicalFormat, serves as an automated guardrail and will become part of the Android CTS. The test enforces the following structural contract: 1. The overall structure must be "ANGLE (Vendor, Renderer, Version)". 2. The separator between components must be ", ". 3. The Vendor, Renderer, and Version components must not be empty. This ensures the string is parsable by clients like Skia without over-constraining the content of the component strings, which may originate from underlying drivers. The test correctly skips validation on the Null backend, which is not subject to this contract. Test: autoninja -C out/Android angle_end2end_tests && out/Android/angle_end2end_tests --gtest_filter="RendererTest.*" --num-retries=0 Bug: b/432805963 Change-Id: I1202074cc9f4413ee88e4534fb72fb71101721e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6788522 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Solti Ho <solti@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao b4d84458 2025-05-23T18:08:19 Move Buffer from VertexBinding to VertexArray In later CL we will not taking shared context lock for certain VertexArray API calls. VertexArray itself is per context, so this sounds reasonable to do. The main challenge here is a lot of VertexArray function end up accessing gl::Buffer object, which could be modified by other shared contexts. In order to safely not taking the shared context lock, we need to separate out Buffer object out of VertexArray itself so that these lockless APIs will take VertexArray that does not have access to buffer. In this CL, VertexArray is split into two classes: VertexArrayPrivate is everything in VertexArray except buffers. VertexArray is a subclass of VertexArrayPrivate and owns all the buffers. Buffer is removed from gl::VertexBinding class. In order to let back end access to buffers, VertexArrayImpl holds a weak reference to VertexArray::mVertexArrayBuffers (which is a vector of buffers). Further, VertexArrayBufferBindingMask mBufferBindingMask is moved from VertexArrayState into VertexArray class well, since it tracks which index has a non-null buffer. The bulk of change are due to the VertexARrayImpl constructor change, since it now takes vertexArrayBuffers argument. Other bulk of changes are due to VertexBinding no long has the buffer, but you need to get it directly from VertexArray or VertexArrayImpl. This CL also reverts some of the change in crrev.com/c/6758215 that mVertexBindings no longer contains kElementArrayBufferIndex. BYPASS_LARGE_CHANGE_WARNING Bug: b/433331119 Change-Id: I15f4576f7c5c8d8f4d9c9c07d38a60ce539bfeea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774702 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 8dca0efe 2025-07-21T15:29:10 Replace VertexArray::DIRTY_BIT_LOST_OBSERVATION with API call This dirty bit was added so that back end can inspect buffers and set proper VertexArray::DirtyBitType. The same thing can achieved by add a virtual function on VertexArrayImpl class. The advantage of virtual function on VertexArrayImpl is that all back end essentially have the same implementation and we can just implemented in VertexArrayImpl instead of duplicate in each back end. The other advantage is after this CL DIRTY_BIT_BINDING_n and DIRTY_BIT_BUFFER_DATA_n will be well aligned instead of offset by 1 caused by DIRTY_BIT_LOST_OBSERVATION. The other motivation of this change is in later CL I want to move mBufferBindingMask out of VertexArrayState, which means back end will not have access to it. By using VertexArrayImpl API, I can pass mBufferBindingMask directly to the back end via function parameter. So, this CL removed DIRTY_BIT_LOST_OBSERVATION, added VertexArrayImpl::checkBufferForDirtyBits(). Bug: b/433331119 Change-Id: I5c8cbc9bace63db416e86c2ae3631f74a12b20b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6775986 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 130fb2a1 2025-07-29T08:16:57 Vulkan: Don't allocate ExternalFormatIDs for sampling usecases Update the condition for allocating YUV ExternalFormatIDs to exclude sampling-only usecases. Also, rename "isYuvResolve()" to "isYuvExternalFormat()" to better reflect intent. Bug: angleproject:386749841 Change-Id: I0e4f5b79937ea8ad98b5d00fdc7531b34ffa7e16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6797965 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Charlie Lao 40a2a912 2025-07-15T14:39:10 Track mElementArrayBuffer in std::vector<VertexBinding> Right now mElementArrayBuffer are treated a little bit differently from other vertex buffers, mainly because of elementBuffer does not have corresponding "attributeIndex" to bind to. But a lot of logic in VertexArray are same for mElementArrayBuffer and mVertexBindings. In recent CLs, we are using mBufferBindingMask to track both mElementArrayBuffer and mVertexBindings with kElementArrayBufferIndex represents element buffer. With that, some of logic handling buffers can be merged, with looping of mBufferBindingMask bits. In later CL, we are going to separate "binding" from "buffer" so that we can move buffer out of VertexArrayState class. So this is also a preparation CL so that when we move buffers out of VertexArrayState class, it does so for all buffers (both element buffer and vertex buffers). In order to track how many vertex buffers in mVertexBindings, a new variable mMaxVertexAttribBindings is added. In later CL when we move buffers out of VertexBinding, some of this CL's change will be reverted back, mVertexBindings will be reverted back to track only bindings and mMaxVertexAttribBindings will be deleted. Bug: b/433331119 Change-Id: Idd2cfe4ce64bb22923bac70abb752e132fe1abd3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6758215 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 09bbe914 2025-07-28T12:53:53 Add test for mapBuffer and disable/enable attrib interaction Added a test that mapBuffer while attribute is disabled, the draw call should succeed. If attribute is then enabled, the next draw call should fail with GL_INVALID_OPERATION error. Bug: b/433331119 Change-Id: I61d9ff16b0d485309c58c2fe2939c3de8b25864a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6792268 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Tingwei Guo 4f4eab29 2025-06-30T14:58:28 Reset index buffer offset between indirect GL_LINE_LOOP draws In two consecutive glDrawArraysIndirect with GL_LINE_LOOP mode, and bound to a different Indirect Buffer, the variable value captured through TransformFeedback is the same as the first result when the second DrawArraysIndirect. When calling DrawArraysIndirect the second time, DIRTY_BIT_INDEX_BUFFER should be set to dirty so that it re-gets INDEX BUFFER to get the correct result. Bug: angleproject:428561247 Change-Id: I7f4ebb53e20cf8e362e67679b45185b8b68c56ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6687309 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Tingwei Guo <tingwei.guo@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski 866370dc 2025-07-28T22:12:00 Disable texture_compression_astc_decode_mode exts during capture The GL_EXT_texture_compression_astc_decode_mode and GL_EXT_texture_compression_astc_decode_mode_rgb9e5 extensions are not widely supported outside of ARM and Qualcomm. Disable while ANGLE capture is enabled. Test: angle_trace_tests --gtest_filter=*whiteout_survival Bug: b/434819166 Change-Id: I4cebf6942144c61a954dfd9dfe9bd9935638ff60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6794776 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Charlie Lao 9635df8e 2025-07-16T15:13:19 Move mCached*ArrayBuffers from VertexArrayState to VertexArray The three cached AttributeMasks variables are mCachedMappedArrayBuffers, mCachedMutableOrImpersistentArrayBuffers, mCachedInvalidMappedArrayBuffer. They are currently declared in VertexArrayState class. They are only accessed by VertexArray front end, back end does not use them, which means they do not need to be in VertexArrayState class. This CL moves these three variables to VertexArray class in preparation for later CLs that VertexArrayState will not have access to Buffer objects. This CL also removed unnecessary updateCachedMutableOrNonPersistentArrayBuffers call from VertexArray::enableAttribute, since mCachedMutableOrImpersistentArrayBuffers does not depend on any variables enableAttribute() is modifying. Bug: b/433331119 Change-Id: I8b1f0c7d511dbc6858d20f33863154e8fe3077f8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6762902 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Mohan Maiya 214a48c4 2025-07-16T12:42:18 Vulkan: add support for yuv resolve with transient image Add support for the YUV_target extension in cases where the implementation supports VK_ANDROID_external_format_resolve without supporting nullColorAttachmentWithExternalFormatResolve. Bug: angleproject:386749841 Tests: ImageTest*YUV* Change-Id: Iebcb4f843b962f3d0d2f4e42db479902b6c1f849 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6761834 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop 2b12571c 2025-07-27T20:07:50 Tests: Add Last War: Survival Game trace Test: angle_trace_tests --gtest_filter="*last_war_survival_game" Bug: b/434548051 Change-Id: I25750ef43d58ee06a3149b9fce26b6d9b42c9931 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6789518 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Mark Lobodzinski 1df94a64 2025-07-25T15:46:42 Tests: Add Dice Dreams ANGLE trace Test: angle_trace_tests --gtest_filter=*dice_dreams Bug: b/434552757 Change-Id: Ie56bd5fee6aebbddc9c613609d636acca11749a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6789519 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mark Lobodzinski c8209fec 2025-07-25T10:16:25 Tests: Add Avatar World trace Test: angle_trace_tests --gtest_filter=*avatar_world Bug: b/434146678 Change-Id: I3983c0720f541f5d28a82f4c3bcff7b6ea4252a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785913 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Geoff Lang e4007fff 2025-07-24T15:50:48 GL: Remove ARB_base_instance check for EXT_base_instance support This is a speculative fix for reported flickering issues on Linux. https://chromium-review.googlesource.com/c/angle/angle/+/6580170 changed EXT_base_instance to only be supported when it is not emulated and fixed the condition to include ARB_base_instance, possibly hitting driver bugs on some devices. Bug: angleproject:355645824 Bug: chromium:427956856 Change-Id: I869fa7f618e82ad46c1953f0bacef0767bbc793e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6777576 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuxiang Qian 6a03109f 2025-07-09T18:24:31 Refine getCompressionRate As Vulkan spec states, vkGetImageSubresourceLayout should not be called for the android swapchainimage when the image is not bound to memory. Refine the path of getCompressionRate to make sure at least swapchainimage[0] has been initialized when it is been called. Bug: angleproject:433057375 Change-Id: I80b68874686940c0ef77df97b928b0e153c5bbf8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774721 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d38531e8 2025-07-23T09:39:11 Fix extension check for xfb mode validation With geometry and tessellation shaders, it's possible to use different primitive modes between transform feedback and draw, as long as they are from the same class. The code accidentally allowed this only if both extensions are supported, but it should be allowed if either is. Bug: angleproject:428561247 Change-Id: Ia18d4ac15a3d0739ce18dc0e1f3d3f0b1aea621c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6780744 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jordan Brown 13f6df49 2025-07-17T20:40:19 Fix the format of the "License" field in README.chromium files. Add missing license for util/android/thrid_party based on license at the source url. Bug: chromium:421988485 Bug: chromium:421989135 Bug: chromium:421988956 Bug: chromium:421988537 Bug: chromium:421988894 Bug: chromium:421989250 Bug: chromium:421988522 Bug: chromium:421988185 Bug: chromium:421989147 Bug: chromium:421988875 Bug: chromium:421988779 Bug: chromium:421988799 Bug: chromium:421988324 Bug: chromium:421988930 Bug: chromium:421988996 Change-Id: I4008229b3031734dd2dc991026cdebe0894c352c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6768429 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Jordan Brown <rop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Matthew Denton 6a3ff5a1 2025-07-17T12:41:13 WGSL: extra debug logging for failure cases Bug: angleproject:42267100 Change-Id: I8938526b60af71d15d4327bc10fa172117afef60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6777200 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Matthew Denton 343e3bdc 2025-07-17T12:38:31 ScalarizeVecAndMatConstructors: also handle scalar constructors In WGSL you cannot "construct" a scalar from a non-scalar (vec or mat). This modifies ScalarizeVecAndMatConstructors to handle scalar constructors as well, indexing and swizzling the argument to select the first element of the nonscalar. This makes dEQP-GLES2.functional.shaders.conversions.vector_to_scalar.* pass (except those that use bool uniforms which are still unsupported). Bug: angleproject:42267100, angleproject:395659799 Change-Id: Ibaa3dc14f36fecb384bfb6e7f226c6d5f377dd5f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6777199 Reviewed-by: Geoff Lang <geofflang@chromium.org>
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>
Tim Van Patten cf4c8c2a 2025-07-10T15:50:36 Add max sampler count to maxUniformLocations OpenGL ES 3.2 Spec: > ## 7.6. UNIFORM VARIABLES > > When a program is linked successfully, all active uniforms, except for > atomic counters, belonging to the program object’s default uniform > block are initialized as defined by the version of the OpenGL ES > Shading Language used to compile the program. A successful link will > also generate a location for each active uniform in the default > uniform block which doesn’t already have an explicit location defined > in the shader. The generated locations will never take the location of > a uniform with an explicit location defined in the shader, even if that > uniform is determined to be inactive. The values of active uniforms in > the default uniform block can be changed using this location and the > appropriate Uniform* or ProgramUniform* command (see section 7.6.1). > These generated locations are invalidated and new ones assigned after > each successful re-link. The explicitly defined locations and the > generated locations must be in the range of 0 to the value of > MAX_UNIFORM_LOCATIONS minus one. Currently, ANGLE sets the mNativeCaps.maxUniformLocations to the maximum number of supported uniform variables (maxUniformVectors). However, samplers are also uniforms and consume uniform locations during shader linking. This causes shader compilation to fail for context versions 3.1+ if a shader uses both the maximum number of uniform variables and maximum number of samplers because the number of uniform locations is exceeded. This specific edge case is being tested by the end2end test GLSLTest.VerifyMaxVertexUniformVectorsWithSamplers. Unfortunately, that test is only instantiated for GLES 2.0 and 3.0 and ANGLE's shader linker only validates the number of supported uniform locations are not exceeded for GLES 3.1+, so that error path is not being validated. 1. Include both the maximum number of supported uniform variables and maximum number of samplers whe calculating the supported maximum number of uniform locations. 2. Instantiate GLSLTest.VerifyMaxVertexUniformVectorsWithSamplers for GLES 2.0, 3.0, 3.1, and 3.2 so the edge cases are tested for all supported GLES versions. Bug: b/279980674 Test: angle_end2end_tests --gtest_filter=GLSLTest.VerifyMaxVertexUniformVectorsWithSamplers* Change-Id: I8ad1f4d2a040a189625d516b54bf2f79ef218edc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6724940 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Tim Van Patten bc9ff5e6 2025-07-11T13:43:05 Don't cache shaders/programs that are too large Currently, ANGLE compresses and caches every shader program, but can then fail to decompress the cached program because the uncompressed size is too large. Instead, check if the program size is too large before compressing and caching the program, so ANGLE doesn't generate an error later while attempting to decompress the cached program. This change is applied to both shaders and programs: * MemoryShaderCache::putShader() * MemoryProgramCache::putProgram() Bug: b/279980674 Change-Id: I67a3b542b460a41dbbc4a3d8bad4031a212223e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6728876 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Tim Van Patten <timvp@google.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>
Cody Northrop cd6680b4 2025-07-23T22:25:32 Tests: Add Last Z: Survival Shooter trace Test: angle_trace_tests --gtest_filter="*last_z_survival_shooter*" Bug: b/433847164 Change-Id: Ifb142d750de9fc9a626896608aefe30ecd06b1f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6782543 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Mark Łobodziński <mark@lunarg.com>
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>
Igor Nazarov 03676f3f 2025-07-22T15:34:18 Tests: Add MixedMultisampleSingleSampledDraw test Test: angle_trace_tests --gtest_filter=MultisampledRenderToTextureES3Test.MixedMultisampleSingleSampledDraw Bug: angleproject:433462527 Change-Id: I87b56452bd5ad1d7841341ddd7af9479fe966f6d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6773431 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop f94510ab 2025-07-22T21:16:37 Tests: Add Honkai Impact 3rd trace Test: angle_trace_tests --gtest_filter="*honkai_impact_3rd*" Bug: b/433331917 Change-Id: Ia7edcf0b930a646923019b6e4c8b49678d6b189f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6780136 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop ab74884c 2025-07-22T20:46:05 FrameCapture: Check current state for indexed buffers When checking whether we need to set per draw buffer blend state, we don't care whether they differ from default, we only care if they differ from each other. The non-indexed commands will set the same state for all buffers. This CL removes default state from the check. Otherwise, we are getting a block of identical indexed commands: glBlendFuncSeparateiEXT(0, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFuncSeparateiEXT(1, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFuncSeparateiEXT(2, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFuncSeparateiEXT(3, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFuncSeparateiEXT(4, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFuncSeparateiEXT(5, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Which is equivalent to: glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Test: Honkai Impact 3rd trace Bug: b/433331917 Change-Id: Ie6bd7549d69c1548aace92126312527b8e585046 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6780135 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 1c245d90 2025-07-22T17:44:15 Fix ASTC emulation for array textures Only the first slice was decoded. Bug: angleproject:432782046 Change-Id: Ibb9d7ff72424c26b240900c1a5f39acd1fc62650 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6779463 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 4e81cd79 2025-07-21T10:45:02 FrameCapture: Update context limits We're seeing multiple titles run incorrectly without updating these two limits during capture. I've verified locally that these still fit within the limits of all modern devices we're looking at. If there are any problems with older devices, we can address them with: addIntegerPrerequisite(GL_MAX_DRAW_BUFFERS_EXT, 6); addIntegerPrerequisite(GL_MAX_VERTEX_UNIFORM_VECTORS, 4096); Bug: b/431854319 Bug: b/433331917 Change-Id: Id21de17acc4d24157dfe07de6b9de818561399ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6775624 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi c2224aef 2025-07-22T14:35:49 Revert "Fix VK-GL-CTS build error" This reverts commit a676c4725490ee896e1154d5fbe1b1c1adc83678. Reason for revert: CTS build issue is fixed upstream and rolled into ANGLE. Bug: angleproject:432337091 Original change's description: > Fix VK-GL-CTS build error > > ... temporarily by overriding the offending file until the upstream fix > lands. > > Bug: angleproject:432337091 > Change-Id: I878561e0856e43b657bcaf08a7563ac639794098 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6775382 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:432337091 Change-Id: I1607d32b4007df91c721601fc16bcb05932f2567 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6777764 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Matthew Denton cbff5658 2025-07-16T14:10:47 ScalarizeVecAndMatConstructorArgs: cast for mat constructors In WGSL, matrix constructors also can't handle arguments of differing basic type than the constructor's basic type, so cast when necessary. Makes dEQP-GLES2.functional.shaders.conversions.scalar_to_matrix.* pass for WGSL. dEQP-GLES2.functional.shaders.conversions.matrix_to_matrix.* does not yet pass because WGSL can't handle matrix shader inputs/outputs. Bug: angleproject:42267100, angleproject:395659799 Change-Id: Ia4761190c78ccfe7d748275642361ada93314529 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6777198 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Matthew Denton 2c1a55b3 2025-07-16T13:44:49 WGSL: implement == for vectors by wrapping in all() WGSL's vec comparisons are component-wise, so wrapping the result in a call to all() returns true if all components compare equal, matching the behavior of GLSL's vec comparisons (== and !=). Bug: angleproject:42267100 Change-Id: Icfbfacf72e53096e2567fa89bcd4bf573e457ec1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6777197 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Charlie Lao cdffecb7 2025-07-21T11:30:45 Vulkan: Ensure FramebufferVk::mRasterizationSamples > 0 GraphicsPipelineDesc can't handle samples being zero. This CL ensures we always use at least one sample. Bug: angleproject:431250668 Change-Id: I7f6b14c6060585fe7ef6fb55ed6a4b9813634f3f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6431827 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Neil Zhang 364ad1c4 2025-07-15T12:47:55 Enable test ImageTestES3.SourceYUVAHBTargetExternalCopySrc on Pixel 6 This issue been fixed by patch: http://crrev.com/c/6679988, when sampling YUV formats, angle use texture() instead of texelFetch(), and should adjust texture coordinates by + 0.5 Bug: angleproject:395520107 Change-Id: I22166b28c5ee2949d5e9570137e110edc34fffaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6738562 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Neil Zhang <Neil.Zhang@arm.com>
Austin Annestrand 239763d9 2025-04-04T17:52:10 CL/VK: Fix ArgumentWorkgroup setArg logic Issue was that clSetKernelArg for ArgumentWorkgroup type arguments would blindly push new values into kernel's spec-constant FastVector on every clSetKernelArg (even on same arg updates). This would lead to over-pushing due to same arg updates, which caused all kinds of issues, mainly erroneous misses in compute pipeline cache since the key is based on VkSpecializationInfo. Since kernel object already keeps a vector of kernel args, we don't need a separate spec-constant FastVector in CLKernelVk to track this. Remove it and derive the spec-constant data from the kernel args themselves. Bug: angleproject:366415134 Tests-Passing: Geekbench-6.2.2 - Workloads: [ 401 & 601 ] Change-Id: Iab7f27fdfdfede33881e1dd717ba3b771cffb985 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6773615 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e98dec82 2025-07-20T22:16:00 Translator: Remove Sampler2DRectShadow This is a desktop GLSL type. Bug: angleproject:370937467 Change-Id: Ife8b50e57f6e054ccd35df10c2157f8e4a218d37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774081 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 93afebf5 2025-07-17T11:08:02 Change the way we get vkEnumerateInstanceExtensionProperties After this change https://chromium-review.googlesource.com/c/angle/angle/+/6444660, more crashes were observed in this function GetSystemInfoVulkanWithICD on Chrome, Linux. One crash report showed the crash occurs in calling vkEnumerateInstanceExtensionProperties(). Before the change, we get the function pointer of vkEnumerateInstanceExtensionProperties() by angle::GetLibrarySymbol(). After the change, we get the function pointer by vkGetInstanceProcAddr(). Switching the way we get the function pointer back to angle::GetLibrarySymbol() to check if this helps with reducing the crash rate. Bug: angleproject:407116232 Bug: chromium:424207320 Change-Id: I962533fcf4401522f459ff27d2342e0f5c29d407 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6766724 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi a676c472 2025-07-21T12:29:29 Fix VK-GL-CTS build error ... temporarily by overriding the offending file until the upstream fix lands. Bug: angleproject:432337091 Change-Id: I878561e0856e43b657bcaf08a7563ac639794098 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6775382 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Panfeng Hou 251ffe62 2025-07-15T17:37:30 Vulkan: Add support for built-in gl_ShadingRateEXT Add support for built-in gl_ShadingRateEXT of GL_EXT_fragment_shading_rate Bug: angleproject:420310117 Change-Id: Ie11b139a0371b5995f1533a85e02c590cd36109c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6733750 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop faf1bb4b 2025-07-17T21:33:19 Tests: Add Wuthering Waves trace Test: angle_trace_tests --gtest_filter=TraceTest.wuthering_waves Bug: b/431854319 Bug: b/432782046 Change-Id: I5e12064e964953d0a3d969cd0026f50d0945e888 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6768428 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 9cd9a0d5 2025-07-18T10:28:12 Vulkan: Reformat VVL Error Message Remove the following members from the SkippedSyncvalMessage struct: const char *messageContents1 const char *messageContents2 Future VVL suppression message should use extraProperties list only. Bug: angleproject:391284743 Change-Id: I72ebaf86da667967681318dd69a181cc685f0805 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6769428 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Gyuyoung Kim 0691b92e 2025-07-16T10:19:19 Fix the wrong condition for EnsureLoopForwardProgressTest The original CL should have used the angle_enable_glsl condition to disable the test on iOS, since this variable is not enabled on that platform. Bug: b/426055001 Change-Id: Ia53c066dcbc473358ae89e625abcf83660bd019a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6756696 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Takuto Ikuta 7b36840b 2025-07-17T18:12:53 Fix missing includes This is to fix some errors in https://ci.chromium.org/ui/p/chromium/builders/ci/linux-modules-compile-fyi-rel/42032/overview Bug: chromium:40263312 Change-Id: I278fd42062a52cbfe7e778f98d3e72cdd490847f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6765303 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Takuto Ikuta <tikuta@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 1239266b 2025-07-16T16:28:12 Do not read .git/packed-refs if the git refstorage is reftables Traditionally, git is configured with: extensions.refStorage==file. It means if .git/HEAD stores a symbolic reference, e.g. /refs/heads/main, the hash of main branch is stored in either: 1) .git/refs/heads/main 2) .git/packed-refs However, on the newer version of git where the git is configured with: extensions.refStorage == reftable, neither of the above files exist. Git will store the reference in binary files under .git/reftable. We should add different files as gn action input based on if git is configured with reftable or file backend. Bug: chromium:432289353 Change-Id: Ib42828313f3a7200e55420574a8ddac2ba63f2e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6761844 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Cody Northrop de6d58f4 2025-07-13T19:24:34 FrameCapture: Fix blend state per draw buffer in MEC Before this CL, we've never set starting state for draw buffers other than buffer zero. They've always remained at default values, or at least matching the values set for zero. Now when we detect the other buffers differ from buffer zero, we emit indexed calls that set them correctly. Turning a sequence like this: glEnable(GL_BLEND); glBlendFuncSeparate(GL_SRC_ALPHA, ...); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); into this: glEnableiEXT(GL_BLEND, 0); glBlendFuncSeparateiEXT(0, GL_SRC_ALPHA, ...); glBlendFuncSeparateiEXT(1, GL_SRC_ALPHA, ...); glEnableiEXT(GL_BLEND, 2); glBlendFuncSeparateiEXT(2, GL_SRC_ALPHA, ...); glColorMaskiEXT(2, GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); glEnableiEXT(GL_BLEND, 3); glBlendFuncSeparateiEXT(3, GL_SRC_ALPHA, ...); glColorMaskiEXT(3, GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); glColorMaskiEXT(4, GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); glColorMaskiEXT(5, GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); Test: Wuthering Waves trace Bug: b/431854319 Change-Id: Ic91d4b8cf50defd8b69ecf6aac697d0df8f69692 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6735677 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mohan Maiya 890b5d8f 2025-07-07T13:06:54 Vulkan: Encapsulate more descriptor set logic in ProgramExecutableVk - ProgramExecutableVk handles SharedDescriptorSetCacheKey updates - Inline most update*DescInfo methods - Add dedicated methods to handle uniform and storage buffers to remove some branches from frequently used code paths Bug: angleproject:426412564 Tests: UniformBufferTest31.UniformBufferBindingRangeChangeWith*FBF Change-Id: I54b8ae2bd8778231e4d187b2cfd30f4d71de7f3b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6733546 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.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>
Gyuyoung Kim ab1a2da0 2025-07-04T16:13:04 Disable EnsureLoopForwardProgressTest on iOS The CL[1] that enabled the optimization of simple loops introduced the EnsureLoopForwardProgressTest. However, this test relies on SH_ESSL_OUTPUT, which requires angle_enable_essl to be enabled. Since this is not currently supported on iOS, this CL disables the test on iOS until a proper solution is found. [1] https://chromium-review.googlesource.com/c/angle/angle/+/6575051 Bug: b/426055001 Change-Id: If694be82bad4b4724ace5051c9ee38829a367170 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6703073 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Yuxin Hu 7cbb77a8 2025-07-14T11:32:04 Fix the uniform reorder bug When sorting uniforms, we should first check if both uniforms are structs, and make sure to place the uniforms with specifier in front of the uniforms without specifier. Bug: chromium:431318231 Change-Id: I8be9501f34073983b7f3d040780b749a7366e3d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6733547 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shufen Ma d3119b0a 2025-07-07T09:35:04 Relax shader interface matching for program link ES spec 3.2 section 7.4.1 shader interface matching: With separable program objects, interfaces between shader stages may involve the outputs from one program object and the inputs from a second program object. For such interfaces, it is not possible to detect mismatches at link time, because the programs are linked separately. Before this CL, we are applying the the number of output varying and the number of input varyings must match requirement to both glProgram object as well as glPipelineProgram object which is incorrect. This CL removes such check from Program::linkVaryings. A new function LinkValidateInOutNumberMatching is added to handle the this program pipeline specific spec requirement. Bug: angleproject:424050949 Change-Id: I0d2e4360b37d175b2b998e341f15815915771413 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6704827 Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shufen Ma <Shufen.Ma@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kai Ninomiya 3f170c17 2025-07-11T15:35:01 Roll third_party/dawn/ (1684 commits) and clean up WGPU_BREAKING_CHANGEs With this roll, Dawn has completed the WGPU_BREAKING_CHANGE_* changes, so the old paths are no longer used. The roll: https://dawn.googlesource.com/dawn.git/+log/7a8946456d49..d85fc050fef7 Created with: roll-dep third_party/dawn Bug: chromium:427242889 Change-Id: Ia17fbc1447944e7bcea20d5004367d94cf7be10e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6729918 Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kai Ninomiya <kainino@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>
Kimmo Kinnunen 1443a451 2025-07-04T16:18:30 Regenerate the parsers with current cl format The format tool has changed since last parser generation. This causes overly many changes when downstream regenerates the parsers. The diff formatting fails for flex and bison generated content. Format them in full always. Bug: angleproject:429588208 Change-Id: I7a4b8e966e9502920fc25f5c1c5bf80246f5cf0b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6705451 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Cody Northrop 03356f06 2025-07-10T19:21:04 Vulkan: Skip VK_KHR_maintenance9 warning A warning has been added about behavior that will change if VK_KHR_maintenance9 is enabled. Since we can't make this change until drivers support the feature, let's add warning that will fire when we do decide to turn it on. This CL: - Adds a feature for maintenance9 - Adds a VVL skip if isn't enabled - Updates our skip code to check for message IDs Test: Traces Bug: angleproject:429339330 Change-Id: I5763cbc5f343ef165ff8810b9b60b8c809075b8f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6724905 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi 065b80a6 2025-07-10T15:50:43 Vulkan: Remove the enum to indicate submitted CB Currently, the function ContextVk::submitCommands() takes the following enum to indicate whether all command buffers or only the outside command buffer is submitted: "Submit" However, ContextVk::submitCommands() is only called twice. Also, this enum is only used to manage a few things, such as garbage collection, and finalizing foreign image layouts. It is possible to move these operations to the respective callers and remove this enum completely. * Moved the operations relying on the enum "Submit" to the locations before submitCommands() as required. * Removed the enum "Submit". (Credit for the idea to move the ops up to the callers: cclao) Bug: b/425987310 Change-Id: Ic0e1c15ee3d2e7cf22a4f7a57b6ac31acc38c861 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6724899 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu 68fa8169 2025-07-09T18:02:16 Vulkan: Reformat VVL error message Remove the VVL that is no longer observed on bots. Reformat the other VVL to use extraProperties only. Bug: angleproject:40644740 Change-Id: I57da1259754d5eba18c8c11385872b3ec9527e09 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6719618 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya 3b90872b 2025-07-06T09:02:27 Vulkan: Selectively invalidate uniform buffers Call invalidateCurrentShaderUniformBuffers iff current program has active uniform buffers. Also add DIRTY_BIT_UNIFORM_BUFFERS bit to mNew*CommandBufferDirtyBits Bug: angleproject:426412564 Bug: angleproject:429585235 Tests: UniformBufferTest31.UniformBufferBinding*WithMultiplePrograms* Change-Id: I88c37c8317205aecad638553846ffe3beff87f11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6706537 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Tim Van Patten 6d18ed63 2025-07-08T16:26:53 ValidateGetTexLevelParameterBase: Remove ES 2.0 check This CL addresses review comments in: https://crrev.com/c/6710993 1. Remove the ES_2_0 check for GL_MEMORY_SIZE_ANGLE in ValidateGetTexLevelParameterBase() since the GL_ANGLE_memory_size extension already requires OpenGL ES 2.0, making the version check redundant. 2. Update the test MemorySizeTest.BasicUsageTexture to use the function glGetTexLevelParameterivANGLE() if the context version is below OpenGL ES 3.1 and the extension GL_ANGLE_get_tex_level_parameter is available. Bug: b/409384875 Change-Id: I831d4b35eec20fcb4aff331c5a642a749bd52e67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6715885 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
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>
Corentin Wallez 5d51bd19 2025-07-01T15:40:10 Translator: Handle arrays of samplers in FlagSamplersWithTexelFetch This was found while running tests for Dawn's "sized binding arrays" (including arrays of textures) with ANGLE + Swiftshader. Adds a test that ASSERTs without the change. Bug: chromium:411573957 Change-Id: Ib7fad0f5c0b4f3aa70e6af5bf5977b82956e1986 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6695013 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Amirali Abdolrashidi ec2a04cc 2025-07-09T16:09:08 Vulkan: Skip dEQP clip/cull tests for GS/TS * Skipped the following KHR-GLES3 tests on the Vulkan backend: *.cull_distance.functional_test_item_{5/6}_* Bug: angleproject:42264006 Bug: b/415288635 Bug: b/353358652 Change-Id: I0cc052a66fa91d2c8e4e9f433bec9a3db2962bb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6720745 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Jisun Lee 7b5a8096 2025-07-09T06:26:21 Vulkan: Enable varyingsRequireMatchingPrecisionInSpirv for Samsung Bug: b/430501085 Change-Id: Iac5061c5d33642af1e53a990487833c26df45b30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6717687 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Tim Van Patten dc9fb800 2025-07-08T16:59:33 ComputeShaderTestES3.NotSupported: Skip if ES 3.1+ The test ComputeShaderTestES3.NotSupported requires that the context version is exactly OpenGL ES 3.0. However, if the system EGL does not support the ANGLE extension EGL_ANGLE_create_context_backwards_compatible, the maximum conformant version the display supports will be returned instead. This causes the test to fail, because OpenGL ES 3.1+ contexts *do* support creating compute shaders. Skip the test when testing the system EGL if the context version is 3.1+. Only skip when testing the system EGL, so we still fail if the context version is not exactly 3.0, since that's (likely) a bug. Bug: b/279980674 Change-Id: I38090d7f562c7760f2c1b1c3211d1e622b0e0ad4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6715721 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
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>
Jeff Vigil 8e9132c3 2025-07-08T15:23:17 Add missing brackets to gl_tests Add missing brackets required for format style Bug: angleproject:430338389 Change-Id: I4757f03c06bc25734c7492284160d04c8c8fd459 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6715884 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Mohan Maiya d44244ca 2025-07-03T11:36:37 Vulkan: Simplify default uniform WriteDescriptorDescs ProgramExecutableVk fully encapsulates interaction with DescriptorSetDescBuilder with https:://crrev.com/c/6702410 which allows us to keep WriteDescriptorDescs members private. Remove mDefaultUniformWriteDescriptorDescs and reuse mDefaultUniformAndXfbWriteDescriptorDescs for both emulated and extension based XFB codepaths Bug: angleproject:426412564 Change-Id: Icf76440b6efbda93eb8d48c36591a99ccd1a5750 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6705152 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya ce289330 2025-07-01T19:41:46 Vulkan: Simplify descriptor set management - Descriptor logic is contained in ProgramExecutableVk and doesn't leak into ContextVk - Reduces CPU overhead by not having to constantly copy and resize the DescriptorSetDescBuilder - Simplifies decoupling of descriptor set of uniform buffers from that of other shader resources Bug: angleproject:426412564 Change-Id: Ic0926d0d466ea21f611c2b2c7b844e0bb9027c1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6702410 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Neil Zhang 8a9fe208 2025-06-20T16:32:11 Vulkan: Fixed rate compression not work as expected on Android On Android C++ compiler do more optimization and results different with Linux, re-write code to correct the issue. Bug: angleproject:352364583 Change-Id: I1863d2d255cd831d4ca9dd866c85e419f410bd9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6687014 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Neil Zhang <Neil.Zhang@arm.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Jisun Lee 18091004 2025-06-19T16:50:58 GLES1: Skip updating vertex attrib array when binding zero texture Previously, when usecases bind the zero texture, the vertex attrib array was disabled. This made the following bound textures lose the vertex attrib data. In this change, updating vertex attrib array in prepareForDraw() is skipped when the application binds zero texture but does not activate the corresponding texture unit. Also GLES1 tests using zero texture are added to make sure vertex attrib array is enabled correctly. Test: angle_end2end_tests --gtest_filter=DrawTextureTest.* Bug: b/426740680 Change-Id: Ic5aad0a60c9d987edcb1d05cdb6b68dd93eac309 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6659335 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Tim Van Patten 2e9de3c7 2025-07-07T16:58:18 ValidateGetTexLevelParameterBase: Support GL_MEMORY_SIZE_ANGLE ANGLE supports the extension GL_ANGLE_memory_size, which adds the new parameter GL_MEMORY_SIZE_ANGLE. However, the parameter value is not supported in ValidateGetTexLevelParameterBase(), so any calls using it always fail with GL_INVALID_ENUM. The parameter is supposed to be tested by MemorySizeTest.BasicUsageTexture/*, but the portion of the test validating GL_MEMORY_SIZE_ANGLE is never executed because it requires an OpenGL ES 3.1+ context, but the test is only instantiated for GLES 2.0 and 3.0. Based on all the above: 1. Add support for GL_MEMORY_SIZE_ANGLE to ValidateGetTexLevelParameterBase(), requiring GLES 2.0+ and the extension memorySizeANGLE is enabled. 2. Instantiate MemorySizeTest to run on GLES 2.0, 3.0, 3.1, and 3.2, so the entire test is run on devices that support GLES 3.1+ contexts. Bug: b/409384875 Test: angle_end2end_tests --gtest_filter=MemorySizeTest.* Change-Id: I70c5721c5da18cb8edbc9a7e18038d5d9fb486da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6710993 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tim Van Patten 825b4062 2025-07-01T17:36:05 tests: Skip ProgramBinariesAcrossPlatforms on SystemEGL+Android ProgramBinariesAcrossPlatforms.CreateAndReloadBinary/* is failing when testing the system EGL on Android. The issue is that the test calls eglWindow->initializeGL(), without checking all of the required extensions are available first. Specifically, it needs the same type of checking that was added to ANGLETestBase with https://crrev.com/c/6622112. Rather than duplicating that work, we should instead find a way to refactor things so both ProgramBinariesAcrossPlatforms and ANGLETestBase can share the implementation. This would also fix the issue that ProgramBinariesAcrossPlatforms cannot be skipped with an entry in angle_end2end_tests_expectations.txt, also due to not inheriting from ANGLETestBase. Due to this, the test needs to be skipped directly within ProgramBinariesAcrossPlatforms::SetUp(), before mOSWindow->initialize() is called (and fails). Bug: b/424595860 Bug: b/429026255 Change-Id: I118a912e871a4693ac529376ddf97c60dd77b1a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6694919 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Yuly Novikov f346ced7 2025-07-03T15:49:41 Fix UninstantiatedParameterizedTestSuite on iOS CopyCompressedTextureTestES32 missed rename in https://chromium-review.googlesource.com/c/angle/angle/+/6648198 Bug: b/419048313 Change-Id: I9c1b64a5625f9cd15b083ff6a0827c069752aa5c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6703639 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 619e8bf8 2025-07-03T15:36:30 Skip MultisampleDepthStencilResolveSeparately on Pixel 6 Already skipped on Pixel 4. Fails on Pixel 6 Android 14. Bug: angleproject:42266019 Change-Id: I5e1dfd805b48d59c68e28e07a2d6e4f58653c27c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6702483 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> 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>
Kramer Ge 52005af1 2025-07-02T16:11:30 Define angle_use_gbm=false when !angle_has_build angle_use_gbm is not defined when !angle_has_build. This causes build to fail. Define it to false in this case. Bug: angleproject:425569857 Change-Id: I8ba66f528b3052725467aeafe046900ec06b8989 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6701310 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Kramer Ge <fangzhoug@chromium.org>
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>
Geoff Lang 2f8193ec 2025-06-25T13:17:47 Validate buffers bound for transform feedback are not modified. The ES spec says it is undefined to write to a buffer that is currently being used for transform feedback output but recommends generating an error. Generate INVALID_OPERATION in this case. Bug: chromium:427162086 Change-Id: I727d18c2035509fe2e5d60680eb5198e40a60e33 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6673310 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Charlie Lao 9a05a2b7 2025-06-23T16:24:13 Reland "Vulkan: Avoid some loops in VertexArray::onBufferChanged" This reverts commit 5df85793c602d64d47ef68e29542313be4116bc0. Reason for revert: the regression bug is fixed Some of the functionality related code has been merged into previous CL. This CL now mostly clean up. The old subject/observer code is been deleted from VertexArray. Bug: angleproject:400711938 Original change's description: > Revert "Vulkan: Avoid some loops in VertexArray::onBufferChanged" > > This reverts commit 8d6d127acc1072488e5b57ba4e7e93da2d94bfda. > > Reason for revert: https://issues.chromium.org/427064102 > > Bug: angleproject:400711938 > Original change's description: > > Vulkan: Avoid some loops in VertexArray::onBufferChanged > > > > Before this CL, VertexArray::onBufferChanged() loops over > > bufferBindingMask bits and calls onSubjectStateChange. In this CL, > > VertexArray::onSubjectStateChange is embedded into > > VertexArray::onBufferChanged(). DIRTY_BIT_ELEMENT_ARRAY_BUFFER and > > DIRTY_BIT_ELEMENT_ARRAY_BUFFER_DATA is re-arranged so that we can map > > bufferBindingMask directly to VertexArray::mDirtyBits. This especially > > useful when one buffer is bound to multiple indices in the VertexArray. > > > > This CL also removes angle::ObserverInterface from VertexArray, since it > > no longer observes anything. > > > > ASSERT is added in gl::Buffer::mContentsObservers to ensure it only > > contains BufferTexture, since vertexArray is no longer using the > > subject/observer. > > > > Bug: angleproject:400711938 > > Change-Id: Ie6e7159d7a89f0da5e1b7ca0a9dbe60a1e6c682f > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6569638 > > Reviewed-by: Geoff Lang <geofflang@chromium.org> > > Commit-Queue: Charlie Lao <cclao@google.com> > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > > Bug: angleproject:400711938 > Change-Id: I3b8e77db7b3d06b9ed875bfe7787904ac753da11 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6664161 > Commit-Queue: Charlie Lao <cclao@google.com> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Bug: angleproject:400711938 Change-Id: If7989b26701dcccbb8e49c42d388c0217e2d0b7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6663536 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 2ac49bb6 2025-07-01T12:11:12 Reland "Vulkan: Move VertexArray::ElementBuffer away from observer" This reverts commit 79ac1a8cd767a32cce6401203e20c4bd4ca4d539. Reason for revert: the regression bug is fixed in PS6 The regression bug with the original CL is caused by when we bind a vertex array without element buffer rebind, we missed to reset mIndexRangeInlineCache. The other bug is that VertexArray::mDiryBits is 64 bit but VertexArrayBufferBindingMask is 16 bit, in VertexArray::setDependentDirtyBits(), bufferBindingMask.to_ulong() << DIRTY_BIT_BUFFER_DATA_0 is only producing the 32 bit value on windows platform due to unsigned long is 32 bit value. bits() is used and bit shift is operated on to uint64_t here to avoid dropping high bits on windows. Two tests are added that reproduce the regression bug caused by the original CL. Bug: angleproject:400711938 Original change's description: > Revert "Vulkan: Move VertexArray::ElementBuffer away from observer" > > This reverts commit 3f012a43ee2c101543785720eedfeaa80708479d. > > Reason for revert: https://issues.chromium.org/427064102 > > Bug: angleproject:400711938 > Original change's description: > > Vulkan: Move VertexArray::ElementBuffer away from observer > > > > Right now, VertexArray's element buffer is always observing buffer's > > change. In previous CLs, we have moved vertex array away from > > subject/observer usage. This CL moves element buffer away from > > subject/observer as well. Since the gl::Buffer tracks buffer's binding > > to each context's current vertex array's binding point, > > kElementArrayBufferIndex is added to VertexArrayBufferBindingMask bits > > so that the element buffer is tracked exactly the same as other vertex > > array buffer bindings. The VerextArray code has been modified to handle > > this special bit, since element buffer has its own binding point > > VertexArrayState::mElementArrayBuffer as opposed to > > VertexArrayState::mVertexBindings. After this CL, VertexArray object > > should be completely off subject/observer usages. > > > > Bug: angleproject:400711938 > > Change-Id: I662ddfabc95034bdc7734939c944ab033f41801c > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6552160 > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > > Reviewed-by: Geoff Lang <geofflang@chromium.org> > > Commit-Queue: Charlie Lao <cclao@google.com> > > Bug: angleproject:400711938 > Change-Id: I9487ba8b108baaeda1c8a27189dba64f77616774 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6663539 > Commit-Queue: Charlie Lao <cclao@google.com> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Bug: angleproject:400711938 Change-Id: I3f47ad1238c41f12b5cbd7a59b84be3fce1e9562 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6664004 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Tim Van Patten de40b6e5 2025-06-06T13:18:09 tests: Add GetEglPlatform() Testing the system EGL library was recently added to ANGLE's end2end tests, breaking the assumption that the tests were interacting with the ANGLE EGL library directly. Many EGL end2end tests call eglGetPlatformDisplay() with the platform value EGL_PLATFORM_ANGLE_ANGLE. However, Android only allows EGL_PLATFORM_ANDROID_KHR, rejecting all other values (returning EGL_NO_DISPLAY). Add GetEglPlatform() to return the platform value to pass to eglGetPlatformDisplay(), based on things like the driver being tested and the OS the tests are running on. Currently, this only supports returning EGL_PLATFORM_ANDROID_KHR for SystemEGL+Android, and EGL_PLATFORM_ANGLE_ANGLE for everything else. Bug: b/279980674 Change-Id: Ib8d7970c8e178beb14ecc6a4f96156783e60c257 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6634554 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Tim Van Patten 4e0537ce 2025-06-13T11:23:58 EGLWindow: Query the Context version after creation Move GetCurrentContextVersion() from src/tests/egl_tests/EGLBackwardsCompatibleContextTest.cpp to util/util_gl.h, so it can be used by both the test and EGLWindow. Without EGL_ANGLE_create_context_backwards_compatible and specifying EGL_CONTEXT_OPENGL_BACKWARDS_COMPATIBLE_ANGLE = EGL_FALSE, ANGLE will create a context with the maximum conformant version the display supports. If the extension is not supported, we need to query the actual context version, so each test can behave accordingly. EGL 1.5 Spec 3.7.1.1 OpenGL and OpenGL ES Context Versions The context returned must be the specified version, or a later version which is backwards compatible with that version. It is expected that EGL_ANGLE_create_context_backwards_compatible is *not* supported when testing the system EGL. This change also adds a log message when the requested context version does not match the actual version. Bug: b/279980674 Change-Id: I58c0779db72c2afcc39c7d88a9a559b37698c994 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6653853 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Tim Van Patten e181ce7a 2025-07-01T11:10:16 end2end: Remove reference to *_EGL configs from help message The *_EGL configs were removed with the following CL: Support running the full end2end suite against the System EGL https://crrev.com/c/6580876 Instead, users need to use the GN arg: angle_test_enable_system_egl = true Update the help message to remove the reference to *_EGL configs and point users to the GN arg instead. Bug: b/279980674 Change-Id: I05908a65eaab6d6a9fbdca9039b687ce4fc31567 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6696787 Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Shufen Ma 154e5711 2025-06-24T15:28:28 Refine validation for GetQueryObjectuiv Spec says that after a graphics reset has occurred on a context, subsequent GL commands on that context (or any context which shares with that context) will generate a CONTEXT_LOST error. Exceptions to this behavior include: Any commands which might cause a polling application to block indefinitely will generate a CONTEXT_LOST error, but will also return a value indicating completion to the application. Such commands include: - GetSynciv with pname SYNC_STATUS ignores the other parameters and returns SIGNALED in values - GetQueryObjectuiv with pname QUERY_RESULT_AVAILABLE ignores the other parameters and returns TRUE in params Bug: angleproject:427242336 Change-Id: I86fd6f93a2c2a4b60c6a1e19637ee6382fadac7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6666083 Auto-Submit: Shufen Ma <Shufen.Ma@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Charlie Lao <cclao@google.com>
Tim Van Patten 56b5d523 2025-06-26T17:32:59 Fix GetTestConfigAPIFromRenderer() for SystemEGL Testing Add support for GLESDriverType::SystemEGL to GetTestConfigAPIFromRenderer() when system EGL testing is enabled with ANGLE_TEST_ENABLE_SYSTEM_EGL. This allows the correct GPUTestConfig value to be returned, rather than GPUTestConfig::kAPIUnknown. The side-effect of this is fixing the expectations file handling for entries with qualifiers like "VULKAN" and allowing those tests to be skipped, for example. Bug: b/279980674 Change-Id: Iaf039549b82f5ba7a047e621bb26968df511a75e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6681013 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya bb3f79dc 2025-06-26T16:59:48 Reorder shader resource dirty bits Process storage and atomic buffer dirty bits before uniform dirty bits. This helps the vulkan backend avoid duplicate work when multiple shader resources are dirty Bug: angleproject:426412564 Change-Id: Ibab3da44ee32d22078df851bfed4967d1c2a605e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6680035 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Tim Van Patten bbe53b75 2025-06-05T10:36:30 tests: Skip ShaderBinaryTest for System EGL The system driver compiler version is not expected to match the version compiled into the test, causing glShaderBinary() to return GL_INVALID_VALUE due to the incompatible binaries. Bug: b/279980674 Change-Id: I6fce9848345ce981003f0d6d8954e45c2966b523 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6622113 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Zhuang Xu 3c8b492e 2025-06-26T09:39:29 Add histogram for DirectX device removal Bug: dawn:423964507 Change-Id: I22d40ede209797e759f4b4f9e4b86785df33dbe5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6665860 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
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>
Mohan Maiya 3c41ca3e 2025-06-26T20:36:03 Bugfixes in YUV tests - There is no mechanism to query dataspace of AHB, ensure all color values are narrow range compatible - Ensure AHB usage flag reflects actual usage - Define YUV reference colors at the top and reuse in tests Bug: angleproject:386749841 Change-Id: I29d095055ede67653f89a11bae845c086c690b1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6679988 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 56e9bfff 2025-06-19T00:00:00 GL: Remove obsolete macOS workarounds Bug: angleproject:427600175 Change-Id: I8bfc062b71f1a34de09cbf76b504293ccd081fe0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6676022 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shashank Sharma ca893fdf 2025-06-23T13:41:33 Search only for png files while pulling screenshot restricted_trace_perf.py should only look for png files in temp dir and then assert only for 1 screenshot to be present. Bug: b/427963936 Change-Id: I0692aded39f7c3bd5b0c30ee4a7b613db08eac04 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6680727 Auto-Submit: Shashank Sharma <shawshanks@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>