diff options
author | bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-20 21:09:45 +0000 |
---|---|---|
committer | bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-20 21:09:45 +0000 |
commit | d47fafe05743d61958397bcf7a4b2bf66d778e1d (patch) | |
tree | fac9722ac2921f86840813c7d0792be28851a7ca /tests | |
parent | ffa11bbbedd201899eb93bf05089c511f53d5c2a (diff) |
Add test that validates GrGLInterfaces
Review URL: http://codereview.appspot.com/5304048/
git-svn-id: http://skia.googlecode.com/svn/trunk@2510 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/GLInterfaceValidation.cpp | 55 | ||||
-rw-r--r-- | tests/Test.cpp | 3 |
2 files changed, 58 insertions, 0 deletions
diff --git a/tests/GLInterfaceValidation.cpp b/tests/GLInterfaceValidation.cpp new file mode 100755 index 0000000000..a18ab84091 --- /dev/null +++ b/tests/GLInterfaceValidation.cpp @@ -0,0 +1,55 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "Test.h" +#include "SkNativeGLContext.h" +#include "SkMesaGLContext.h" + +static void GLInterfaceValidationTest(skiatest::Reporter* reporter) { + typedef const GrGLInterface* (*interfaceFactory)(); + struct { + interfaceFactory fFactory; + const char* fName; + } interfaceFactories[] = { + {GrGLCreateNativeInterface, "Native"}, +#if SK_MESA + {GrGLCreateMesaInterface, "Mesa"}, +#endif + }; + + // On some platforms GrGLCreateNativeInterface will fail unless an OpenGL + // context has been created. Also, preserve the current context that may + // be in use by outer test harness. + SkNativeGLContext::AutoContextRestore nglacr; + SkNativeGLContext nglctx; + static const int gBOGUS_SIZE = 16; + REPORTER_ASSERT(reporter, nglctx.init(gBOGUS_SIZE, gBOGUS_SIZE)); +#if SK_MESA + // We must have a current OSMesa context to initialize an OSMesa + // GrGLInterface + SkMesaGLContext::AutoContextRestore mglacr; + SkMesaGLContext mglctx; + REPORTER_ASSERT(reporter, mglctx.init(gBOGUS_SIZE, gBOGUS_SIZE)); +#endif + + SkAutoTUnref<const GrGLInterface> iface; + for (size_t i = 0; i < SK_ARRAY_COUNT(interfaceFactories); ++i) { + iface.reset(interfaceFactories[i].fFactory()); + REPORTER_ASSERT(reporter, NULL != iface.get()); + if (iface.get()) { + REPORTER_ASSERT(reporter, iface.get()->validate(kOpenGL_Shaders_GrEngine)); + } + } +} + + +#include "TestClassDef.h" +DEFINE_TESTCLASS("GLInterfaceValidation", + GLInterfaceValidationTestClass, + GLInterfaceValidationTest) + diff --git a/tests/Test.cpp b/tests/Test.cpp index d91eeedb8f..1c3b691261 100644 --- a/tests/Test.cpp +++ b/tests/Test.cpp @@ -89,6 +89,9 @@ GrContext* GpuTest::GetContext() { gGrContext.reset(GrContext::Create(kOpenGL_Shaders_GrEngine, ctx)); } } + if (gGLContext.get()) { + gGLContext.get()->makeCurrent(); + } return gGrContext.get(); } |