Edit

kc3-lang/angle/src/tests/egl_tests/EGLQueryContextTest.cpp

Branch :

  • Show log

    Commit

  • Author : Yunchao He
    Date : 2017-04-24 10:49:17
    Hash : f81ce4a3
    Message : Refactoring: replace NULL by nullptr for pointers (3rd CL). This CL mainly handles passing/returning NULL to/from a function. BUG=angleproject:2001 Change-Id: I34802f792e710e3d7ff697cbe4701dc1bf5ab009 Reviewed-on: https://chromium-review.googlesource.com/485060 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/tests/egl_tests/EGLQueryContextTest.cpp
  • //
    // Copyright (c) 2015 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.
    //
    
    #include <gtest/gtest.h>
    
    #include <EGL/egl.h>
    #include <EGL/eglext.h>
    
    #include "test_utils/angle_test_configs.h"
    
    using namespace angle;
    
    class EGLQueryContextTest : public testing::TestWithParam<PlatformParameters>
    {
      public:
        void SetUp() override
        {
            int clientVersion = GetParam().majorVersion;
    
            PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = reinterpret_cast<PFNEGLGETPLATFORMDISPLAYEXTPROC>(eglGetProcAddress("eglGetPlatformDisplayEXT"));
            EXPECT_TRUE(eglGetPlatformDisplayEXT != nullptr);
    
            EGLint dispattrs[] =
            {
                EGL_PLATFORM_ANGLE_TYPE_ANGLE, GetParam().getRenderer(),
                EGL_NONE
            };
            mDisplay = eglGetPlatformDisplayEXT(
                EGL_PLATFORM_ANGLE_ANGLE, reinterpret_cast<void *>(EGL_DEFAULT_DISPLAY), dispattrs);
            EXPECT_TRUE(mDisplay != EGL_NO_DISPLAY);
            EXPECT_TRUE(eglInitialize(mDisplay, nullptr, nullptr) != EGL_FALSE);
    
            EGLint ncfg;
            EGLint cfgattrs[] =
            {
                EGL_RED_SIZE, 8,
                EGL_GREEN_SIZE, 8,
                EGL_BLUE_SIZE, 8,
                EGL_RENDERABLE_TYPE, clientVersion == 3 ? EGL_OPENGL_ES3_BIT : EGL_OPENGL_ES2_BIT,
                EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
                EGL_NONE
            };
            EXPECT_TRUE(eglChooseConfig(mDisplay, cfgattrs, &mConfig, 1, &ncfg) != EGL_FALSE);
            EXPECT_TRUE(ncfg == 1);
    
            EGLint ctxattrs[] =
            {
                EGL_CONTEXT_CLIENT_VERSION, clientVersion,
                EGL_NONE
            };
            mContext = eglCreateContext(mDisplay, mConfig, nullptr, ctxattrs);
            EXPECT_TRUE(mContext != EGL_NO_CONTEXT);
    
            EGLint surfattrs[] =
            {
                EGL_WIDTH, 16,
                EGL_HEIGHT, 16,
                EGL_NONE
            };
            mSurface = eglCreatePbufferSurface(mDisplay, mConfig, surfattrs);
            EXPECT_TRUE(mSurface != EGL_NO_SURFACE);
        }
    
        void TearDown() override
        {
            eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
            eglDestroyContext(mDisplay, mContext);
            eglDestroySurface(mDisplay, mSurface);
            eglTerminate(mDisplay);
        }
    
        EGLDisplay mDisplay;
        EGLConfig mConfig;
        EGLContext mContext;
        EGLSurface mSurface;
    };
    
    TEST_P(EGLQueryContextTest, GetConfigID)
    {
        EGLint configId, contextConfigId;
        EXPECT_TRUE(eglGetConfigAttrib(mDisplay, mConfig, EGL_CONFIG_ID, &configId) != EGL_FALSE);
        EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONFIG_ID, &contextConfigId) != EGL_FALSE);
        EXPECT_TRUE(configId == contextConfigId);
    }
    
    TEST_P(EGLQueryContextTest, GetClientType)
    {
        EGLint clientType;
        EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONTEXT_CLIENT_TYPE, &clientType) != EGL_FALSE);
        EXPECT_TRUE(clientType == EGL_OPENGL_ES_API);
    }
    
    TEST_P(EGLQueryContextTest, GetClientVersion)
    {
        EGLint clientVersion;
        EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONTEXT_CLIENT_VERSION, &clientVersion) != EGL_FALSE);
        EXPECT_TRUE(clientVersion == GetParam().majorVersion);
    }
    
    TEST_P(EGLQueryContextTest, GetRenderBufferNoSurface)
    {
        EGLint renderBuffer;
        EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_RENDER_BUFFER, &renderBuffer) != EGL_FALSE);
        EXPECT_TRUE(renderBuffer == EGL_NONE);
    }
    
    TEST_P(EGLQueryContextTest, GetRenderBufferBoundSurface)
    {
        EGLint renderBuffer, contextRenderBuffer;
        EXPECT_TRUE(eglQuerySurface(mDisplay, mSurface, EGL_RENDER_BUFFER, &renderBuffer) != EGL_FALSE);
        EXPECT_TRUE(eglMakeCurrent(mDisplay, mSurface, mSurface, mContext) != EGL_FALSE);
        EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_RENDER_BUFFER, &contextRenderBuffer) != EGL_FALSE);
        EXPECT_TRUE(renderBuffer == contextRenderBuffer);
    }
    
    TEST_P(EGLQueryContextTest, BadDisplay)
    {
        EGLint val;
        EXPECT_TRUE(eglQueryContext(EGL_NO_DISPLAY, mContext, EGL_CONTEXT_CLIENT_TYPE, &val) == EGL_FALSE);
        EXPECT_TRUE(eglGetError() == EGL_BAD_DISPLAY);
    }
    
    TEST_P(EGLQueryContextTest, NotInitialized)
    {
        EGLint val;
        TearDown();
        EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONTEXT_CLIENT_TYPE, &val) == EGL_FALSE);
        EXPECT_TRUE(eglGetError() == EGL_NOT_INITIALIZED);
    
        mDisplay = EGL_NO_DISPLAY;
        mSurface = EGL_NO_SURFACE;
        mContext = EGL_NO_CONTEXT;
    }
    
    TEST_P(EGLQueryContextTest, BadContext)
    {
        EGLint val;
        EXPECT_TRUE(eglQueryContext(mDisplay, EGL_NO_CONTEXT, EGL_CONTEXT_CLIENT_TYPE, &val) == EGL_FALSE);
        EXPECT_TRUE(eglGetError() == EGL_BAD_CONTEXT);
    }
    
    TEST_P(EGLQueryContextTest, BadAttribute)
    {
        EGLint val;
        EXPECT_TRUE(eglQueryContext(mDisplay, mContext, EGL_HEIGHT, &val) == EGL_FALSE);
        EXPECT_TRUE(eglGetError() == EGL_BAD_ATTRIBUTE);
    }
    
    ANGLE_INSTANTIATE_TEST(EGLQueryContextTest, ES2_D3D9(), ES2_D3D11(), ES2_D3D11_FL9_3(), ES2_OPENGL(),
                           ES3_D3D11(), ES3_OPENGL());