Path: blob/main_old/src/tests/egl_tests/EGLQueryContextTest.cpp
1693 views
//1// Copyright 2015 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//56#include <gtest/gtest.h>78#include "test_utils/ANGLETest.h"910using namespace angle;1112class EGLQueryContextTest : public ANGLETest13{14public:15void testSetUp() override16{17int clientVersion = GetParam().majorVersion;1819EGLint dispattrs[] = {EGL_PLATFORM_ANGLE_TYPE_ANGLE, GetParam().getRenderer(), EGL_NONE};20mDisplay = eglGetPlatformDisplayEXT(21EGL_PLATFORM_ANGLE_ANGLE, reinterpret_cast<void *>(EGL_DEFAULT_DISPLAY), dispattrs);22EXPECT_TRUE(mDisplay != EGL_NO_DISPLAY);23EXPECT_TRUE(eglInitialize(mDisplay, nullptr, nullptr) != EGL_FALSE);2425EGLint ncfg;26EGLint cfgattrs[] = {EGL_RED_SIZE,278,28EGL_GREEN_SIZE,298,30EGL_BLUE_SIZE,318,32EGL_RENDERABLE_TYPE,33clientVersion == 3 ? EGL_OPENGL_ES3_BIT : EGL_OPENGL_ES2_BIT,34EGL_NONE};35EXPECT_TRUE(eglChooseConfig(mDisplay, cfgattrs, &mConfig, 1, &ncfg) != EGL_FALSE);36EXPECT_TRUE(ncfg == 1);3738EGLint ctxattrs[] = {EGL_CONTEXT_CLIENT_VERSION, clientVersion, EGL_NONE};39mContext = eglCreateContext(mDisplay, mConfig, nullptr, ctxattrs);40EXPECT_TRUE(mContext != EGL_NO_CONTEXT);4142EGLint surfaceType = EGL_NONE;43eglGetConfigAttrib(mDisplay, mConfig, EGL_SURFACE_TYPE, &surfaceType);44if (surfaceType & EGL_PBUFFER_BIT)45{46EGLint surfattrs[] = {EGL_WIDTH, 16, EGL_HEIGHT, 16, EGL_NONE};47mSurface = eglCreatePbufferSurface(mDisplay, mConfig, surfattrs);48EXPECT_TRUE(mSurface != EGL_NO_SURFACE);49}50}5152void testTearDown() override53{54if (mDisplay != EGL_NO_DISPLAY)55{56eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);57eglDestroyContext(mDisplay, mContext);58if (mSurface)59{60eglDestroySurface(mDisplay, mSurface);61}62eglTerminate(mDisplay);63}64ASSERT_EGL_SUCCESS() << "Error during test TearDown";65}6667EGLDisplay mDisplay = EGL_NO_DISPLAY;68EGLConfig mConfig = EGL_NO_CONFIG_KHR;69EGLContext mContext = EGL_NO_CONTEXT;70EGLSurface mSurface = EGL_NO_SURFACE;71};7273TEST_P(EGLQueryContextTest, GetConfigID)74{75EGLint configId, contextConfigId;76EXPECT_TRUE(eglGetConfigAttrib(mDisplay, mConfig, EGL_CONFIG_ID, &configId) != EGL_FALSE);77EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONFIG_ID, &contextConfigId) != EGL_FALSE);78EXPECT_TRUE(configId == contextConfigId);79}8081TEST_P(EGLQueryContextTest, GetClientType)82{83EGLint clientType;84EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONTEXT_CLIENT_TYPE, &clientType) !=85EGL_FALSE);86EXPECT_TRUE(clientType == EGL_OPENGL_ES_API);87}8889TEST_P(EGLQueryContextTest, GetClientVersion)90{91EGLint clientVersion;92EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONTEXT_CLIENT_VERSION, &clientVersion) !=93EGL_FALSE);94EXPECT_GE(clientVersion, GetParam().majorVersion);95}9697TEST_P(EGLQueryContextTest, GetRenderBufferNoSurface)98{99EGLint renderBuffer;100EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_RENDER_BUFFER, &renderBuffer) != EGL_FALSE);101EXPECT_TRUE(renderBuffer == EGL_NONE);102}103104TEST_P(EGLQueryContextTest, GetRenderBufferBoundSurface)105{106ANGLE_SKIP_TEST_IF(!mSurface);107108EGLint renderBuffer, contextRenderBuffer;109EXPECT_TRUE(eglQuerySurface(mDisplay, mSurface, EGL_RENDER_BUFFER, &renderBuffer) != EGL_FALSE);110EXPECT_TRUE(eglMakeCurrent(mDisplay, mSurface, mSurface, mContext) != EGL_FALSE);111EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_RENDER_BUFFER, &contextRenderBuffer) !=112EGL_FALSE);113EXPECT_TRUE(renderBuffer == contextRenderBuffer);114ASSERT_EGL_SUCCESS();115}116117TEST_P(EGLQueryContextTest, BadDisplay)118{119EGLint val;120EXPECT_TRUE(eglQueryContext(EGL_NO_DISPLAY, mContext, EGL_CONTEXT_CLIENT_TYPE, &val) ==121EGL_FALSE);122EXPECT_TRUE(eglGetError() == EGL_BAD_DISPLAY);123}124125TEST_P(EGLQueryContextTest, NotInitialized)126{127EGLint val;128testTearDown();129EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONTEXT_CLIENT_TYPE, &val) == EGL_FALSE);130EXPECT_TRUE(eglGetError() == EGL_NOT_INITIALIZED);131132mDisplay = EGL_NO_DISPLAY;133mSurface = EGL_NO_SURFACE;134mContext = EGL_NO_CONTEXT;135}136137TEST_P(EGLQueryContextTest, BadContext)138{139EGLint val;140EXPECT_TRUE(eglQueryContext(mDisplay, EGL_NO_CONTEXT, EGL_CONTEXT_CLIENT_TYPE, &val) ==141EGL_FALSE);142EXPECT_TRUE(eglGetError() == EGL_BAD_CONTEXT);143}144145TEST_P(EGLQueryContextTest, BadAttribute)146{147EGLint val;148EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_HEIGHT, &val) == EGL_FALSE);149EXPECT_TRUE(eglGetError() == EGL_BAD_ATTRIBUTE);150}151152GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EGLQueryContextTest);153ANGLE_INSTANTIATE_TEST(EGLQueryContextTest,154WithNoFixture(ES2_D3D9()),155WithNoFixture(ES2_D3D11()),156WithNoFixture(ES2_OPENGL()),157WithNoFixture(ES2_VULKAN()),158WithNoFixture(ES3_D3D11()),159WithNoFixture(ES3_OPENGL()));160161162