~mmach/netext73/webkit2gtk

« back to all changes in this revision

Viewing changes to Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDeviceCGLTest.cpp

  • Committer: mmach
  • Date: 2023-06-16 17:21:37 UTC
  • Revision ID: netbit73@gmail.com-20230616172137-2rqx6yr96ga9g3kp
1

Show diffs side-by-side

added added

removed removed

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