| // | |
| // 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<const char *>(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<const char *>( | |
| eglQueryDeviceStringEXT(reinterpret_cast<EGLDeviceEXT>(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<EGLDeviceEXT>(angleDevice), | |
| EGL_CGL_CONTEXT_ANGLE, &contextAttrib)); | |
| EXPECT_TRUE(contextAttrib != 0); | |
| EXPECT_EGL_TRUE(eglQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(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()); |