xref: /aosp_15_r20/external/angle/src/tests/egl_tests/EGLDeviceCGLTest.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2019 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker //    EGLDeviceCGLTest.cpp: tests for the EGL_ANGLE_device_cgl extension.
7*8975f5c5SAndroid Build Coastguard Worker //
8*8975f5c5SAndroid Build Coastguard Worker 
9*8975f5c5SAndroid Build Coastguard Worker #include "test_utils/ANGLETest.h"
10*8975f5c5SAndroid Build Coastguard Worker #include "util/EGLWindow.h"
11*8975f5c5SAndroid Build Coastguard Worker #include "util/OSWindow.h"
12*8975f5c5SAndroid Build Coastguard Worker #include "util/gles_loader_autogen.h"
13*8975f5c5SAndroid Build Coastguard Worker 
14*8975f5c5SAndroid Build Coastguard Worker using namespace angle;
15*8975f5c5SAndroid Build Coastguard Worker 
16*8975f5c5SAndroid Build Coastguard Worker class EGLDeviceCGLQueryTest : public ANGLETest<>
17*8975f5c5SAndroid Build Coastguard Worker {
18*8975f5c5SAndroid Build Coastguard Worker   protected:
EGLDeviceCGLQueryTest()19*8975f5c5SAndroid Build Coastguard Worker     EGLDeviceCGLQueryTest() {}
20*8975f5c5SAndroid Build Coastguard Worker 
testSetUp()21*8975f5c5SAndroid Build Coastguard Worker     void testSetUp() override
22*8975f5c5SAndroid Build Coastguard Worker     {
23*8975f5c5SAndroid Build Coastguard Worker         const char *extensionString =
24*8975f5c5SAndroid Build Coastguard Worker             static_cast<const char *>(eglQueryString(getEGLWindow()->getDisplay(), EGL_EXTENSIONS));
25*8975f5c5SAndroid Build Coastguard Worker 
26*8975f5c5SAndroid Build Coastguard Worker         if (!eglQueryDeviceStringEXT)
27*8975f5c5SAndroid Build Coastguard Worker         {
28*8975f5c5SAndroid Build Coastguard Worker             FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDeviceStringEXT was not "
29*8975f5c5SAndroid Build Coastguard Worker                       "found";
30*8975f5c5SAndroid Build Coastguard Worker         }
31*8975f5c5SAndroid Build Coastguard Worker 
32*8975f5c5SAndroid Build Coastguard Worker         if (!eglQueryDisplayAttribEXT)
33*8975f5c5SAndroid Build Coastguard Worker         {
34*8975f5c5SAndroid Build Coastguard Worker             FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDisplayAttribEXT was "
35*8975f5c5SAndroid Build Coastguard Worker                       "not found";
36*8975f5c5SAndroid Build Coastguard Worker         }
37*8975f5c5SAndroid Build Coastguard Worker 
38*8975f5c5SAndroid Build Coastguard Worker         if (!eglQueryDeviceAttribEXT)
39*8975f5c5SAndroid Build Coastguard Worker         {
40*8975f5c5SAndroid Build Coastguard Worker             FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDeviceAttribEXT was not "
41*8975f5c5SAndroid Build Coastguard Worker                       "found";
42*8975f5c5SAndroid Build Coastguard Worker         }
43*8975f5c5SAndroid Build Coastguard Worker 
44*8975f5c5SAndroid Build Coastguard Worker         EGLAttrib angleDevice = 0;
45*8975f5c5SAndroid Build Coastguard Worker         EXPECT_EGL_TRUE(
46*8975f5c5SAndroid Build Coastguard Worker             eglQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice));
47*8975f5c5SAndroid Build Coastguard Worker         extensionString = static_cast<const char *>(
48*8975f5c5SAndroid Build Coastguard Worker             eglQueryDeviceStringEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice), EGL_EXTENSIONS));
49*8975f5c5SAndroid Build Coastguard Worker         if (strstr(extensionString, "EGL_ANGLE_device_cgl") == nullptr)
50*8975f5c5SAndroid Build Coastguard Worker         {
51*8975f5c5SAndroid Build Coastguard Worker             FAIL() << "ANGLE extension EGL_ANGLE_device_cgl was not found";
52*8975f5c5SAndroid Build Coastguard Worker         }
53*8975f5c5SAndroid Build Coastguard Worker     }
54*8975f5c5SAndroid Build Coastguard Worker };
55*8975f5c5SAndroid Build Coastguard Worker 
56*8975f5c5SAndroid Build Coastguard Worker // This test attempts to query the CGLContextObj and CGLPixelFormatObj from the
57*8975f5c5SAndroid Build Coastguard Worker // EGLDevice associated with the display.
TEST_P(EGLDeviceCGLQueryTest,QueryDevice)58*8975f5c5SAndroid Build Coastguard Worker TEST_P(EGLDeviceCGLQueryTest, QueryDevice)
59*8975f5c5SAndroid Build Coastguard Worker {
60*8975f5c5SAndroid Build Coastguard Worker     EGLAttrib angleDevice = 0;
61*8975f5c5SAndroid Build Coastguard Worker     EXPECT_EGL_TRUE(
62*8975f5c5SAndroid Build Coastguard Worker         eglQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice));
63*8975f5c5SAndroid Build Coastguard Worker     EGLAttrib contextAttrib     = 0;
64*8975f5c5SAndroid Build Coastguard Worker     EGLAttrib pixelFormatAttrib = 0;
65*8975f5c5SAndroid Build Coastguard Worker     EXPECT_EGL_TRUE(eglQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice),
66*8975f5c5SAndroid Build Coastguard Worker                                             EGL_CGL_CONTEXT_ANGLE, &contextAttrib));
67*8975f5c5SAndroid Build Coastguard Worker     EXPECT_TRUE(contextAttrib != 0);
68*8975f5c5SAndroid Build Coastguard Worker     EXPECT_EGL_TRUE(eglQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice),
69*8975f5c5SAndroid Build Coastguard Worker                                             EGL_CGL_PIXEL_FORMAT_ANGLE, &pixelFormatAttrib));
70*8975f5c5SAndroid Build Coastguard Worker     EXPECT_TRUE(pixelFormatAttrib != 0);
71*8975f5c5SAndroid Build Coastguard Worker }
72*8975f5c5SAndroid Build Coastguard Worker 
73*8975f5c5SAndroid Build Coastguard Worker // Use this to select which configurations (e.g. which renderer, which GLES major version) these
74*8975f5c5SAndroid Build Coastguard Worker // tests should be run against.
75*8975f5c5SAndroid Build Coastguard Worker ANGLE_INSTANTIATE_TEST(EGLDeviceCGLQueryTest, ES2_OPENGL(), ES3_OPENGL());
76