summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/tests/egl_tests/EGLQueryContextTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/src/tests/egl_tests/EGLQueryContextTest.cpp')
-rwxr-xr-xgfx/angle/src/tests/egl_tests/EGLQueryContextTest.cpp153
1 files changed, 153 insertions, 0 deletions
diff --git a/gfx/angle/src/tests/egl_tests/EGLQueryContextTest.cpp b/gfx/angle/src/tests/egl_tests/EGLQueryContextTest.cpp
new file mode 100755
index 000000000..ff4a43f23
--- /dev/null
+++ b/gfx/angle/src/tests/egl_tests/EGLQueryContextTest.cpp
@@ -0,0 +1,153 @@
+//
+// 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 != NULL);
+
+ 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, NULL, NULL) != 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, NULL, 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());