src/tests/egl_tests


Log

Author Commit Date CI Message
Tim Van Patten 043b07e7 2025-09-22T11:08:08 tests: Skip LogEnabledFeatures on system EGL Skip the test EGLPrintFeaturesVulkanExtensionsInfoTest.LogEnabledFeatures when testing the system EGL, because not all platforms expose ANGLE-specific extensions. Bug: b/409384875 Test: angle_end2end_tests \ --gtest_filter=EGLPrintFeaturesVulkanExtensionsInfoTest.LogEnabledFeatures* Change-Id: Id1b602b7d177b109da5cfc7c4082ad044c97475e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6973139 Reviewed-by: Solti Ho <solti@google.com> Auto-Submit: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mohan Maiya b5e73d90 2025-09-12T12:43:17 Vulkan: Enhance EGLPrintEGLinfoTest Add tests that log features and vulkan extensions Bug: angleproject:386749841 Change-Id: I212aca3015292ed2bd5cd08216878a4bc56db0a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6944908 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Tom Sepez 6f0337a0 2025-08-28T23:13:22 Avoid some needless c_str() calls. Remove conversions from string -> char* -> string, as detected some time ago by a clang compiler plugin. Typically, this occurs when passing a c_str() result to a function that expects a string argument. Bug: b/412730353 Change-Id: I1d9c83e9ed5c4900eec266e71f534661f0f3d4d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896657 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Tom Sepez <tsepez@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tom Sepez 25390156 2025-08-21T00:13:19 Suppress unsafe buffers on a file-by-file basis in src/ [1 of N] In this CL, we suppress many files but stop short of actually enabling the warning by not removing the line from the unsafe_buffers_paths.txt file. That will happen in a follow-on CL, along with resolving any stragglers missed here. This is mostly a manual change so as to familiarize myself with the kinds of issues faced by the Angle codebase when applying buffer safety warnings. -- Re-generate affected hashes. -- Clang-format applied to all changed files. -- Add a few missing .reserve() calls to vectors as noticed. -- Fix some mismatches between file names and header comments. -- Be more consistent with header comment format (blank lines and trailing //-only lines when a filename comment adjoins license boilerplate). Bug: b/436880895 Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian 51cffa97 2025-08-13T14:23:51 Implement EGL_NV_context_priority_realtime In this extension, new attribute value EGL_CONTEXT_PRIORITY_REALTIME_NV is accepted for EGL_CONTEXT_PRIORITY_LEVEL_IMG. In ANGLE, this extension should depend on VK_EXT_global_priority and VK_EXT_global_priority_query. The implementation of creating device queue is also modified for this new attribute value. New end2end test is added to check if this new attribute works. Bug: angleproject:397474813 Change-Id: I68316fe371f5a495dbc78b106fc89787be18e086 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6857673 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 5d9d9b9b 2025-08-19T17:12:03 test: Use eglGetPlatformDisplay() From the EGL 1.5 spec: Appendix F Version 1.5 EGL version 1.5 was voted out of the Khronos Technical Working Group on January 31, 2014, and formally approved by the Khronos Board of Promoters on March 14, 2014. EGL 1.5 is the sixth release of EGL. It introduces the following new features (the EGL extension(s) each feature is based on are also shown parenthetically): * Platform support: – Providing a mechanism for support of multiple platforms (such as window systems or offscreen rendering frameworks) in a single EGL implementation at runtime (EGL_EXT_platform_base). Until https://crrev.com/c/6552257, many tests used eglGetPlatformDisplayEXT() which is provided by the EGL extension EGL_EXT_platform_base. With the promotion of the EGL_EXT_platform_base functions to core EGL in version 1.5 and ANGLE supporting EGL 1.5 (as of at least 2019), the calls were updated to use eglGetPlatformDisplay(). Unfortunately, EGLContextPassthroughShadersTest was missed. Bug: b/409384875 Test: angle_end2end_tests Change-Id: I5c620bce98c8e76113588f4c94b77d95a5223171 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6862841 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Tim Van Patten 88de021d 2025-08-01T17:15:22 tests: Skip PbufferDifferentConfig on system EGL Skip the test EGLBackwardsCompatibleContextTest.PbufferDifferentConfig when testing the system EGL, because not all platforms expose ANGLE-specific extensions. Bug: b/409384875 Test: angle_end2end_tests \ --gtest_filter=EGLBackwardsCompatibleContextTest.PbufferDifferentConfig/ES2_Vulkan_NoFixture Change-Id: I1556d7981d1e6c8c6fc1803cafcb76fa1052dcef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6814161 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@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>
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>
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>
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>
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>
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>
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>
Tim Van Patten dcbcee8a 2025-05-15T10:39:55 Tests: Use eglGetPlatformDisplay() From the EGL 1.5 spec: Appendix F Version 1.5 EGL version 1.5 was voted out of the Khronos Technical Working Group on January 31, 2014, and formally approved by the Khronos Board of Promoters on March 14, 2014. EGL 1.5 is the sixth release of EGL. It introduces the following new features (the EGL extension(s) each feature is based on are also shown parenthetically): * Platform support: – Providing a mechanism for support of multiple platforms (such as window systems or offscreen rendering frameworks) in a single EGL implementation at runtime (EGL_EXT_platform_base). Many tests use eglGetPlatformDisplayEXT() which is provided by the EGL extension EGL_EXT_platform_base. With the promotion of the EGL_EXT_platform_base functions to core EGL in version 1.5 and ANGLE supporting EGL 1.5 (as of at least 2019), update the calls to use eglGetPlatformDisplay(). This is in preparation for running the ANGLE end2end tests in Android, which only exposes the EGL 1.5 functions, and not the EGL_EXT_platform_base functions. Bug: b/391967165 Test: angle_end2end_tests Change-Id: I58109c3afe270f46db952e124ee3f5c11200ca35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6552257 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Tim Van Patten e7277deb 2025-05-19T11:16:56 Add test to validate eglGetPlatformDisplayEXT() Add a test to validate eglGetPlatformDisplayEXT() returns a valid display on devices that support the EGL extension EGL_EXT_platform_base. Bug: b/279980674 Test: EGLDisplayTest.GetPlatformDisplayEXT/* Change-Id: I8cbb9c3905deb960e567a07d64e6c9d590a4ae70 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6565328 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Tim Van Patten f21ec7a0 2025-05-14T10:52:50 Tests: Skip VerifyMutableRenderBufferKHR on Intel+Win The test EGLSingleBufferTest.VerifyMutableRenderBufferKHR/ES*_Vulkan_NoFixture is failing on Intel+Windows and generating VVL errors. ERR: vk_renderer.cpp:968 (rx::vk::(anonymous namespace)::DebugUtilsMessenger): [ VUID-VkSwapchainCreateInfoKHR-presentMode-parameter ] vkCreateSwapchainKHR(): pCreateInfo->presentMode (VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR) requires the extensions VK_KHR_shared_presentable_image. The Vulkan spec states: presentMode must be a valid VkPresentModeKHR value (https://docs.vulkan.org/spec/latest/chapters/VK_KHR_surface/wsi.html#VUID-VkSwapchainCreateInfoKHR-presentMode-parameter) ..\..\src\tests\egl_tests\EGLSurfaceTest.cpp(2036): error: Value of: IsEGLDisplayExtensionEnabled(mDisplay, "EGL_KHR_mutable_render_buffer") Actual: false Expected: true It's not entirely clear where things are going wrong, but appears to be something in the Intel+Windows driver. Skip the test for now to keep win-exp-test green otherwise. Bug: b/417459061 Test: EGLSingleBufferTest.VerifyMutableRenderBufferKHR Change-Id: Iee848b46cddaf05d0cbb0c2d81d76d07dd0b9bba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6548415 Auto-Submit: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Tim Van Patten ed4d7278 2025-05-13T10:06:18 Tests: Skip VerifyMutableRenderBufferKHR on Intel+Win The test EGLSingleBufferTest.VerifyMutableRenderBufferKHR/ES*_Vulkan_NoFixture is failing on Intel+Windows and generating VVL errors. ERR: vk_renderer.cpp:968 (rx::vk::(anonymous namespace)::DebugUtilsMessenger): [ VUID-VkSwapchainCreateInfoKHR-presentMode-parameter ] vkCreateSwapchainKHR(): pCreateInfo->presentMode (VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR) requires the extensions VK_KHR_shared_presentable_image. The Vulkan spec states: presentMode must be a valid VkPresentModeKHR value (https://docs.vulkan.org/spec/latest/chapters/VK_KHR_surface/wsi.html#VUID-VkSwapchainCreateInfoKHR-presentMode-parameter) ..\..\src\tests\egl_tests\EGLSurfaceTest.cpp(2036): error: Value of: IsEGLDisplayExtensionEnabled(mDisplay, "EGL_KHR_mutable_render_buffer") Actual: false Expected: true It's not entirely clear where things are going wrong, but appears to be something in the Intel+Windows driver. Skip the test for now to keep win-exp-test green otherwise. Bug: b/417459061 Test: EGLSingleBufferTest.VerifyMutableRenderBufferKHR Change-Id: I3bc21dfa059b1c0d7c4e8f7ae0452a3819bedbb3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6541387 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Tim Van Patten 317f81db 2025-05-01T14:17:47 Fix EGL_RENDER_BUFFER query if EGL_SINGLE_BUFFER unsupported eglCreateWindowSurface() can have the EGL attribute EGL_RENDER_BUFFER specified: 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. Client APIs may not be able to respect the requested rendering buffer. To determine the actual buffer that a context will render to by default, call eglQueryContext with attribute EGL_RENDER_BUFFER (see section 3.7.4). To support EGL_SINGLE_BUFFER, Vulkan surfaces must support the VkPresentModeKHR value VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR: VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR specifies that the presentation engine and application have concurrent access to a single image, which is referred to as a shared presentable image. The presentation engine is only required to update the current image after a new presentation request is received. Therefore the application must make a presentation request whenever an update is required. However, the presentation engine may update the current image at any point, meaning this mode may result in visible tearing. However, this is only available on Vulkan devices that support the extension VK_KHR_shared_presentable_image. Add checking in Surface::initialize() to update Surface::mRenderBuffer to EGL_BACK_BUFFER if the backend implementation does not support EGL_SINGLE_BUFFER. This includes adding supportsSingleRenderBuffer() to query the backend if it supports single render buffer mode, which defaults to False. The Vulkan backend overrides this and the result is based on support for VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR. Bug: b/412446258 Test: EGLLockSurface3Test.WindowMsaaSurfaceReadTest/ES2_Vulkan_NoFixture Test: EGLSingleBufferTest.VerifyMutableRenderBufferKHR/* Change-Id: I4e6d56f01a895a5bd887580e6ffa34d574c87fad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6506764 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Junji Watanabe f6e1d4d7 2025-05-02T12:02:09 Fix include header case mismatches This CL fixes the include header names to be aligned with the actual file names. It's problematic for cross compile on Linux, where file system is case sensitive. Context: Goma/Reclient's deps scanner was able to handle those case mismatches. But, Siso's builtin remote execution doesn't resolve them automatically. Bug: b/401959048 Change-Id: I98282899e31ea801058f82d4cad770413634f4f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6508684 Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Junji Watanabe <jwata@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Neil Zhang e5680ba6 2025-04-14T17:43:07 Fix mInFlightCommands.empty() assert in CommandQueue destroy When initialize a higher priority shared Context, ANGLE internal call updateContextsPriority to submit previously flushed commands. This submission is not tracked by any Context. Add Renderer::mSubmittedResourceUse to record submitted queue serials not belonging to any Context to fix the assertion. Bug: angleproject:410996556 Change-Id: I7a91e47c0233832b8806637f295dffd1ff54f729 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6458623 Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Neil Zhang <Neil.Zhang@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Peng Huang d698500d 2025-04-08T09:05:42 Fix an ASSERT() crash in ExternalFence SyncWaitFd(). https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html If pGetFdInfo->handleType is VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT and the fence is signaled at the time vkGetFenceFdKHR is called, pFd may return the value -1 instead of a valid file descriptor. So when above scenario happens, ANGLE will get a -1 fd from vkGetFenceFdKHR(), and then Angle will call SyncWaitFd() with the invalid fd, it will cause an ASSERT() crash. Bug:angleproject:409342980 Change-Id: I48d4d21d531e40f8ba275918454632ae14fec04b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6439303 Auto-Submit: Peng Huang <penghuang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuxiang Qian a5d750fb 2025-03-25T14:24:19 Add test to check EGL_KHR_platform_android Add an end2end test to check that eglGetPlatformDisplayEXT can use EGL_PLATFORM_ANDROID_KHR to get display. Also, to follow the spec, ValidateGetPlatformDisplayCommon should set EGL_BAD_PARAMETER for unsupported platform. Bug: angleproject:404581995 Change-Id: I20a962adb2dab4434141417b11c959924aff1597 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6369995 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 5dd05578 2025-04-14T07:34:57 Revert "GL: Allow untranslated shaders to pass through on GLES" This reverts commit 4e77552b86a89b449ada6d6c18f84285f5812b1d. Reason for revert: breaks ChromeOS and fuzzers Bug: angleproject:398857482 Original change's description: > GL: Allow untranslated shaders to pass through on GLES > > Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which > uses the NULL translator and passes the original shader to the driver. > The parser is still used for shader reflection. > > Bug: angleproject:398857482 > Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: angleproject:398857482, angleproject:410423936 Bug: chromium:410114655, chromium:410100607, chromium:410121218 Bug: chromium:410052365, chromium:410290507, chromium:410178288 No-Presubmit: true Change-Id: I45b01960637a1cda05d21a7df6d07465f6a8f5e9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6448984 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 4e77552b 2025-02-24T18:04:32 GL: Allow untranslated shaders to pass through on GLES Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which uses the NULL translator and passes the original shader to the driver. The parser is still used for shader reflection. Bug: angleproject:398857482 Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Igor Nazarov f798b0d2 2025-04-04T08:17:57 Vulkan: Remove enablePreRotateSurfaces feature Removed to simplify the code and to avoid the problem for which `presentSubOptimalReturnedOnTransformChange` feature was added. Platforms without the per-rotation support always have `VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR` as the `currentTransform`, so the code will perform the same as when the feature was disabled. Add `warmUpPreRotatePipelineVariations` to explicitly control per-rotation pipeline warm up. Bug: angleproject:42262166 Change-Id: I44f6c221c11105f01f62f62622987b1955bc58aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6433586 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Amirali Abdolrashidi bbf92d12 2025-03-21T12:43:14 Vulkan: Add workaround flag for extra submit fence This change is a workaround for some devices exhibiting a device-lost error related to the fence usage in the command batches when working with EGL sync objects, such as a cycle similar to below: - <Some GL work> - eglCreateSyncKHR() - glFlush() - eglDupNativeFenceFDANDROID() - eglDestroySyncKHR() - <More GL work> (The exact point of error and the reason for the device-lost remain unknown.) This change is meant to mitigate such errors on those devices if needed. However, for the rest, the feature will remain disabled. * Added a new feature flag: enableExtraSubmitFence * Modified the usage of mFence in CommandBatch * It is also used when enableExtraSubmitFence is enabled, even if there is an external fence. * When there is an external fence, this object is used to create an empty submission after the primary commands are submitted using the external fence. * Added the config to enable EnableExtraSubmitFence for the following suite: EGLSyncTest Bug: b/384477641 Change-Id: I05f8bdcc804967c4984416af802326d22afd7a46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6378778 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 081934f6 2025-03-12T15:22:31 Vulkan: Add avoidInvisibleWindowSwapchainRecreate feature There is a bug on some NVIDIA drivers on Linux X11 when `vkAcquireNextImageKHR()` constantly returns `VK_ERROR_OUT_OF_DATE_KHR` if recreate the swapchain while window is not visible. If not recreate the swapchain after window resize - nothing happens, acquire and present works without errors. But if recreate the swpahchain to the `VkSurfaceCapabilitiesKHR::currentExtent` the next `vkAcquireNextImageKHR()` will return `VK_ERROR_OUT_OF_DATE_KHR`. ANGLE will retry to recreate the swapchain one more time and fail the call. Enabling the "avoidInvisibleWindowSwapchainRecreate" feature will avoid swapchain recreation when window size changes while it is not visible. Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.ResizeInvisibleWindow/* Bug: angleproject:397848903 Bug: angleproject:42264022 Bug: angleproject:42263074 Change-Id: I48588bf467d15c0e84b923092e06a42c22084dcc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6348739 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Igor Nazarov caf14998 2025-02-25T17:28:05 Vulkan: Fix window surface resize and size query Added `mSizeState` enum member. When it is not `Resolved`, surface size is not yet resolved and may change any time in response to native window resize. Otherwise, surface size is resolved and will not change until next swap. Updated `getUserWidth()`/`getUserHeight()` methods. They return current window size when surface size is not resolved, or current surface size, otherwise. Window size is queried either by `getCurrentWindowSize()`, when surface is sized by swapchain, or by querying vulkan surface capabilities. The "perFrameWindowSizeQuery" feature controls when `mSizeState` is updated. Initially it is not resolved. Marked as not resolved in `invalidateSwapchain()`, and in `deferAcquireNextImage()` when the feature is enabled. It is marked as resolved after swapchain is created when feature is disabled, or in `AcquireNextImageUnlocked()` function after acquire next image, otherwise. Enabled some tests that were previously failing. Replaced old resize tests with new versions. Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.Resize*/* Bug: angleproject:397848903 Bug: angleproject:373659619 Bug: angleproject:153329980 Bug: angleproject:42266013 Bug: angleproject:42265843 Bug: angleproject:42265529 Bug: angleproject:42264022 Bug: angleproject:42263074 Bug: angleproject:42261800 Bug: angleproject:40096826 Change-Id: I3ad836960a68229fab6c94624022f1a0aaf2c3e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6300645 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Igor Nazarov e44357c6 2025-03-25T15:50:15 Vulkan: Do not defer ANI in shared present mode Calling ANI in shared present mode is not necessary after the initial acquire. Skip calling `deferAcquireNextImage()` in that mode. For code simplicity and as a preparation for (anglebug.com/400711938), the `invalidateSwapchain()` method is now also defers ANI and notifies `SubjectMessage::SurfaceChanged` to the parent class. `Framebuffer` message handling was updated to also reset color buffer dirty bit and to notify `SubjectMessage::DirtyBitsFlagged` if needed, as in the `SubjectMessage::SwapchainImageChanged` message case (which will be removed in future CL). This way, single `SubjectMessage::SurfaceChanged` message is enough to handle swapchain recreate. The `VK_SUBOPTIMAL_KHR` is no longer treaded as OUT_OF_DATE when in shared present mode. Added for consistency (since we are already skipping "perFrameWindowSizeQuery" checks), to preserve content, and to match the Android native GLES driver behavior. Call `invalidateSwapchain()` when swapchain operations fail to avoid repeated swapchain use and to be able to recover from the error. The `checkForOutOfDateSwapchain()` was split into two methods: - checkForOutOfDateSwapchain(): - Called only after present. - Checks present out of date result and present mode compatibility. - Invalidates the swapchain and updates the present mode if the above checks fails. - prepareSwapchainForAcquireNextImage(): - Calls `queryAndAdjustSurfaceCaps()` and `recreateSwapchain()` if swapchain is invalid. - Calls `queryAndAdjustSurfaceCaps()` and checks surface properties when "perFrameWindowSizeQuery" is enabled. Then calls `recreateSwapchain()` if something changed. Other changes: - The `prepareForAcquireNextSwapchainImage()` method was replaced with `prepareSwapchainForAcquireNextImage()`. - Removed `doDeferredAcquireNextImageWithUsableSwapchain()` and `postProcessUnlockedAcquire()` methods because of redundancy. - Move image invalidation code into `acquireNextSwapchainImage()` to make `doDeferredAcquireNextImage()` simpler. - Convert `resizeSwapchainImages()` into `createSwapchainImages()` for simplicity. Updated old and added new tests. Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.ReadFramebufferBindingSyncState/* Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.OnCreateWindowSurface/* Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.OnSetSurfaceAttrib/* Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WindowResize/* Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WindowRotation/* Bug: angleproject:400711938 Bug: angleproject:397848903 Bug: angleproject:42262606 Change-Id: I2247417aa8b7b5afc10a8420083aeb845895aec9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387920 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Mohan Maiya 1a24f8f8 2025-03-26T17:34:26 Update formatting in EGLPrintEGLinfoTest Replace all occurrences of "\t" with 4 spaces and remove trailing whitespace Bug: angleproject:42262676 Change-Id: I7378669a7d080a9db10ac100d00a3d3aa5292abb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6396628 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov c0483900 2025-03-20T14:38:53 Tests: Add EGLSurfaceTest.MSAAResolveWithEGLConfig8880 test Test is for the fix: Vulkan: Use correct actual FormatID for MSAA swapchain image https://crrev.com/c/angle/angle/+/6275968 SM-G996B (Mali-G78) has these errors in the new test without the fix: VUID-vkCmdResolveImage-srcImage-01386: srcImage and dstImage must have been created with the same image format VUID-VkFramebufferCreateInfo-pAttachments-00880: If flags does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of pAttachments must have been created with a VkFormat value that matches the VkFormat specified by the corresponding VkAttachmentDescription in renderPass It looks like that in the CL with the fix, above device was incorrectly tested and commit message noted that the fix is cosmetic because RGB8 is generally emulated with RGBA8. Turns out, Mali-G78 can render into RGB8. Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.MSAAResolveWithEGLConfig8880/* Bug: angleproject:42265147 Change-Id: I7e90dd7f8c9138a439bc77ed5643214ac4260c73 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6375366 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian 531e8791 2025-03-12T17:29:04 Change error set in ValidateCreateContext According to EGL spec, if specified version number is not a defined version of GLES, EGL_BAD_MATCH error should be generated, but ANGLE generate EGL_BAD_ATTRIBUTE. Fix this and modify the assert in the end2end test. Bug: angleproject:403414983 Change-Id: I09ee779fc3008a420aeeb5c1416a44c9c82d2ec4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355745 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Igor Nazarov 668a7a2e 2025-02-19T14:55:49 Revert "Vulkan: Return cached width and height for eglQuerySurface" This reverts commit db833869131eddb36e695717a823a540e3cdc8ba. Reason for revert: Native GLES driver behavior on Android is different from what was tested by "EGLPreRotationSurfaceTest.CheckSurfaceCapabilities" test. More precisely, behavior is different depending if native Window is resided using `ANativeWindow_setBuffersGeometry()` or resized by the user (screen rotation or resizing of a floating window). In case of `ANativeWindow_setBuffersGeometry()` resize (used by tests), surface will have size of the Window up until image is acquired (dequeued). In other words, size will be fixed after draw and will match current Window size until draw. In case of resizing by the user, surface size will be fixed until the next swap. This is the behavior that was tested by the reverted test. Bug: angleproject:397848903 Bug: angleproject:153329980 Change-Id: I8fc8d194c1591aff714dd255acd25392b4963e0d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6298731 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Igor Nazarov ad6c3d74 2025-02-19T22:45:29 Vulkan: Fix RP resolve layouts w.r.t shared present mode This is partially a regression after the previous change: Vulkan: Fix present optimization w.r.t shared present mode Before the above change, swapchain image was still optimized for present even when using shared present mode. However, because SetBitField(mAttachmentOps[packedAttachmentIndex].finalResolveLayout line was using `getCurrentImageLayout()` (lucky coincidence) it was setting correct SharedPresent layout into `finalResolveLayout`. The `initialLayout` and reference `layout` was still `VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL`, but for some reason VVL was not producing any errors. This change adds setting `finalResolveLayout` for the resolve attachment, which in turn propagates `VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR` to all renderpass layouts as well as to the dynamic rendering info. Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.SharedPresentLayoutWithMSAA/* Bug: angleproject:42262606 Change-Id: I49a121f1d43a078890b0dc32e0574a79e3565270 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6281569 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Igor Nazarov 318d4038 2025-02-18T13:19:28 Vulkan: Fix present optimization w.r.t shared present mode Since the implementation of "EGL_KHR_mutable_render_buffer" mode (angleproject:42262606), the renderpass optimization for present (b/153885625) was not working correctly. It sill tries to transition into `ImageLayout::Present`, but instead of entirely skipping the transition, it inserts the barrier even when renderpass is still opened. When both "supportsSharedPresentableImageExtension" and "preferDynamicRendering" are enabled, code will hit ASSERT in `flushToPrimary()` when attempting to record `ImageLayout::Present` barrier into the primary command buffer. Above issue is fixed by skipping the transitioning into `ImageLayout::Present` when in shared present mode. Other changes and fixes: - removed renderpass flush when resolving with renderpass, since it is not necessary (angleproject:42265256). - above change reveled a bug in `finalizeImageLayout(&mColorImageMS)` call. This call reverts the layout in the previous finalize call from Present to ColorWrite. So it must have been inserted before finalizing the swapchain image. Issue fixed by removing both finalize calls. - updated condition to skip invalidate w.r.t shared present mode (b/229689340), that was missed during implementation of "EGL_ANDROID_front_buffer_auto_refresh" (angleproject:42265697). Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.PresentLayoutTransitionWithMSAA/* Bug: b/153885625 Bug: angleproject:42262606 Bug: angleproject:42265256 Bug: b/229689340 Bug: angleproject:42265697 Change-Id: Ifad8aea8548fa7bfac27941812c435b2af655309 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6277445 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Xin Yuan 5e056364 2025-02-20T11:38:23 Ignore other attributes when use EGL_CONFIG_ID to choose config Per spec, when use EGL_CONFIG_ID in eglChooseConfig, other attributes should be ignored, so additional attributes should not be inserted in this case. Bug: angleproject:396190956 Change-Id: I1170dc5312a9590c972d81f91e3d2140f2145805 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6262970 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi c21e31a1 2025-02-20T17:32:17 Add handling null input to eglGetProcAddress * Modified eglGetProcAddress() so it can handle a null input by returning nullptr. * Added a test for this case: * EGLReadinessCheckTest.GetProcAddressNullInput * Fixed some typos. Bug: angleproject:397720948 Change-Id: If55223b12831649252e2e06e47abaf8d3546c86f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6289249 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Igor Nazarov 323c49a3 2025-02-20T15:44:08 Vulkan: Fix swap optimization after staged clear for MSAA If the MSAA image only had a clear update and the update wasn't going to be applied to the swapchain image, the clear update was accidentally dropped because `flushStagedUpdates` wouldn't see the clear update which is already extracted in `deferredClearValues`. Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.StagedClearResolveOnSwap/* Bug: angleproject:382006939 Change-Id: I53ae26eeb8a7f38b7758f86bf97982a90b1990dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6285627 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian 883f6246 2025-01-22T16:36:26 Add validation for eglSetDamageRegionKHR Although this is not mentioned in spec, n_rects in eglSetDamageRegionKHR should be a valid value. It doesn't make sense if it's less than 0. Refine the validation in ANGLE and also add end2end test. Bug: angleproject:395482390 Change-Id: Idbde839be85bac927486b7613005f25d54c3d5f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6242903 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 0790b50d 2025-02-07T11:15:11 Android: Sleep after orientation change in EGL test In each of the EGLPreRotation* tests that change dislay orientation, we have a sleep that gives the Android device time to react. A new test was added that didn't include the sleeps and is causing flaky asserts based on how it got sharded for testing. This CL adds the sleeps, mirroring other tests. Test: EGLPreRotationSurfaceTest.CheckSurfaceCapabilities Bug: angleproject:395110957 Change-Id: If2a959d69ba4f4b4ed0f6a6fbffb94762174966d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6244919 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian 308cfc62 2025-01-13T14:54:18 Do not reset buffer age after query The spec doesn't mention that we need to reset the buffer age if no rendering after last call of eglQuerySurface to query EGL_BUFFER_AGE_KHR. Age was also reset after first time of query. Remove it to align with spec. New end2end test is also added. Bug: angleproject:391039188 Change-Id: I00c96e3a71ea2c9abcb86ebaf520243408dedd52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6185135 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Igor Nazarov 062f1fc1 2024-12-17T22:22:04 Vulkan: Use waitFenceUnlocked to finish one command Batch Using `CommandBatch::waitFence()` in finish one command Batch is no longer necessary, since `mQueueSubmitMutex` remains locked, preventing adding new commands when `kInFlightCommandsLimit` is exceeded. The `Locked` suffix is removed from `finishOneCommandBatchLocked()` since it is now accepts the `lock` (similarly to `waitFenceUnlocked()`) and may temporarily unlock it. Test: angle_end2end_tests --gtest_filter=EGLSyncTest.BlockingOnSubmitCPUThrottling/* Bug: b/362604439 Change-Id: I8f39d7b2e6f1b9ce8ed4aa8875375769211572e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6098256 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxiang Qian 4c60a308 2024-12-30T15:35:07 Change default return value for eglDupNativeFenceFDANDROID According to EGL spec, eglDupNativeFenceFDANDROID should return EGL_NO_NATIVE_FENCE_FD_ANDROID when there is error. However, ANGLE just returns 0 as default value. Now overload the default return value to EGL_NO_NATIVE_FENCE_FD_ANDROID. Also, a end2end test is added. Bug: angleproject:385190296 Change-Id: I214efdeb3ad583989fab5e2244c82cb7295f8b67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6146195 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Mohan Maiya db833869 2025-01-08T06:14:22 Vulkan: Return cached width and height for eglQuerySurface eglQuerySurface will return extents as of the most recent eglSwapBuffers call Bug: angleproject:153329980 Test: EGLPreRotationSurfaceTest.CheckSurfaceCapabilities* Change-Id: Ifc9e84ed92bdc645afd12814a3a5539cc8b55da3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6158264 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Yuly Novikov 3b092269 2025-01-09T08:54:00 Revert "vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid" This reverts commit 96abb2c3d9e296ae12e50e0026bf5d3a7b925e7e. Reason for revert: breaks rolling into Chromium https://chromium-review.googlesource.com/c/chromium/src/+/6158098 Original change's description: > vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid > > Implement the ability to select a specific device and driver combination > through a few new selection criteria: > > VkPhysicalDeviceIDProperties::deviceUUID > VkPhysicalDeviceIDProperties::driverUUID > VkPhysicalDeviceDriverProperties::driverID > > Bug: angleproject:351866412 > Change-Id: Ia6716aaed658d2563612d8b5d81287df97b57462 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686557 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Auto-Submit: Steven Noonan <steven@uplinklabs.net> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:351866412 Change-Id: Ic7cf9dcf6a950556cc44f5920498db429c866340 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6164164 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Steven Noonan 96abb2c3 2024-12-13T14:06:55 vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid Implement the ability to select a specific device and driver combination through a few new selection criteria: VkPhysicalDeviceIDProperties::deviceUUID VkPhysicalDeviceIDProperties::driverUUID VkPhysicalDeviceDriverProperties::driverID Bug: angleproject:351866412 Change-Id: Ia6716aaed658d2563612d8b5d81287df97b57462 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686557 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya bc795943 2025-01-06T12:41:05 Proper clean up for EGLLockSurface3Test Make sure to destroy context and window in each test Bug: angleproject:42264593 Change-Id: Ia5768ad109340a0be2bd2912877b7236e201ce0a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6150289 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 59162e2e 2024-12-30T12:22:10 Vulkan: Update a few features and extensions for Samsung Enable disableProgramCaching Disable rgbxInternalFormatANGLE clipDistanceAPPLE cacheCompiledShader preferMonolithicPipelinesOverLibraries Bug: angleproject:386749841 Change-Id: Iea8033e2999c65b8715c6069d2096a709f78f438 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6133540 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 2c025cb9 2025-01-06T08:36:23 Revert "Proper clean up for EGLLockSurface3Test" This reverts commit 9d9e3efce077dbfe261b13fdfb3b20fc1e4a5e4c. Reason for revert: Suspected cause of flakiness anglebug.com/387828389 Original change's description: > Proper clean up for EGLLockSurface3Test > > Perform unmakecurrent during test teardown > > Bug: angleproject:42264593 > Change-Id: I1148b5c6631e81090f7ae931495bba1b43c24502 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6133539 > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: mohan maiya <m.maiya@samsung.com> Bug: angleproject:42264593 Bug: angleproject:387828389 Change-Id: Ia8b484e391931e9401bd644c919c34ef65718b37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6147815 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mohan Maiya 9d9e3efc 2024-12-30T12:10:57 Proper clean up for EGLLockSurface3Test Perform unmakecurrent during test teardown Bug: angleproject:42264593 Change-Id: I1148b5c6631e81090f7ae931495bba1b43c24502 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6133539 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya 7c766c0e 2024-12-23T15:12:44 Vulkan: Bugfix in OverrideFeaturesDependent test On some vendors there is a second order effect of disabling some features, account for such vendors. Bug: angleproject:42266725 Change-Id: I53e93d595ee09210ef7781d667470e2b46c10e55 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6118433 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxiang Qian db8e5617 2024-10-23T15:21:33 Reland "Add check for some EGL API attrbute values" This is a reland of commit 9481eb625b358897583f8adeca5fc520f8c215ae Original change's description: > Add check for some EGL API attrbute values > > EGL validation in ANGLE lacks of some error handlings mentioned > in EGL spec. Those error handlings are added, and we need to > make sure angle end2end tests are not influenced. > > Bug: angleproject:375528200 > Change-Id: Ic0686d9ccc70e18b0cf3449184452771c77c06b7 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034532 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:375528200 Change-Id: I6db890a95825156848d7da8ebc15f7e30b0902ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6088519 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuxiang Qian a1be7e61 2024-11-26T14:39:18 Implement EGL_EXT_surface_compression This patch adds implementation of EGL_EXT_surface_compression to ANGLE, including new API eglQuerySupportedCompressionRatesEXT and adding EGL_SURFACE_COMPRESSION_EXT in EGLQuerySurface and EGLCreateWindowSurface/EGLCreatePlatformWindowSurface. Angle end2end test is added to verify the extension. Bug: angleproject:375496226 Change-Id: I06926930d94485a378fc831d552cf55fe7938a57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6073355 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 2c404434 2024-12-13T09:05:48 Revert "Add check for some EGL API attrbute values" This reverts commit 9481eb625b358897583f8adeca5fc520f8c215ae. Reason for revert: Causes failures when rolling into chromium: https://chromium-review.googlesource.com/c/chromium/src/+/6089841 Original change's description: > Add check for some EGL API attrbute values > > EGL validation in ANGLE lacks of some error handlings mentioned > in EGL spec. Those error handlings are added, and we need to > make sure angle end2end tests are not influenced. > > Bug: angleproject:375528200 > Change-Id: Ic0686d9ccc70e18b0cf3449184452771c77c06b7 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034532 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:375528200 Change-Id: I8e59113e4d94571b0ec1d8135519e829d3571a15 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6094284 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi c75bd915 2024-12-10T23:01:44 Vulkan: Remove asyncCommandQueue It's been years and it never showed an advantage. In the meantime, performance without this feature seems close to native drivers (i.e. the feature has lost its appeal) and it's frequently a source of complication and bugs. Bug: angleproject:42262955 Bug: angleproject:42265241 Bug: angleproject:42265934 Bug: angleproject:42265368 Bug: angleproject:42265738 Bug: angleproject:42266015 Bug: angleproject:377503738 Bug: angleproject:42265678 Bug: angleproject:173004081 Change-Id: Id8d7588fdbc397c28c1dd18aafa1f64cbe77806f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6084760 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian 9481eb62 2024-10-23T15:21:33 Add check for some EGL API attrbute values EGL validation in ANGLE lacks of some error handlings mentioned in EGL spec. Those error handlings are added, and we need to make sure angle end2end tests are not influenced. Bug: angleproject:375528200 Change-Id: Ic0686d9ccc70e18b0cf3449184452771c77c06b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034532 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen 6bb1bc9b 2024-12-10T16:56:33 Add an extension to report total memory usage of all GL objects Currently the extension will only count GL buffers, textures and render buffers' memory. Fixed: angleproject:383256300 Change-Id: I33ce6fafae8aa5b60071e66366d35dc098e1313b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6084013 Auto-Submit: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Yuxiang Qian a137d702 2024-10-24T18:24:14 Reland "Delay EGLQueryContext render buffer change" This is a reland of commit 233d9ee5c3525cc8290b3af52385ed59973438b4 Original change's description: > Delay EGLQueryContext render buffer change > > According to the EGL spec, EGL_RENDER_BUFFER of a context > should change after eglSwapBuffers is called if > eglSurfaceAttrib changes. Refine ANGLE implemnetation > to delay the render buffer change. > > Bug: angleproject:375528202 > Change-Id: Ida7736a09e3a83223a529dbfad48e0f952f91a38 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982241 > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:375528202 Change-Id: I38330d99a9e6987ad3f97b4a36c34029acb211b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055500 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 65d674b0 2024-12-02T18:36:11 Vulkan: Must run UnlockedTailCall from flush and finish `glFlush` and `glFinish` may call `WindowSurfaceVk::swapImpl()` implicitly when the current Window Surface is in the single buffer mode. The `WindowSurfaceVk::swapImpl()` in turn may add unlocked tail call in order to perform CPU throttling. It seems, that CPU throttling is only possible if also enable the `EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID` attribute (using `VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR`). Without this attribute (`VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR`) `vkQueuePresentKHR()` performs implicit waiting for GPU, making ANGLE's throttling uncessary (the serial is already finished). This fix allows running the tail call from `glFlush` and `glFinish` (because these APIs are not performance critical). Alternative solution may instead perform the CPU throttling immediately if the `WindowSurfaceVk::swapImpl()` is called from the `WindowSurfaceVk::onSharedPresentContextFlush()`. Additionally, added "ASSERT(!any())" at the beginning of each entry point. This is to catch scenarios, if some API adds the unlocked tail call and for some reason exit without checking the assert of running the call. Test: angle_end2end_tests --gtest_filter=EGLAndroidAutoRefreshTest.SwapCPUThrottling/ES3_Vulkan_NoFixture Bug: angleproject:42266581 Change-Id: I418c552f6e95b4cfc01db738c9989533377f1050 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6063719 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Yuly Novikov 9c7ad319 2024-11-27T13:43:10 Revert "Delay EGLQueryContext render buffer change" This reverts commit 233d9ee5c3525cc8290b3af52385ed59973438b4. Reason for revert: ASSERT triggered on Linux NVIDIA 535.183.01 https://ci.chromium.org/ui/p/angle/builders/ci/linux-exp-test/1469/overview Original change's description: > Delay EGLQueryContext render buffer change > > According to the EGL spec, EGL_RENDER_BUFFER of a context > should change after eglSwapBuffers is called if > eglSurfaceAttrib changes. Refine ANGLE implemnetation > to delay the render buffer change. > > Bug: angleproject:375528202 > Change-Id: Ida7736a09e3a83223a529dbfad48e0f952f91a38 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982241 > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:375528202 Change-Id: I08fc76b1b764e57639e2c0708cb155d392f82f22 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055417 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Yuxiang Qian 233d9ee5 2024-10-24T18:24:14 Delay EGLQueryContext render buffer change According to the EGL spec, EGL_RENDER_BUFFER of a context should change after eglSwapBuffers is called if eglSurfaceAttrib changes. Refine ANGLE implemnetation to delay the render buffer change. Bug: angleproject:375528202 Change-Id: Ida7736a09e3a83223a529dbfad48e0f952f91a38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982241 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 2f7feccd 2024-11-21T17:21:45 Tests: Fix EGLSurfaceTest.SwapWithoutAnyDraw test Bug: b/275624771 Change-Id: I17516dcc44b58b8dfa659ab099327b25ac88a167 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038163 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov c4ec8dbb 2024-11-19T17:01:42 Vulkan: Expose EGL_ANDROID_front_buffer_auto_refresh Original CL implemented the functionality without exposing the corresponding extension. This CL exposes the extension on Android and adds necessary validation. Bug: angleproject:42265697 Change-Id: Ia01c68f04c41a850e531aa7b889de9e561f3a9db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035186 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 42f9c200 2024-11-19T08:50:35 Comments: www.anglebug.com -> anglebug.com The former doesn't work. Bug: None Change-Id: Ib16b005adb5b61a3a1277588e240c3d68705205c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034293 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Kimmo Kinnunen a402f9cb 2024-11-11T15:08:41 Metal: Do not use number digit separator in .mm The review system turns ' to strings for Obj-C syntax highlighting. Bug: angleproject:378421872 Change-Id: I201f6561def7c4b945f37e3e02ec0b8915954e8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011209 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Neil Zhang 236e0f48 2024-10-22T18:33:23 Add fix for create multi-window surfaces cause crash This patch fix crash when created multiple window surfaces, and not call corresponding eglDestroySurface, also added related test. Bug: angleproject:374797737 Change-Id: I58941660130e84e213cf9d78806027d56d6efc8c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5981430 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi a0586d6e 2024-10-26T00:32:27 Remove feature description / condition strings These strings show up in chrome://gpu so they can marginally be useful, but are otherwise dead weight for most uses of ANGLE / users of ANGLE. While slightly less convenient, the feature name can always be linked back to the source code if needed so the presence of such metadata is not necessary either. This shaves 40KB from the binary size of ANGLE when built with Vulkan only on Android. Bug: chromium:371512561 Change-Id: I3959961bb7de95cc60a85130d0ff38a7fd533fb7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5968453 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen 182aa407 2024-08-14T19:52:30 Reland "Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format." This is a reland of commit f102d75a39ec8980a617c179034c24f337b12d1c Nothing changed, it's just that the root cause was already fixed in https://chromium-review.googlesource.com/c/angle/angle/+/5937060. Original change's description: > Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format. > > Currently when IOSurface is bound to a pbuffer with GL_RGB internal > format, we asign angle format=B8G8R8A8_UNORM/R8G8B8A8_UNORM to it. > And then disable alpha write to the respective MTLTexture. > > However, when an implicit MSAA texture is created for the above > pbuffer, it will be assigned B8G8R8A8_UNORM/R8G8B8A8_UNORM angle format > but has no knowledge about alpha write disable. Consequently, when a > render pass uses this implicit MSAA texture, its alpha channel won't be > cleared properly and would contain garbage values. > > In order to avoid the above bug, we should use > B8G8R8X8_UNORM/R8G8B8X8_UNORM angle format for the IOSurface pbuffer. > > This will fix the render corruptions found in chromium:358957665. > > Bug: angleproject:42261786 > Bug: chromium:358957665 > Change-Id: I8aa1e24ace2de80dd08e21711445515ba4b339ff > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5788801 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Bug: angleproject:42261786 Bug: chromium:358957665 Change-Id: I1e090886ed493eafce35d2ba98010c3be7bc16c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5937061 Reviewed-by: Kenneth Russell <kbr@chromium.org> Auto-Submit: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 5b96316b 2024-10-17T14:00:41 Revert "Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format." This reverts commit f102d75a39ec8980a617c179034c24f337b12d1c. Reason for revert: Suspecting this caused an GPU memory regression on Mac. Bug: chromium:374072906 Original change's description: > Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format. > > Currently when IOSurface is bound to a pbuffer with GL_RGB internal > format, we asign angle format=B8G8R8A8_UNORM/R8G8B8A8_UNORM to it. > And then disable alpha write to the respective MTLTexture. > > However, when an implicit MSAA texture is created for the above > pbuffer, it will be assigned B8G8R8A8_UNORM/R8G8B8A8_UNORM angle format > but has no knowledge about alpha write disable. Consequently, when a > render pass uses this implicit MSAA texture, its alpha channel won't be > cleared properly and would contain garbage values. > > In order to avoid the above bug, we should use > B8G8R8X8_UNORM/R8G8B8X8_UNORM angle format for the IOSurface pbuffer. > > This will fix the render corruptions found in chromium:358957665. > > Bug: angleproject:42261786 > Bug: chromium:358957665 > Change-Id: I8aa1e24ace2de80dd08e21711445515ba4b339ff > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5788801 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Bug: angleproject:42261786 Bug: chromium:358957665 Change-Id: I29238588f78f2d01c77a317b2a22670a8036d2e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5939455 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 9e8b104e 2024-10-14T00:00:00 Do not test OpenGL backend on iOS Added Metal platform to tests that require instantiation. Bug: angleproject:40050022 Bug: angleproject:42264029 Bug: angleproject:42266119 Bug: angleproject:42266226 Bug: angleproject:42266239 Bug: angleproject:42266249 Bug: angleproject:359136169 Fixed: angleproject:373478551 Change-Id: I915f09c7f24acce27bf0d489932645338ac3fbe8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5932659 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi b16d105f 2024-10-03T10:25:32 Remove Desktop GL front-end support For Desktop GL applications, please use Zink! Bug: angleproject:370937467 Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 49a8d05c 2024-09-05T17:41:07 Tests: Add end2end test .so library to AOSP build m[mm] external/angle:libangle_end2end_tests__library produces libangle_end2end_tests__library.so I tested that integration with Chromium wrappers works with some manual patches; no integration is included in this CL. googlest/gtest dependencies replaced with platform libgtest, libgmock TestSuite heavily depends on rapidjson so it is currently excluded, only the standard gtest implementation is included (--gtest_list_tests, --gtest_filter, --gtest_output etc) This also disables support for expectation files as it is piped through TestSuite instance. Bug: b/279980674 Change-Id: I35cb2328d74a3ac778e1d93bb4fe4ac044920b6a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5838526 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Igor Nazarov 177d15b3 2024-08-23T19:34:34 Vulkan: Simplify WindowSurfaceVk::prepareSwap() method In case of swapchain recreate inside `prepareSwap()`, perform unlocked ANI call as usual. ANI processing will be done late in `swap()` or `getBufferAge()`. This is possible, because surface `getWidth/Height()` is no longer require valid `mColorRenderTarget`. Because of the above, `swapchainRecreatedOut` parameter was removed. Additionally, `getBufferAge()` now uses `doDeferredAcquireNextImageWithUsableSwapchain()` in order to process possible VK_ERROR_OUT_OF_DATE_KHR error and recreate the swapchain, instead of failing. Test: angle_end2end_tests --gtest-filter=EGLSingleBufferTest.AcquireImageFromSwapImpl* Bug: angleproject:6851 Bug: angleproject:8133 Change-Id: Ieb375781da2b1108d0a5e11dbb012885a946688e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806335 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Le Hoang Quyen f102d75a 2024-08-14T19:52:30 Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format. Currently when IOSurface is bound to a pbuffer with GL_RGB internal format, we asign angle format=B8G8R8A8_UNORM/R8G8B8A8_UNORM to it. And then disable alpha write to the respective MTLTexture. However, when an implicit MSAA texture is created for the above pbuffer, it will be assigned B8G8R8A8_UNORM/R8G8B8A8_UNORM angle format but has no knowledge about alpha write disable. Consequently, when a render pass uses this implicit MSAA texture, its alpha channel won't be cleared properly and would contain garbage values. In order to avoid the above bug, we should use B8G8R8X8_UNORM/R8G8B8X8_UNORM angle format for the IOSurface pbuffer. This will fix the render corruptions found in chromium:358957665. Bug: angleproject:42261786 Bug: chromium:358957665 Change-Id: I8aa1e24ace2de80dd08e21711445515ba4b339ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5788801 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Igor Nazarov 86b22745 2024-07-17T19:05:51 Vulkan: Fix mPipelineCache is not initialized after terminate Very old regression: https://chromium-review.googlesource.com/c/angle/angle/+/1683807 Problem happens only if call `eglInitialize()` again on terminated display without also calling `eglGetDisplay()`. Note: calling `eglGetDisplay()` on terminated display will call `setupDisplayPlatform()`, which will destroy old `mImplementation`. Test: angle_end2end_tests --gtest_filter=EGLDisplayTest.InitializeDrawSwapTerminateLoop* Bug: angleproject:3318 Change-Id: I94bc7eba97be2d9b194c1a22a37662a2836f60b4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5717753 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov eda67d7e 2024-07-11T11:16:08 Avoid including fstream from angleutils.h SaveFileHelper is mostly useful for / specific to FrameCapture, so move it there. The other couple of uses just write a string. Bug: angleproject:42266508 Change-Id: Ia1dcd4531f9d5671f40611a1887dcfe7c5dbc1ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5696025 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Igor Nazarov 6052d0f4 2024-07-03T15:17:23 Vulkan: Fix EGL_EXT_buffer_age with single buffered surface The specification: 4) What is the buffer age of a single buffered surface? RESOLVED: 0. This falls out implicitly from the buffer age calculations, which dictate that a buffer's age starts at 0, and is only incremented by frame boundaries. Since frame boundary functions do not affect single buffered surfaces, their age will always be 0. Test: angle_end2end_tests --gtest_filter=EGLBufferAgeTest.SingleBuffer* Bug: angleproject:3529 Change-Id: Iab5da26d1bce56d928398cc250d900465fc5d261 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5675986 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 04632734 2024-06-20T17:23:27 Add EGL query option for minor version * Added the following: * EGL_CONTEXT_MINOR_VERSION * Added since EGL 1.5 * EGL_CONTEXT_MAJOR_VERSION * Another alias for EGL_CONTEXT_CLIENT_VERSION. * Added unit tests to query major and minor versions. Bug: angleproject:349179609 Change-Id: I99989c0f9f6659995caf9d7987551b97d477f22f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5648675 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi d193d51b 2024-06-17T22:46:08 Replace issue ids post migration to new issue tracker This change replaces anglebug.com/NNNN links. Bug: None Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 6aad8a89 2024-05-31T14:46:28 Vulkan: Remove combineAllShadersInPipelineLibrary If we have VK_NULL_HANDLE as the descriptor set layout handle for both pre-rasterization and fragment shader subset pipelines we run into VVL - VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681 Need to work around this by having the renderer store a placeholder descriptor set layout handle for an empty DescriptorSetLayoutDesc that can be reused across all contexts Bug: angleproject:8677 Tests: EGLMultiContextTest.NonSharedContextsReuseDescritorSetLayoutHandle* Change-Id: I22e7f39c497d7f668afe7cb26690f6a9de49831b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5587990 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang ccd9a43b 2024-05-22T11:15:39 Split EGL_ANGLE_device_d3d into D3D9 and D3D11 versions. Add EGL_ANGLE_device_d3d9 and EGL_ANGLE_device_d3d11 which make it possible to know what type of device can be queried ahead of time without generating EGL errors. Refactor the DeviceD3D class into Device9 and Device11. Remove the getType method now that it's not needed for internal validation. Keep EGL_ANGLE_device_d3d for backwards compatibility. Bug: angleproject:342096132 Change-Id: Ib950abad58e46a5be269891ea7afd0cb8534cbe8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5559163 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang d0bdec30 2024-05-13T18:11:17 EGL: Handle null resultOut for sync tail call destruction Syncs can be destroyed during eglDestroySync or as part of display destruction. During display distruction there is no result so swallow any errors. Bug: angleproject:8434 Change-Id: I172d268c91fd0d6ba534eceff8914f9c719bdf39 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5533777 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen 0044f4d1 2024-05-13T00:29:30 Metal: fix IOSurface's render targets invalidated by max level change. This CL fixes a bug in the following tricky situation: - Client binds an IOSurface to a texture. - Previously this would internally intialize the texture's max level to the default value 1000. - Client changes the texture's max level to 0. - Client attachs the texture to FBO 1. - Client binds FBO 1 and clear it. - This triggers TextureMtl::getAttachmentRenderTarget() that initializes the RenderTargetMtl of the texture. - Client binds FBO 0 and sample the texture. - Previously this could trigger TextureMtl::onBaseMaxLevelsChanged() which would invalidate the texture's RenderTargetMtl. - Client binds FBO 1. - Client blits FBO 0 to FBO 1. - This will set DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 in FBO 1. - Client calls glFlush to restart render command encoder. - Client issues a draw call. - DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 would cause FrameBufferMtl to re-initialize RenderPassDesc from invalid RenderTargetMtl. - A new render encoder would be created from the invalid RenderPassDesc. - the draw call would be encoded to a render command encoder without any valid color attachment. The fix in this CL is that when we bind an IOSurface to a texture, the texture's max level will be automatically set to 0. This will avoid its RenderTargetMtl from being invalidated if users explicitly change the max level to 0 in future. Note: this is not a foolproof fix for every scenario concerning the base/max level in IOSurface bound/or immutable textures. We will fix them in future CLs. Bug: b/335353385 Change-Id: I3a2da6991764f22393178f40c1d7bbe60503cba4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5531388 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Geoff Lang a70ef7fc 2024-04-25T14:19:50 Add EGL_ANGLE_no_error for disabling EGL validation. Chrome makes many small EGL calls that can have proportionally expensive validation. Bug: angleproject:8434 Change-Id: I4f4d0e6eff64839f76a0f7bf48e5c94b8df9d809 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5491459 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 6a6192c8 2024-05-08T08:42:24 Tests: Add native to EGLPrintEGLinfoTest For comparisons, it is useful to run the EGLPrintEGLinfoTest against native drivers. Test: angle_end2end_tests --gtest_filter=EGLPrintEGLinfoTest.*/ES3_2_EGL Bug: b/337554150 Change-Id: If7c94296fbbd9f3057449d54581f334a37e59216 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5525656 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi e41286e1 2024-04-10T11:05:09 Vulkan: Fix internal caching missing Since the backend wait for post-link tasks was made possible [1], the front-end may never get a chance to internally cache its binary. This is because the decision to cache the binary was based on the existence of post-link tasks, and the backend clearing that list made the front-end confused. In this change, a specific bool tracks whether binary is cached, and that is checked at various times to make sure the binary cache is eventually done. [1]:https://chromium-review.googlesource.com/c/angle/angle/+/5427001 Bug: angleproject:8297 Change-Id: Iceefd0bca79d570d4910983be3660d6e725684a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5445484 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d9943e44 2024-04-09T23:53:48 Remove Program::syncState The last bit of responsibility still left in Program::syncState was to wait for post-link tasks for the sake of EGLBlobCacheTest tests. A new extension, GL_ANGLE_program_binary_readiness_query is created so that the wait can be done in the test itself. This extension is ultimately useful for applications as well, so they can avoid blocking the CPU by calling glGetProgramBinary prematurely. Bug: angleproject:8297 Change-Id: Ied6b755cb9b060198f82c7948bfd03441435a578 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440302 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Roman Lavrov e73c0c6d 2024-04-09T11:20:18 EGLProtectedContentTest: move sleep behind compile-time var Multiple tests with multiple steps wasting ~20s in automated runs Bug: b/333113001 Change-Id: I494f6e3ea373945ad79edbc23eb267dfef71ef87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440412 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 13829f20 2024-03-26T23:03:12 Vulkan: Optimize depth/stencil resolve with glBlitFramebuffer Like color resolve, depth/stencil resolve is now also possibly done by modifying the render pass and attaching a depth/stencil resolve attachment. Bug: angleproject:7551 Change-Id: I045e3875e24006d2473a55b6c3856dd768fe8b84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5398004 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4a5d47df 2024-04-04T16:41:46 Test that binary is not saved after being loaded Bug: angleproject:8297 Change-Id: I2e7e2ffb8fff37aba828d25825fe7ab3262406ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426396 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya e85bc345 2024-03-29T13:43:46 Account for disableProgramCaching Blob cache tests rely on implicit caching of programs. Account for disableProgramCaching frontend feature when saving and retrieving from cache. Also skip EGLBlobCache tests if the feature is enabled. Bug: angleproject:8297 Change-Id: Ib101eb5712deb7c04dd19c7092f93a6c6b42cd40 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5408103 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 318e5e02 2024-03-24T08:17:56 Vulkan: Update EGL_EXT_buffer_age implementation 1. Buffer age is always 1 when swap behavior is EGL_BUFFER_PRESERVED. 2. WindowSurfaceVk::getBufferAge no longer acquires a swapchain image. See commit: b46cf6989f6fe8db5f0759001f633681a96fadde 3. It is valid to pass attributes of eglQuerySurface API to eglQuerySurface64KHR API 4. Add deadlock fix to eglQuerySurface64KHR Bug: angleproject:3529 Bug: angleproject:6851 Tests: EGLLockSurface3Test.QuerySurfaceAndQuerySurface64Parity* Tests: EGLBufferAgeTest.QueryBufferAge* Change-Id: Idf3c4fc08364f671fb02e99111be2beb7a1d9f3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5389461 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ad013650 2024-03-22T03:42:44 Revert "Rename LinkSubTask -> PostLinkTask" This reverts commit 00eb6edba074a22389b09990ab856adfd417dd64. Reason for revert: Sub tasks are not actually post-link tasks for all the other backends (other than Vulkan), but they are a real part of the link job. Original change's description: > Rename LinkSubTask -> PostLinkTask > > This is a renaming change, no behavior changes are expected. > > Bug: angleproject:8297 > Change-Id: I734c7959f5ed6db2447853cc6f6256e3c8e86213 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5382224 > Commit-Queue: mohan maiya <m.maiya@samsung.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:8297 Change-Id: Iaebf9d165d810344bfc524042206ca427d270034 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386432 Reviewed-by: Shahbaz Youssefi <syoussefi@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>
Mohan Maiya 8899e18d 2024-03-21T14:30:50 Add skip conditions for a few tests 1. Skip EGLBlobCacheTest if `CacheCompiledShader` feature is disabled 2. Skip RGBAHBUploadDataColorspace test if allocating RGB8 AHB with requested usage flag is not supported Bug: angleproject:7036 Bug: b/298037344 Change-Id: I07c48df327a879c1d46873f47bb5bd305e07a758 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386030 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 00eb6edb 2024-03-20T06:49:38 Rename LinkSubTask -> PostLinkTask This is a renaming change, no behavior changes are expected. Bug: angleproject:8297 Change-Id: I734c7959f5ed6db2447853cc6f6256e3c8e86213 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5382224 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 7220307b 2024-03-13T16:13:45 Conditionally support EGL_OPENGL_API Advertize support for EGL_OPENGL_API only if angle_enable_gl_desktop_frontend is enabled. Bug: b/322142833 Tests: EGLQueryContextTest.DesktopGlApi* Change-Id: I680ea985e45e793d92fc087d21f38fd5d38f0241 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5369641 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya 1c2d2417 2024-03-01T14:50:43 Bugfix in CreateWithEGLConfig1010102Support test Create a context with config that supports RGBA1010102 format Bug: angleproject:8330 Tests: EGLSurfaceTest.CreateWithEGLConfig1010102Support* Change-Id: Ic8dfca01b253e6ae5ea1f0b99b6ac781288805c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5337608 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 8346addb 2024-02-06T15:40:31 Contain X11 includes and free usage of common terms This change undoes workarounds where some terms were avoided so there is no clash with X11 (such as Success, Bool and None). In particular, this helps us make sure we never include the X11 headers in such an unconstrained manner as to clash with our code. Bug: angleproject:8520 Change-Id: I53d9657c5a33164064d2c80a206b96fd52f607f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5273491 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org>