From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../src/tests/egl_tests/EGLContextSharingTest.cpp | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100755 gfx/angle/src/tests/egl_tests/EGLContextSharingTest.cpp (limited to 'gfx/angle/src/tests/egl_tests/EGLContextSharingTest.cpp') diff --git a/gfx/angle/src/tests/egl_tests/EGLContextSharingTest.cpp b/gfx/angle/src/tests/egl_tests/EGLContextSharingTest.cpp new file mode 100755 index 000000000..fc66b7909 --- /dev/null +++ b/gfx/angle/src/tests/egl_tests/EGLContextSharingTest.cpp @@ -0,0 +1,87 @@ +// +// Copyright (c) 2016 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. +// +// EGLContextSharingTest.cpp: +// Tests relating to shared Contexts. + +#include + +#include +#include + +#include "test_utils/ANGLETest.h" +#include "test_utils/angle_test_configs.h" + +using namespace angle; + +namespace +{ + +EGLBoolean SafeDestroyContext(EGLDisplay display, EGLContext &context) +{ + EGLBoolean result = EGL_TRUE; + if (context != EGL_NO_CONTEXT) + { + result = eglDestroyContext(display, context); + context = EGL_NO_CONTEXT; + } + return result; +} + +class EGLContextSharingTest : public ANGLETest +{ + public: + EGLContextSharingTest() : mContexts{EGL_NO_CONTEXT, EGL_NO_CONTEXT}, mTexture(0) {} + + void TearDown() override + { + glDeleteTextures(1, &mTexture); + + EGLDisplay display = getEGLWindow()->getDisplay(); + + if (display != EGL_NO_DISPLAY) + { + for (auto &context : mContexts) + { + SafeDestroyContext(display, context); + } + } + + ANGLETest::TearDown(); + } + + EGLContext mContexts[2]; + GLuint mTexture; +}; + +// Tests that creating resources works after freeing the share context. +TEST_P(EGLContextSharingTest, BindTextureAfterShareContextFree) +{ + EGLDisplay display = getEGLWindow()->getDisplay(); + EGLConfig config = getEGLWindow()->getConfig(); + EGLSurface surface = getEGLWindow()->getSurface(); + + const EGLint contextAttribs[] = {EGL_CONTEXT_CLIENT_VERSION, + getEGLWindow()->getClientMajorVersion(), EGL_NONE}; + + mContexts[0] = eglCreateContext(display, config, nullptr, contextAttribs); + ASSERT_EGL_SUCCESS(); + ASSERT_TRUE(mContexts[0] != EGL_NO_CONTEXT); + mContexts[1] = eglCreateContext(display, config, mContexts[1], contextAttribs); + ASSERT_EGL_SUCCESS(); + ASSERT_TRUE(mContexts[1] != EGL_NO_CONTEXT); + + ASSERT_EGL_TRUE(SafeDestroyContext(display, mContexts[0])); + ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mContexts[1])); + ASSERT_EGL_SUCCESS(); + + glGenTextures(1, &mTexture); + glBindTexture(GL_TEXTURE_2D, mTexture); + ASSERT_GL_NO_ERROR(); +} + +} // anonymous namespace + +ANGLE_INSTANTIATE_TEST(EGLContextSharingTest, ES2_D3D9(), ES2_D3D11(), ES2_OPENGL()); -- cgit v1.2.3