// // 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. // // EGLDeviceCGLTest.cpp: tests for the EGL_ANGLE_device_cgl extension. // #include "test_utils/ANGLETest.h" #include "util/EGLWindow.h" #include "util/OSWindow.h" #include "util/gles_loader_autogen.h" using namespace angle; class EGLDeviceCGLQueryTest : public ANGLETest<> { protected: EGLDeviceCGLQueryTest() {} void testSetUp() override { const char *extensionString = static_cast(eglQueryString(getEGLWindow()->getDisplay(), EGL_EXTENSIONS)); if (!eglQueryDeviceStringEXT) { FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDeviceStringEXT was not " "found"; } if (!eglQueryDisplayAttribEXT) { FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDisplayAttribEXT was " "not found"; } if (!eglQueryDeviceAttribEXT) { FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDeviceAttribEXT was not " "found"; } EGLAttrib angleDevice = 0; EXPECT_EGL_TRUE( eglQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice)); extensionString = static_cast( eglQueryDeviceStringEXT(reinterpret_cast(angleDevice), EGL_EXTENSIONS)); if (strstr(extensionString, "EGL_ANGLE_device_cgl") == nullptr) { FAIL() << "ANGLE extension EGL_ANGLE_device_cgl was not found"; } } }; // This test attempts to query the CGLContextObj and CGLPixelFormatObj from the // EGLDevice associated with the display. TEST_P(EGLDeviceCGLQueryTest, QueryDevice) { EGLAttrib angleDevice = 0; EXPECT_EGL_TRUE( eglQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice)); EGLAttrib contextAttrib = 0; EGLAttrib pixelFormatAttrib = 0; EXPECT_EGL_TRUE(eglQueryDeviceAttribEXT(reinterpret_cast(angleDevice), EGL_CGL_CONTEXT_ANGLE, &contextAttrib)); EXPECT_TRUE(contextAttrib != 0); EXPECT_EGL_TRUE(eglQueryDeviceAttribEXT(reinterpret_cast(angleDevice), EGL_CGL_PIXEL_FORMAT_ANGLE, &pixelFormatAttrib)); EXPECT_TRUE(pixelFormatAttrib != 0); } // Use this to select which configurations (e.g. which renderer, which GLES major version) these // tests should be run against. ANGLE_INSTANTIATE_TEST(EGLDeviceCGLQueryTest, ES2_OPENGL(), ES3_OPENGL());