// // Copyright 2019 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // EGLSyncTest.cpp: // Tests of EGL_KHR_fence_sync and EGL_KHR_wait_sync extensions. #include <gtest/gtest.h> #include "test_utils/ANGLETest.h" #include "test_utils/angle_test_configs.h" #include "test_utils/gl_raii.h" #include "util/EGLWindow.h" usingnamespaceangle; class EGLSyncTest : public ANGLETest<> { … }; // Test error cases for all EGL_KHR_fence_sync functions TEST_P(EGLSyncTest, FenceSyncErrors) { … } // Test error cases for all EGL_KHR_wait_sync functions TEST_P(EGLSyncTest, WaitSyncErrors) { … } // Test usage of eglGetSyncAttribKHR TEST_P(EGLSyncTest, GetSyncAttrib) { … } // Test that basic usage works and doesn't generate errors or crash TEST_P(EGLSyncTest, BasicOperations) { … } // Test that eglClientWaitSync* APIs work. TEST_P(EGLSyncTest, EglClientWaitSync) { … } // Test eglWaitClient api TEST_P(EGLSyncTest, WaitClient) { … } // Test eglWaitGL api TEST_P(EGLSyncTest, WaitGL) { … } // Test eglWaitNative api TEST_P(EGLSyncTest, WaitNative) { … } // Verify eglDupNativeFence for EGL_ANDROID_native_fence_sync TEST_P(EGLSyncTest, AndroidNativeFence_DupNativeFenceFD) { … } // Verify CreateSync and ClientWait for EGL_ANDROID_native_fence_sync TEST_P(EGLSyncTest, AndroidNativeFence_ClientWait) { … } // Verify WaitSync with EGL_ANDROID_native_fence_sync // Simulate passing FDs across processes by passing across Contexts. TEST_P(EGLSyncTest, AndroidNativeFence_WaitSync) { … } // Verify EGL_ANDROID_native_fence_sync // Simulate passing FDs across processes by passing across Contexts. TEST_P(EGLSyncTest, AndroidNativeFence_withFences) { … } // Verify that VkSemaphore is not destroyed before used for waiting TEST_P(EGLSyncTest, AndroidNativeFence_VkSemaphoreDestroyBug) { … } // Verify that no VVL errors are generated when External Fence Handle is used to track submissions TEST_P(EGLSyncTest, AndroidNativeFence_ExternalFenceWaitVVLBug) { … } // Test functionality of EGL_ANGLE_global_fence_sync. TEST_P(EGLSyncTest, GlobalFenceSync) { … } // Test that leaked fences are cleaned up in a safe way. Regression test for sync objects using tail // calls for destruction. TEST_P(EGLSyncTest, DISABLED_LeakSyncToDisplayDestruction) { … } ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(…);