// // 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. // // EGLRecordableTest.cpp: // Tests of EGL_ANDROID_recordable extension #include #include "test_utils/ANGLETest.h" #include "test_utils/angle_test_configs.h" #include "util/EGLWindow.h" using namespace angle; namespace angle { class EGLRecordableTest : public ANGLETest { protected: EGLRecordableTest() {} }; // Test that the extension is always available (it is implemented in ANGLE's frontend). TEST_P(EGLRecordableTest, ExtensionAlwaysAvailable) { EGLDisplay display = getEGLWindow()->getDisplay(); ASSERT_TRUE(IsEGLDisplayExtensionEnabled(display, "EGL_ANDROID_recordable")); } // Check that the default message filters and callbacks are correct TEST_P(EGLRecordableTest, CheckAllContexts) { EGLDisplay display = getEGLWindow()->getDisplay(); ANGLE_SKIP_TEST_IF(!IsEGLDisplayExtensionEnabled(display, "EGL_ANDROID_recordable")); int nConfigs = 0; ASSERT_EGL_TRUE(eglGetConfigs(display, nullptr, 0, &nConfigs)); ASSERT_NE(nConfigs, 0); int nReturnedConfigs = 0; std::vector configs(nConfigs); ASSERT_EGL_TRUE(eglGetConfigs(display, configs.data(), nConfigs, &nReturnedConfigs)); ASSERT_EQ(nConfigs, nReturnedConfigs); for (EGLConfig config : configs) { EGLint isRecordable; eglGetConfigAttrib(display, config, EGL_RECORDABLE_ANDROID, &isRecordable); ASSERT_EGL_FALSE(isRecordable); } const EGLint configAttributes[] = { EGL_RED_SIZE, EGL_DONT_CARE, EGL_GREEN_SIZE, EGL_DONT_CARE, EGL_BLUE_SIZE, EGL_DONT_CARE, EGL_ALPHA_SIZE, EGL_DONT_CARE, EGL_DEPTH_SIZE, EGL_DONT_CARE, EGL_STENCIL_SIZE, EGL_DONT_CARE, EGL_RECORDABLE_ANDROID, EGL_FALSE, EGL_NONE}; EGLint configCount; ASSERT_EGL_TRUE( eglChooseConfig(display, configAttributes, configs.data(), configs.size(), &configCount)); ASSERT_EGL_SUCCESS(); } } // namespace angle ANGLE_INSTANTIATE_TEST_ES2(EGLRecordableTest);