aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-20 21:09:45 +0000
committerGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-20 21:09:45 +0000
commitd47fafe05743d61958397bcf7a4b2bf66d778e1d (patch)
treefac9722ac2921f86840813c7d0792be28851a7ca /tests
parentffa11bbbedd201899eb93bf05089c511f53d5c2a (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-xtests/GLInterfaceValidation.cpp55
-rw-r--r--tests/Test.cpp3
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();
}