Path: blob/main_old/src/tests/egl_tests/EGLDisplayLuidTest.cpp
1693 views
//1// Copyright 2020 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//5// EGLDisplayLuidTest.cpp:6// Tests for the EGL_ANGLE_platform_angle_d3d_luid extension.7//89#include "test_utils/ANGLETest.h"1011using namespace angle;1213class EGLDisplayLuidTest : public ANGLETest14{15protected:16EGLDisplayLuidTest() : mDisplay(EGL_NO_DISPLAY) {}1718void testTearDown() override19{20if (mDisplay != EGL_NO_DISPLAY)21{22EXPECT_EGL_TRUE(eglTerminate(mDisplay));23EXPECT_EGL_SUCCESS();24}25}2627void testInvalidAttribs(const EGLint displayAttribs[])28{29EXPECT_EQ(30eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, displayAttribs),31EGL_NO_DISPLAY);32EXPECT_EGL_ERROR(EGL_BAD_ATTRIBUTE);33}3435void testValidAttribs(const EGLint displayAttribs[])36{37mDisplay =38eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, displayAttribs);3940EXPECT_EGL_SUCCESS();41EXPECT_NE(mDisplay, EGL_NO_DISPLAY);4243// eglInitialize should succeed even if the LUID doesn't match an actual44// adapter on the system. The behavior in this case is that the default45// adapter is used.46EXPECT_EGL_TRUE(eglInitialize(mDisplay, nullptr, nullptr));47EXPECT_EGL_SUCCESS();48}4950private:51EGLDisplay mDisplay;52};5354// EGL_ANGLE_platform_angle_d3d_luid is only supported on D3D11. Verify failure55// if D3D9 is specified in the attributes.56TEST_P(EGLDisplayLuidTest, D3D9Failure)57{58EGLint displayAttribs[] = {EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE,59EGL_PLATFORM_ANGLE_D3D_LUID_HIGH_ANGLE, 1, EGL_NONE};60testInvalidAttribs(displayAttribs);61}6263// Verify failure if the specified LUID is zero.64TEST_P(EGLDisplayLuidTest, ZeroLuidFailure)65{66EGLint displayAttribs[] = {EGL_PLATFORM_ANGLE_TYPE_ANGLE,67EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,68EGL_PLATFORM_ANGLE_D3D_LUID_HIGH_ANGLE,690,70EGL_PLATFORM_ANGLE_D3D_LUID_LOW_ANGLE,710,72EGL_NONE};73testInvalidAttribs(displayAttribs);74}7576TEST_P(EGLDisplayLuidTest, D3D11)77{78EGLint displayAttribs[] = {EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,79EGL_PLATFORM_ANGLE_D3D_LUID_HIGH_ANGLE, 1, EGL_NONE};80testValidAttribs(displayAttribs);81}8283ANGLE_INSTANTIATE_TEST(EGLDisplayLuidTest, WithNoFixture(ES2_D3D9()), WithNoFixture(ES2_D3D11()));848586