src


Log

Author Commit Date CI Message
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>
Kramer Ge dcc715ee 2025-06-19T15:35:53 Enable EGL_PLATFORM_GBM_KHR platform with device selection FunctionsEGL.cpp: - Allow EGL_PLATFORM_GBM_KHR platform and explicit device selection. - Skip getPreferredDisplay if an explicit device is specified. Display.cpp: - Use DisplayEGL impl with EGL_PLATFORM_GBM_KHR. - Wayland can use GBM platform, and OPENGLES. angle.gni: - Rename ozone_platform_gbm to ozone_platform_drm since its deprecated. Bug: angleproject:425569857, b/396434686 Change-Id: I9493118f9dc95f78ebe46277bb4fcfeb7a29d465 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6663699 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kramer Ge <fangzhoug@chromium.org>
Igor Nazarov d5babf99 2025-06-23T12:46:51 Vulkan: Fix unhandled deferred clears after glGetMultisamplefv Issue was introduced in the commit that implemented deferred clears. The `glGetMultisamplefv()` synchronizes draw framebuffer which defers possibly staged clears. Since API is not handling deferred clears they are left untouched, causing the ASSERT. This change fixes the issue by not deferring clears for the `glGetMultisamplefv()` command during flushing staged updates of dirty framebuffer attachments. Changes: - Add `gl::Command::GetMultisample` enumeration for clarity. - Add `gl::CommandBlitBuffer::CommandBlitBufferDepthStencil` enumeration to improve code readability. - Add `command` parameter into `gl::State::syncDirtyObject()` method to use actual command enum instead of `Other`. - Remove `previousDeferredClears` local variable and update ASSERT in the `FramebufferVk::syncState()` method. New assert ensures empty `mDeferredClears` instead of just checking dirty attachments, since it is easy to make all attachments dirty making old and new assertions act the same. - Replace logic in `FramebufferVk::syncState()` that decides whether need to defer attachments or not with switch-case. This makes the logic more clear regarding handling individual commands and simplify updating this handling in the future. Except of the bug fix with `GetMultisample` command, handling of other command is uncached. - Remove `flushDeferredClears()` from `FramebufferVk::readPixels()` because `mDeferredClears` are not expected (now it's more clear after the refactoring). And even if there are `mDeferredClears` (in case of a bug or after API failure), `flushDeferredClears()` only flushes clears for the draw framebuffer, while checking `mDeferredClears` of the read framebuffer. This is a problem in case if read and draw framebuffers are not the same. Bug: angleproject:40644727 Test: angle_end2end_tests --gtest_filter=TextureMultisampleTest.GetMultisamplefvAfterClear/* Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.GetMultisamplefvAfterClear/* Change-Id: I376a62de52de5e17dbc63cc7ddb0506741a69266 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6661958 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya b3ec3a5f 2025-06-23T14:51:13 Track active uniform and storage buffer blocks Track active uniform and storage buffer block indices so we can process updates to only active buffer blocks Bug: angleproject:426412564 Change-Id: I54fa6fbe795073887646d672303d231ed4317b65 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6663825 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Gyuyoung Kim e15d293c 2025-06-16T16:24:09 tvOS: Disable child process creation code tvOS does not support multi-process applications. As a result, the code that creates a new process causes build failures when building ANGLE unit tests on tvOS. This CL disables that code to prevent the build from breaking. Bug: b/424256388 Change-Id: Ib638d3f75b2839e1a75efc571645921f0d336e55 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6640919 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Solti Ho <solti@google.com>
Alexey Knyazev beae1b4a 2025-06-19T00:00:00 Metal: Remove obsolete workarounds Removed Intel-specific Metal workarounds that are not used on macOS 12 and later. Removed a redundant version check. Bug: angleproject:427600175 Change-Id: I34c7e53108f7e030512c9436ab2b9ae38ad17946 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6672312 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 79ac1a8c 2025-06-23T11:11:10 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>
Charlie Lao 5df85793 2025-06-23T11:08:49 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>
Mohan Maiya 2fd033d0 2025-05-22T04:21:11 Vulkan: Optimize updates to uniform buffers ... when only the offset is modified. Most of the work done when handling dirty uniforms can be skipped since the buffer bindings haven't changed Bug: angleproject:386749841 Tests: UniformBufferTest31.UniformBufferBindingRangeChange*Vulkan Change-Id: Ic811bd71f0f2993f88ce9bcf93f9e8e46dfc6d99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6581359 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi d59dd3e4 2025-06-23T10:17:46 Unskip passing tests The spec change to varying packing in Vulkan is reverted and so is the SPIR-V validation change that enforced it. Bug: angleproject:404418769 Change-Id: I6eb82b8285121f65a4ac071ad6ede106dfe07988 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6661620 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 5220e634 2025-06-16T11:14:22 Fix glCopyImageSubData validation check part 2 For compressed texture, we also need to check if the copy subregion starting points (offset) are aligned with the compressed block. This change also moves *FillsEntireMip check to the ValidateCompressedRegion() function, as it is easier to do a per-dimension check. Bug: b/419048313 Bug: angleproject:42264179 Bug: angleproject:42265887 Change-Id: I0f415e575bbc77bdf5178e2b5fc1260c43e7de4b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6648198 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Tim Van Patten 3b7528e1 2025-05-20T12:31:28 Support running the full end2end suite against the System EGL Update the end2end test instantiation to either fully target the packaged ANGLE libraries or the system EGL, but not a combination of both simultaneously. The GN argument |angle_test_enable_system_egl| controls which driver is being tested by all the instantiated tests. It's default value is "false", which means the tests target the ANGLE libraries by default: kDefaultGLESDriver = GLESDriverType::AngleEGL When |angle_test_enable_system_egl = true|: kDefaultGLESDriver = GLESDriverType::SystemEGL This allows for testing the system EGL with the full end2end test suite, which is useful on devices where ANGLE is the system EGL (e.g., Android). It also allows for specifying which backend to use (or all) during system EGL testing, when ANGLE is the EGL driver. This also includes removing the various ESx_EGL() functions, because the end2end tests must now fully commit to testing either the ANGLE driver or system driver, rather than a combination of both. This is similar to many other test suites, such as the Khronos CTS (dEQP), which only test validate a single driver per invocation. Bug: b/279980674 Test: angle_end2end_tests Change-Id: I4f7dc2ccb4f26b3bd02767d0a0d2876f8612f2ae Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6580876 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 6bb47e67 2025-06-17T13:42:47 Vulkan: Limit finalizing foreign image layouts Currently, any submission results in finalizing all foreign images. However, if the submission is only limited to the outside render pass command buffer, this would result in oldLayout VVL errors (01197), as it would be too early to finalize the layout of such images at those times. At this time, this type of submission can occur if the size of buffer-to-image updates exceeds the following threshold: kMaxBufferToImageCopySize In this change, finalizing the foreign image layouts would only occur when all commands are being submitted. * In ContextVk::submitCommands(), finalizeAllForeignImages() is now called only when the submission type is Submit::AllCommands. * Added new submit tests for foreign images to ImageTest: * UploadForeignUntilSubmitDoesNotBreakRenderPass * CopyToForeignUntilSubmitDoesNotBreakRenderPass Bug: b/425987310 Change-Id: Ia345e176be79017ba18ef52a57256eeeb298e39a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6653602 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
angle-autoroll 98bd576f 2025-06-19T08:01:25 Roll VK-GL-CTS from 53a925d9098c to 9390207187c6 (28 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/53a925d9098c..9390207187c6 2025-06-17 kamil.goras@mobica.com Add OpenGL tests for textureQueryLevels 2025-06-16 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkansc-cts-1.0.3 into vk-gl-cts/main 2025-06-16 lorenzo@khronosgroup.org Merge remote-tracking branch 'vk-gl-cts/dev/VK_EXT_shader_float8' 2025-06-16 lorenzo@khronosgroup.org Update external sources (Vulkan 1.4.318) 2025-06-16 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.12 into vk-gl-cts/main 2025-06-13 ziga@lunarg.com Fix missing submit infos in sync multi queue tests 2025-06-13 rgarcia@igalia.com Fix DeprecationWarnings in fetch_sources.py 2025-06-13 scerveau@igalia.com CMake: add additional pc checks 2025-06-13 rgarcia@igalia.com Test conditional rendering with ray tracing commands 2025-06-13 rgarcia@igalia.com Test "unaligned" buffer<->image copies 2025-06-13 jbolz@nvidia.com Add cooperative vector tests for readonly loads w/bounds checking 2025-06-13 rgarcia@igalia.com Test maintenance5 default point size without large points 2025-06-13 rgarcia@igalia.com Fix missing largePoints capability for multiview tests 2025-06-13 vikram.tarikere@imgtec.com Honour undefined behaviour from OpSDiv. 2025-06-13 lorenzo@khronosgroup.org Fix dependencies checks for extensions and functions 2025-06-13 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.4.3 into vk-gl-cts/main 2025-06-12 kamil.goras@mobica.com Add negative tests that texture lookup function bias parameter is not accepted in any other shader than fragment shader. 2025-06-11 lorenzo@khronosgroup.org Add VK_EXT_shader_float8 JSON 2025-06-11 lorenzo@khronosgroup.org Add VK_KHR_maintenance9 JSON 2025-06-11 lorenzo@khronosgroup.org Add VK_KHR_video_decode_vp9 JSON 2025-06-11 lorenzo@khronosgroup.org Add VK_KHR_unified_image_layouts JSON 2025-06-11 lorenzo@khronosgroup.org Update external sources 2025-06-11 lorenzo@khronosgroup.org Merge remote-tracking branch 'vk-gl-cts/dev/VK_KHR_maintenance9' 2025-06-10 scerveau@igalia.com video: VP9 decode tests: update public repo 2025-06-09 lorenzo@khronosgroup.org Merge remote-tracking branch 'vk-gl-cts/dev/VK_KHR_video_decode_vp9' into main 2025-06-09 lorenzo@khronosgroup.org Merge remote-tracking branch 'vk-gl-cts/dev/VK_KHR_unified_image_layouts' into main 2025-06-09 lorenzo@khronosgroup.org Update external sources (Vulkan 1.4.317) 2025-06-06 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-cts-4.6.6 into vk-gl-cts/main If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,geofflang@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 Change-Id: I1f614f11f0f5cb73c24dd4346a837ec6dc88b0bf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6658499 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang cb432540 2025-06-19T17:00:27 WebGPU: Expand dEQP test expectations This lowers our unexpectged passes from ~8k to ~3.5k. Bug: angleproject:356399840 Change-Id: Idb9d4aee9103bc18783a7283d938c368c7efbe5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5875956 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Geoff Lang 98d2d5d8 2025-06-19T14:44:21 WebGPU: Add missing WebGPU suffix for perf tests. Bug: angleproject:419821694 Change-Id: Ic509df3fbd270ffc2a8f91c1565d673fb82a6bd2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6652900 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 5d124404 2025-06-17T17:04:12 WebGPU: Fix bind groups leaking in CommandBuffer. Wrap all per-submission member variables in a struct so that we can reset everything at once using the default constructor. This avoids similar leaks in the future. Bug: chromium:413078308 Change-Id: I3f926c82905b73b27d6b751cfe2878a41ced916a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6652290 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: 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>
Shahbaz Youssefi f48fcb46 2025-06-19T07:11:48 Revert "Metal: Wraparound int arithmetic for add, sub" This reverts commit 2f6f0514563d81e439e04ba09eee9e8a1d6ca8d1. Reason for revert: Leads to MSL compiler errors: > error: non-const reference cannot bind to vector element Bug: angleproject:382215759 Original change's description: > Metal: Wraparound int arithmetic for add, sub > > Implement wraparound int arithmetic for > int, ivec +, -, +=, -=, ++, --. > > All of the added tests pass also without the changes. > > Bug: angleproject:382215759 > Change-Id: I7605582ab2931e63010c34fba474797f7edd19f9 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6578729 > Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Bug: angleproject:382215759 Bug: chromium:425746892 Change-Id: I831d96c6ee7b8bcdeaa08fbf32d430def87a3c30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6656001 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kai Ninomiya 41144603 2025-06-06T10:56:03 WebGPU: Handle Dawn breaking change in CreateInstance Needed in order to update Dawn to match the standard webgpu.h, here: https://dawn-review.googlesource.com/c/dawn/+/245242 Bug: chromium:414868137 Change-Id: I2bdf5bd5747a8da8ed0612a99d70eee8a3d09ecb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6652516 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kai Ninomiya <kainino@chromium.org>
Charlie Lao 59281334 2025-05-22T17:13:22 Vulkan: Reduce kMaxEmptySlots for SharedDescriptorSetCacheKey There is report that addKey is still showing up in simpleperf. This CL breaks addKeyImpl into three functions so that SharedFramebufferCacheKey will still have the same behavior. SharedDescriptorSetCacheKey is changed to track 64 cache key at maximum, and updateEmptySlotBits() is never called in SharedDescriptorSetCacheKey. This means the shared cache key tracking is further limited to usage case where a buffer/texture is only involved in less than 64 descriptorSets. Otherwise we will not track the remaining DescriptorSets, which means if this buffer is released, the corresponding descriptorSet will not immediately destroyed, and we will rely on cache eviction code to take care of DS growing problem. Bug: b/384839847 Change-Id: I99abd17966446377babace6d06cc8f380a71c084 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6581492 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Geoff Lang dea162cc 2025-06-09T15:43:05 WebGPU: Finalize command blocks when starting a new one The command buffer abstraction would not finalize blocks of commands when creating a new block, leading to possible infinite loops when processing the commands. Bug: chromium:413078308 Change-Id: Idf4e95a5ccc71f3ddc9a4202e5e000c0e2cd5f87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6629473 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 9d70781f 2025-06-17T07:06:37 Vulkan: Bugfix in TextureVk::initImage(...) Account for compute based mipmap generation during initImage Bug: angleproject:405840226 Tests: ImageTestES3.SourceAHBTargetTexture2DGenerateMipmap* Change-Id: Ic2f6c4576ec8ff464a5d60c4a49aeb87be3a5785 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6650712 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Amirali Abdolrashidi 9e000857 2025-02-04T16:12:47 Vulkan: Utilize VkBufferUsageFlags2 for bufferview * Added the following struct to bufferview createInfo in case of VK_KHR_maintenance5 support: VkBufferUsageFlags2CreateInfoKHR * Limited VVL 08779 to platforms without KHR_maintenance5 support. Bug: angleproject:394353300 Change-Id: I46beac693cda3216afc497c8ed74cbf51b72e549 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6231512 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Martin Arjovsky a2b84cc0 2025-06-17T09:47:58 Fix bug in translator fuzzer. We were incorrectly checking a type against a spec. bug: angleproject:425580663 Change-Id: I7a57852b143ea26a41414015414d43720e2e53b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6650788 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Matthew Denton 243ebfa7 2025-06-16T16:07:06 WebGPU: Allow glReadPixels from non-base mip levels. Before, the WebGPU backend always read from the base level of the texture attached to the current framebuffer. Bug: angleproject:42267090 Change-Id: Ibe5b8575f6fa90c1942ba566485b6175ee10f808 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6634558 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Matthew Denton <mpdenton@chromium.org>
Shufen Ma db70fca6 2025-06-11T16:59:36 Add a separable program test ES 3.2 spec section 7.4.1 Shader Interface Matching is vague about the case when a program has more than one shader whose interfaces do not match and the program is set to GL_PROGRAM_SEPARABLE by glProgramParameteri API. Angle implementation thinks it is not right and the program is not linked. But since the shaders are attached to one program, the program should have enough information to link. Bug: angleproject:424050949 Change-Id: Icb9c8cbff906671beb6679309795f5c1b3acec6f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6636452 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shufen Ma <Shufen.Ma@arm.com>
Aurora Zhang dfefcbc6 2025-06-09T16:30:55 glGetProgramiv should return the properties in effect glProgramParameteri can set values to GL_PROGRAM_BINARY_RETRIEVABLE_HINT. However, this setting will not be in effect until the next time glLinkProgram or glProgramBinary has been called successfully. Also, glGetProgramiv returns the properties currently in effect for program. Therefore, we need to add a variable to record the ineffective value and copy it at the stage of glLinkProgram or glProgramBinary. Bug: angleproject:421219220 Change-Id: Ib564e6df03d34f3fc7389f926795cb3e64cbf687 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6606372 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen 94ee620d 2025-05-22T10:07:05 Metal: Allow optimization of simple loops Reimplement the feature to avoid undefined behavior of infinite loops. Add EnsureLoopForwardProgress rewrite pass that inserts a volatile variable access to all loops that it cannot analyze as being finite. Detect loops of form `for (; i <op> x; ++i)` as being finite. The <op> can be any of <,<=,>,>=,==, != operator. The i can be int or uint. The ++i can be -- or ++, -=1, +=1. This assumes that backends using the feature emit signed int arithmetic with defined wraparound semantics. Uses volatile write instead of asm("") due to asm not forcing the behavior in some compiler versions. The volatile variable access is defined in C++ as forward progress, and by inheritance this works in MSL. Later commits may remove injectAsmStatementIntoLoopBodies if ensureLoopForwardProgress is appropriate for all use-cases. Bug: angleproject:418918522 Change-Id: Ic9c29f57044b792195386483208632354d24c854 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6575051 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Yuxin Hu 79ec8b34 2025-06-12T14:32:42 Fix glCopyImageSubData validation check When checking if the copy subregion meets the compressed texture alignment requirements, we should consider if the copy subregion covers the entire width and height of texture level. It is not required to make texture size aligned with compressed texture block size when creating the texture image (e.g. width and height do not have to be multiple of 6 when calling glTexStorage2D for GL_COMPRESSED_RGBA_ASTC_6X6 textures). If the copy subregion width and height equals to the width and height of the texture level, even if they are not aligned with the compressed texture block size, the copy is allowed. This is currently covered by fillsEntireMip check. However, fillsEntireMip enforces copy subregion width, height, and depth all equal to the texture level width, height, and depth, where we should not check depth because we don't enforce depth alignment for compressed texture. For example, for a 2D texture array that has dimension of 32*16*2 in current level, a copy region with width=32, heigh=16, depth=1 should be considered as fillsEntireMip. In the spec, it says: "The source and destination subregions must be contained entirely within the specified level of the corresponding image objects". Right now we only check if width and height are within the image bounds, this change adds a check to make sure depth is also within the image bounds. Bug: b/419048313 Change-Id: I6e5339cfdfd5785f935a059638c22c9646c12162 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6634232 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 26d5d4e2 2025-06-13T14:24:29 Avoid OOB access in Load* functions Bug: angleproject:424695342 Change-Id: I245612a41d55026c615ca0185af76a153c9fe3ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6642699 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shufen Ma c53c908c 2025-06-11T15:36:48 Refine GetProgramiv validation An INVALID_OPERATION error is generated if TESS_CONTROL_OUTPUT_- VERTICES is queried for a program which has not been linked successfully, or which does not contain objects to form a tessellation control shader. An INVALID_OPERATION error is generated if TESS_GEN_MODE, TESS_GEN_SPACING, TESS_GEN_VERTEX_ORDER, or TESS_GEN_POINT_MODE are queried for a program which has not been linked successfully, or which does not contain objects to form a tessellation evaluation shader. Bug: angleproject:424050946 Change-Id: I9d6110d2783efb21efbcb62d9da7b35590c89f61 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6637010 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Shufen Ma <Shufen.Ma@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 10b7414f 2025-06-12T17:03:51 Vulkan: Do not skip VUID-vkQueueSubmit-pSignalSemaphores-00067 ... when "VK_EXT_swapchain_maintenance1" is disabled. Problem only happened in shared present mode and is now fixed by VVL: 69b41e6fbe16619526daa861444cbb3eb8fcedce layers: Do not report in-use error for shared present mode Bug: angleproject:408190758 Change-Id: I4453de01ee239a0cb4cfd0269adfcb283a00866b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6641915 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten fdff1170 2025-06-06T10:46:03 tests: SystemEGL: Skip tests needing unsupported ANGLE EXTs The system EGL may not expose ANGLE extensions, even if it *is* ANGLE, due to platform EGL restrictions (e.g., Android platform EGL). Skip any tests requiring ANGLE-specific extensions during test setup, rather than failing them. This also requires refactoring ANGLETestBase to derive ::testing::Test so it has access to Test::IsSkipped(). Bug: b/279980674 Change-Id: I8e424509c41fa5a69dee9fc8e0c92da58e4758fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6622112 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Matthew Denton 005336e4 2025-06-11T17:17:16 WGPU: Basic texture cubes Allows uploading to texture cube faces and sampling from them in shaders using samplerCube. Bug: angleproject:420782526 Change-Id: I45d4370fcc418f39afb225114d13632a78c7c200 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6593999 Reviewed-by: Liza Burakova <liza@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Yuxin Hu 5d63c8d5 2025-06-11T13:01:25 Reformat VVL error message Update the VVL error message to use the new format. Remove the unused VVL error. Bug: angleproject:42264926 Bug: angleproject:42263911 Bug: angleproject:42265079 Bug: angleproject:42264496 Change-Id: I151960942c1bbf346693f250ec57f01fa3432784 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6634225 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Jisun Lee d8c15499 2025-05-27T03:46:24 Vulkan: Clear depth and stencil unresolve separately To take into account two situations. 1. LoadOp for depth and stencil attachments are set differently. 2. depth and stencil unresolves could be different between the previous render pass and the current render pass. Bug: angleproject:42266019 Change-Id: I9e069b3972f86abb84eee6280919e6bba2901225 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6590197 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten d9818437 2025-05-22T12:52:29 tests: Cleanup build_angle_end2end_tests_library block 1. If Vulkan is enabled, always include the Vulkan tests in the end2end tests, rather than excluding them when build_angle_end2end_tests_library is 'true'. 2. Remove NDK include. It's unnecessary, because the 'angle' target already manages its own include_dirs. Bug: b/279980674 Change-Id: Ibf3c29a5f90f161a7c9a69f5c4736ea4c3ef49ae Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6580875 Reviewed-by: Solti Ho <solti@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Tim Van Patten 3c2bff4b 2025-05-22T12:33:12 Rename angle_end2end_tests_aosp to angle_end2end_tests_library Rename the GN arg angle_end2end_tests_aosp to angle_end2end_tests_library, because while building the end2end tests is relevant for Android, it's not restricted or specific to Android. Bug: b/279980674 Change-Id: I8f03e0fe264ac918cb34c379be85b65d7bfc0ab1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6580873 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Tim Van Patten f9053516 2025-06-10T14:24:13 MultiviewTestBase: Remove setWebGLCompatibilityEnabled(true) Remove setWebGLCompatibilityEnabled(true) from MultiviewTestBase since it's not required and prevents running the tests when the extension EGL_ANGLE_create_context_webgl_compatibility is not available. Bug: b/279980674 Test: angle_end2end_tests --gtest_filter=*Multiview* Change-Id: I32a95b110e17afcb0d45c0c8447d43f456310fee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6635032 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Tim Van Patten 0d441eda 2025-05-29T12:04:46 util: Give all ConfigParameters default values ConfigParameters has a mix of 'bool' and 'Optional<bool>', with some tests setting the Optional<> values to the default value, inadvertently creating a dependency on the associated extension. To reduce the dependency on various extensions and allow more tests to run, update ConfigParameters to only contain raw bools and initialize them to the default values defined by the associated spec. This allows EGLWindow to only require the necessary extension when a non-default value is set by a test. This also requires updates to a handful of tests which were relying on the state of extensions due to non-default values. Bug: b/279980674 Change-Id: I77a7e102559e4393aadcdbf37886ae80cbbb9e29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6618033 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shashank Sharma c6b3440b 2025-06-06T23:34:33 Vulkan: Add G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 support. Add support for YCBCR_P010 format. Bug: b/408996471 Change-Id: I899533b604e5b2fd0ad1fb1e940dd1f119179794 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6628658 Reviewed-by: Solti Ho <solti@google.com> Auto-Submit: Shashank Sharma <shawshanks@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi c39f4a5c 2025-06-05T15:35:06 Vulkan: Update border color assignment for stencil In texture border clamp, if the border color is assigned together stencil mode (both using glTexParameter()), its red component is used to set up a border color to be used in each backend: * (Set up in AdjustBorderColor()) In the Vulkan backend, this is used when updating SamplerDesc, which is then used later to set up the custom border color: * (VkSamplerCustomBorderColorCreateInfoEXT) According to the spec, in case of undefined format, integer border color, and stencil image, the implementation is required to use either the first or the second component of the custom color, although it is recommended to use the first. However, at the moment, only the first component is being populated, while using the second component is also valid. * Added feature: usesSecondComponentForStencilBorderColor * Added bit to SamplerDesc: mUsesSecondComponentForStencil * It is set based on the feature flag above and the texture format. * When setting the custom border color info, the second component will be used based on the above flag. * Added test suites to test this on ES31 and ES32: TextureBorderClampTestES3*.CustomBorderColorWithStencil* * Updated capture params for glTexParameterIuivEXT(). * Suppressed the ES32 version for the following: * P4 * Linux/NVIDIA (due to out-of-date driver) Bug: b/390710636 Change-Id: Ie50c19e8ea66da40dc8b8db49d7e622a582637a5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6626416 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Aurora Zhang 65159c4e 2025-06-05T15:05:46 Update pipeline desc when sample count changes * If the sample count changes when calling glFramebufferTexture2DMultisampleEXT, we need to update pipeline desc to ensure it is the same as the API requires. * Add a new end2end test to verify. Bug: angleproject:422611722 Change-Id: I7de7d3d17513cf03f5e24baa2db83633a229b4b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6623419 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 1e613fec 2025-05-27T16:59:26 Compiler: sort uniforms by precision This change reoreders the AST sequences so that uniform declarations with lower precisions are places in front of uniform declarations with higher precisions. This is to prepare for the upcoming change that converts uniforms declared with mediump or lowp to 16-bit and pack them to 32-bit integeter using packHalf2x16(). Bug: b/405795981 Change-Id: I5e1e293399dc8b51b9a6e83115f95beb0c4a7b1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6594255 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya c45e7c83 2025-05-22T04:14:52 Vulkan: Optimize uniform and storage buffer updates Maintain a map between buffer block index and its DescriptorDesc index in WriteDescriptorDescs and look up the map instead of repeatedly calculating it when updating DescriptorDesc Bug: angleproject:386749841 Change-Id: I74d14f6205f07992fae1e338697998d04de1c563 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6603986 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Tim Van Patten b888dc2b 2025-06-09T16:58:38 OcclusionQueriesTest: Convert to ANGLETest<> Convert OcclusionQueriesTest to an ANGLETest<> and remove calling ANGLETestSetUp() directly. This can be error-prone if ANGLETestSetUp() doesn't complete, but the test still executes GL commands either in SetUp() or testSetUp(), before the test itself can be skipped. In that case, there may not be a current Context, leading to calls like glGetString() returning nullptr. This also includes some additional cleanup to remove the GetParam() calls. Bug: b/279980674 Change-Id: I5604836c78845424b82b693bc1b74e84b6b557d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6631025 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 0ac62dd7 2025-06-09T16:47:22 MultiviewRenderTest: Return if test should be skipped MultiviewFramebufferTestBase::FramebufferTestSetUp() may not complete if ANGLETestBase::ANGLETestSetUp() determines the test needs to be skipped due to (for example) missing extension support. In that case, there may not be a current Context, leading to calls like glGetString() returning nullptr. Check if the test is marked "Skipped" before continuing in MultiviewRenderTest::SetUp(). Bug: b/279980674 Change-Id: Iba869029bc26fc5528853be0323fd3c50037a493 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6631023 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi ef85f283 2025-06-10T10:45:06 Test for deferred clear vs robust init vs invalidate Bug: b/381284577 Change-Id: I15effe1f216523a51af83a154ad27d2921e52258 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6633791 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Tim Van Patten de00cc6b 2025-05-28T17:06:59 tests: Move wglWindow to a guard statement WGL tests are currently disabled. Refactor the check to be a guard statement earlier in ANGLETestBase::ANGLETestSetUp(), so it bails out sooner. This also allows for pulling everything in the else-block out, reducing indentation and improving readability. Bug: b/279980674 Change-Id: Id91b68e2a2e5ffd301a7c49733940b7f08892dce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6604937 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jeff Vigil a7877665 2025-06-02T08:13:30 Fix drm format and modifier handling Move functions to private Change case on methods to lowercase per style guide Change related methods to use set instead of vector, this saves a copy from set to vector. Initialize formats before supportsDmaBufFormat because queryDmaBufModifiers can be called before queryDmaBufFormats and need to initialize at supportsDmaBufFormats. Bug: angleproject:412730346 Change-Id: I8575bee6e7a6a09d9065ed81acff899e73004764 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6610088 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Amirali Abdolrashidi d84248ce 2025-06-09T10:40:37 Revert "Disable unused private field for dEQP compilation" This reverts commit b670d47b7aaff94d3a9e2e1b975e73d0ea336d85. Reason for revert: Warnings resolved on the tests Bug: angleproject:420728429 Original change's description: > Disable unused private field for dEQP compilation > > Incoming VK-GL-CTS rolls are failing due to the following error > for some dEQP targets: > "private field 'm_size' is not used [-Werror,-Wunused-private-field]" > This warning can be suppressed for this target temporarily, allowing > the autoroller to merge new changes. Once the issue has been addressed > on the CTS code, this change should be reverted. > > * Added -Wno-unused-private-field to gles2 and gles31 targets. > * This is a temporary change. It should be removed once the issue > has been addressed. > > Bug: angleproject:420728429 > Change-Id: I0177ded84ad58a148884e8abfac3aea9a1ff7d43 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6604679 > Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:420728429 Change-Id: I6b655a37568f42fabf710380c82ab775b126bdc7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6630278 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Shahbaz Youssefi <syoussefi@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>
Mavis Deng 65091427 2025-06-05T14:08:01 Query draw buffer should return NONE for no surface default FB When querying the draw buffer state via glGetIntegerv(GL_DRAW_BUFFER) on the default framebuffer with no surface bound, GL_NONE should be returned. Bug: angleproject:422631118 Change-Id: Iad2f1662692b0a92563e4cfd7fe09437cb40f0c7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6619453 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Mavis Deng <mavis.deng@arm.com> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 3a15fab0 2025-06-05T13:47:18 Add tests for per-sample shading state tracking Add tests to cover usecases exposed by these optimizations - - https://chromium-review.googlesource.com/c/angle/angle/+/6622156 - https://chromium-review.googlesource.com/c/angle/angle/+/6619019 Bug: angleproject:386749841 Change-Id: I848ed68afe00757a10c8c970ee1f9a9b4646e9ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6622107 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya db962407 2025-06-03T08:00:43 Vulkan: Optimize FramebufferVk::getSamples() Cache value of samples during syncState(...) and return this value on subsequent queries Bug: angleproject:386749841 Change-Id: I21fb2221187c7b2159fed1b271da642ba2552348 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6619019 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Alexey Knyazev f6b40bc8 2025-05-15T00:00:00 Add a missing compile macro Bug: angleproject:406922380 Change-Id: If2d4cc1472b490b3507591f0a6ac940369df5ccb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6624377 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 8c48b502 2025-06-05T02:09:54 Vulkan: Fix deferred clear vs robust init vs invalidate The DIRTY_OBJECT_DRAW_ATTACHMENTS bit, when handled, goes over framebuffer attachments and requests that they be cleared. This is done only with robust init. The DIRTY_OBJECT_DRAW_FRAMEBUFFER bit, when handled, results in staged updates to be applied to the attachments. When syncDirtyObjects is called, the above bits are handled. If we end up in a situation where DIRTY_OBJECT_DRAW_ATTACHMENTS is set, but not DIRTY_OBJECT_DRAW_FRAMEBUFFER, the following happens with Vulkan: - Handle DIRTY_OBJECT_DRAW_ATTACHMENTS - TextureVk::initializeContents - ImageHelper::stageResourceClearWithFormat - Observer message to TextureVk->Texture->Framebuffer->Context - Context sets DIRTY_OBJECT_DRAW_FRAMEBUFFER - However syncDirtyObjects does not notice this bit, as it has cached the dirty objects and is in the middle of looping over them In the above scenario, the call that results in syncDirtyObjects does not process the draw framebuffer (if not already dirty for some other reason), meaning the clear is not applied _before_ the current operation but after it (whenever framebuffer is synced next). In this change, I attempted to ensure that if DIRTY_OBJECT_DRAW_ATTACHMENTS is ever dirty, DIRTY_OBJECT_DRAW_FRAMEBUFFER is also dirty. There were a few operations that could theoretically lead to this which are fixed by this change. The particular one that revealed the bug was State::syncDirtyObject syncing only the FRAMEBUFFER bit and leaving the ATTACHMENTS bit for the unsuspecting following operation. The aforementioned assertion is not included in this change however, as it revealed one unresolved issue with the d3d backend where DIRTY_OBJECT_DRAW_ATTACHMENTS is not set, but processing DIRTY_OBJECT_DRAW_ATTACHMENTS sets it while dirty bits are being processed. Bug: b/381284577 Change-Id: If3c35fbade069ae75f66dd6d4df5d73882a08a93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6621059 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 92dec961 2025-05-15T00:00:00 Enforce validation consistency for lockless entry points Bug: angleproject:406922380 Change-Id: If4e6051d0ac465f4ae8abca0a62cad14d1d739b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6624114 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Amirali Abdolrashidi b6579180 2025-05-15T15:29:28 Add test case for CS writes without barriers * Added the following test to ComputeShaderTest: WriteToSeparateSSBOComponentsWithoutExplicitBarrier * Based on KHR-GLES31 test: .core.shader_storage_buffer_object.advanced-switchBuffers-cs * It involves writing to different components of an SSBO without explicit barriers in between. Bug: b/417769912 Change-Id: I9f6170937c9ccf3487d8f9e7758196c950252ea3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6552162 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Mohan Maiya ef31b3ed 2025-06-04T12:00:04 Vulkan: Selectively dirty DIRTY_BIT_SAMPLE_SHADING When program executable changes dirty DIRTY_BIT_SAMPLE_SHADING bit if either the current or previous program enabled per sample shading Bug: angleproject:386749841 Change-Id: I82aa7df29473e455aa68dfba9fefdb1bc712a78d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6622156 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
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>
Jiaqi Li 88ea74bf 2025-05-30T14:17:09 Add another condition to call copyBufferDataToImage directly To directly copy from a buffer, it's necessary that the buffer does not need conversion. Add this condition to the check function. Add related end2end test. Bug: angleproject:421288695 Change-Id: Id57df32f91a8f385bc07b2788149cc4478ccbab4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6605140 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Jiaqi Li <Jiaqi.Li@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
angle-autoroll 87217c88 2025-06-03T08:01:03 Manual Roll VK-GL-CTS from 2231585b0204 to 832d82a93cb1 (1 revision) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/2231585b0204..832d82a93cb1 2025-05-30 kamil.goras@mobica.com Add missing coverage for ClearTex[Sub]Image for OpenGL If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,yuxinhu@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: b/421940612 Tbr: yuxinhu@google.com Change-Id: I5b57cfc7b1d23b30fd8764db735eb5cf516ddc20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6616574 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Xiang Wang e877e655 2025-06-02T17:02:36 Reland "Suppress VUID-VkRenderPassBeginInfo-renderPass-00904" This reverts commit 8c75960e034a09bad67ece528c99e202bed69b64. Reason for revert: retry dry-run without revert Bug: b/303441816 Original change's description: > Revert "Suppress VUID-VkRenderPassBeginInfo-renderPass-00904" > > This reverts commit f8f9847771fa86589da29527c806d89e6f92c7a9. > As the issue is no longer reproducible on a P25 device with > latest ANGLE. > > Bug: b/303441816 > Change-Id: Iae86b3f4e30609cd5b1aedb4293192b06be71919 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6614157 > Commit-Queue: Xiang Wang <xwxw@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Bug: b/303441816 Change-Id: Ib447a5af33bd17f891a8db99766fc8f275162a6c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6614164 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Xiang Wang <xwxw@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Roberto Rodriguez af6313f5 2025-06-02T10:31:27 Check redundant statements for comma op in MSL translator. Bug: angleproject:421891565 Change-Id: I0475476f360f103a3da4df263dae9c604a8bfef5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6610091 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Yuly Novikov ac596fd8 2025-06-03T03:50:01 Revert "Tests: Add Aquarium trace" This reverts commit 537d40dcac601e051e9954ed8b08cafd2cc55ff0. Reason for revert: increases linux-asan-test compile time by 2 hours Bug: b/420699380 Original change's description: > Tests: Add Aquarium trace > > Test: angle_trace_tests --gtest_filter="*aquarium*" > Bug: b/420699380 > Change-Id: I30e0b0cbf2520b98dc265a6686e81cc3280f5555 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6594253 > Reviewed-by: Mark Łobodziński <mark@lunarg.com> > Commit-Queue: Cody Northrop <cnorthrop@google.com> Bug: b/420699380, angleproject:421425259 Change-Id: I2931dec718e603c4e7903cfaa268ef1fb7aa3370 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6617080 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Xiang Wang 8c75960e 2025-05-30T16:06:54 Revert "Suppress VUID-VkRenderPassBeginInfo-renderPass-00904" This reverts commit f8f9847771fa86589da29527c806d89e6f92c7a9. As the issue is no longer reproducible on a P25 device with latest ANGLE. Bug: b/303441816 Change-Id: Iae86b3f4e30609cd5b1aedb4293192b06be71919 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6614157 Commit-Queue: Xiang Wang <xwxw@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Tim Van Patten 7644c9db 2025-06-02T11:44:38 test: Remove EGLSingleBufferTest.VerifyMutableRenderBufferKHR The test is enforcing that specifying/querying EGL_SINGLE_BUFFER requires the extension EGL_KHR_mutable_render_buffer. However, EGL_RENDER_BUFFER/EGL_SINGLE_BUFFER were introduced in EGL 1.4, removing any extension requirements for devices that support EGL 1.4+. 3.5 Rendering Surfaces 3.5.1 Creating On-Screen Rendering Surfaces ... EGL_RENDER_BUFFER specifies which buffer should be used by default for client API rendering to the window, as described in section 2.2.2. If its value is EGL_SINGLE_BUFFER, then client APIs should render directly into the visible window. If its value is EGL_BACK_BUFFER, then all client APIs should render into the back buffer. The default value of EGL_RENDER_BUFFER is EGL_BACK_- BUFFER The extension itself requires a minimum of EGL 1.2, meaning only versions 1.2 and 1.3 require EGL_KHR_mutable_render_buffer to use EGL_SINGLE_BUFFER. Remove the test since it doesn't gives us any information anymore since we always expose EGL 1.5 anyway. Bug: b/417459061 Change-Id: I060e196600e6ece6179a164d9125a8b98c0d8498 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6613123 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Serdar Kocdemir b1359277 2025-05-14T22:53:36 Declare lavapipe device type Fixes 'Unknown GPU architecture' warning when using lavapipe driver with guest side ANGLE enabled on the emulators. Also treats lavapipe similar to swiftshader for test coverage purposes. Bug: b/417791087 Test: run goldfish emulator with '-gpu lavapipe' Change-Id: I40002ce191aa49f08d887c066321c4d0c27f2738 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6547537 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuxin Hu f000acf8 2025-05-28T12:37:20 Vulkan: Remove suppressed VVL errors that no longer applies on bots All the devices on bots support VK_ATTACHMENT_STORE_OP_NONE. To pass the bot, we no longer need to suppress the VVL errors that only occur on devices where VK_ATTACHMENT_STORE_OP_NONE is not supported. Remove the error messages from the suppression list. Bug: angleproject:42264496 Bug: angleproject:42265159 Change-Id: I47bfcb6cff77ae68b1755e8e0105411f31f713e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6598217 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Tingwei Guo ef29d42e 2025-05-22T15:52:49 Support ASTC decode mode extensions in ANGLE Added support for GL_EXT_texture_compression_astc_decode_mode and GL_EXT_texture_compression_astc_decode_mode_rgb9e5 in ANGLE. Also added corresponding end-to-end tests for ASTC decode mode queries, including ASTC decode mode queries and rendering with ASTC texture formats with different decode modes on GL_TEXTURE_2D works. Bug: angleproject:419403188 Change-Id: I0f2dced8468c4e25597740d1de346b2f699bb81e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6575285 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
angle-autoroll 20b08f95 2025-05-29T10:14:33 Roll VK-GL-CTS from c9d2e24d1a6d to 7be6d4540af2 (27 revisions) * Added gl4cTextureBufferTests files to deqp.gni. https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/c9d2e24d1a6d..7be6d4540af2 2025-05-26 rgarcia@igalia.com Test vkGetPhysicalDeviceFormatProperties2 pNext chain 2025-05-26 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.4.2 into vk-gl-cts/main 2025-05-26 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.12 into vk-gl-cts/main 2025-05-23 kamil.goras@mobica.com Add test texture buffer size clamping 2025-05-23 piotr.byszewski@mobica.com Tests null FS with cull distance and sample mask 2025-05-23 piotr.byszewski@mobica.com Use bad VkPipelineRenderingCreateInfo when it is not needed in GPL 2025-05-23 boris.zanin@amd.com Verify stride is non-constant value in OpCooperativeMatrixStore/Load 2025-05-23 petermcneeley@google.com Amber tests for NClamp spir-v extended instruction 2025-05-23 david.rosca@amd.com Fix film grain flag for dEQP-VK.video.decode.av1.argon_filmgrain_10_test1019_*_dpb 2025-05-23 ziga@lunarg.com Fix enabling extensions in swapchain maintenance1 tests 2025-05-23 lionel.g.landwerlin@intel.com Fix default SampleMask value in VK_EXT_shader_object tests 2025-05-23 mateusz.bahyrycz@mobica.com Fix for missing synchronization in BufferViewTestInstance 2025-05-23 piotr.byszewski@mobica.com Port selected tests to new capabilities system 2025-05-23 michal.jakubek@mobica.com Reduce createCustomInstance() calls. 2025-05-23 michal.jakubek@mobica.com Capabilities system for custom device creation 2025-05-23 rgarcia@igalia.com Test multistream rasterization with XFB 2025-05-23 rgarcia@igalia.com Test image-to-image copies for 96-bit formats with linear tiling 2025-05-23 rgarcia@igalia.com More DGC conditional rendering tests related to preprocessing 2025-05-23 rgarcia@igalia.com Test sampling VK_FORMAT_A1R5G5B5_UNORM_PACK16 2025-05-23 rgarcia@igalia.com Add tests with additional commands on secondary command buffers 2025-05-23 rgarcia@igalia.com Fix verification thresholds in sampling tests for small formats 2025-05-23 rgarcia@igalia.com Test copying immutable samplers 2025-05-23 rgarcia@igalia.com Add ldexp tests with non-32-bit exponents 2025-05-23 rgarcia@igalia.com Add XFB tests with primitive restart 2025-05-23 rgarcia@igalia.com Test arbitrary matching queue family values in barriers 2025-05-23 rgarcia@igalia.com Test geometry shader side effects always happen 2025-05-23 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.4.2 into vk-gl-cts/main If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC abdolrashidi@google.com,angle-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:420728429 Tbr: abdolrashidi@google.com Change-Id: Iee73fa63e10dd084a4c67bcae7ab1779f8efdbcf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6601054 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi b670d47b 2025-05-29T13:37:27 Disable unused private field for dEQP compilation Incoming VK-GL-CTS rolls are failing due to the following error for some dEQP targets: "private field 'm_size' is not used [-Werror,-Wunused-private-field]" This warning can be suppressed for this target temporarily, allowing the autoroller to merge new changes. Once the issue has been addressed on the CTS code, this change should be reverted. * Added -Wno-unused-private-field to gles2 and gles31 targets. * This is a temporary change. It should be removed once the issue has been addressed. Bug: angleproject:420728429 Change-Id: I0177ded84ad58a148884e8abfac3aea9a1ff7d43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6604679 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Mohan Maiya 58f21f8f 2025-05-29T07:53:02 Vulkan: Optimize ProgramExecutableVk::bindDescriptor(...) Cache valid descriptor set indices in a bitset, this helps eliminate branches within loops and makes for more readable code Bug: angleproject:386749841 Change-Id: I06fbf529ceb6c8ece9313b3b5e9edd6c6b63542b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6601733 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>