From 7fa1bb41333a0873d636eea8ec14e5aed0e256a7 Mon Sep 17 00:00:00 2001 From: "bsalomon@google.com" Date: Mon, 11 Mar 2013 20:22:38 +0000 Subject: [PATCH] Simplify the GL interface validation test. Review URL: https://codereview.chromium.org/12703003 git-svn-id: http://skia.googlecode.com/svn/trunk@8077 2bbb7eff-a529-9590-31e7-b0007b416f81 --- tests/GLInterfaceValidation.cpp | 84 ++++++--------------------------- 1 file changed, 15 insertions(+), 69 deletions(-) diff --git a/tests/GLInterfaceValidation.cpp b/tests/GLInterfaceValidation.cpp index 966383f2a6..a4709ba104 100755 --- a/tests/GLInterfaceValidation.cpp +++ b/tests/GLInterfaceValidation.cpp @@ -12,76 +12,22 @@ // This is a GPU-backend specific test #if SK_SUPPORT_GPU -#if SK_ANGLE -#include "gl/SkANGLEGLContext.h" -#endif -#include "gl/SkNativeGLContext.h" -#if SK_MESA -#include "gl/SkMesaGLContext.h" -#endif +#include "GrContextFactory.h" -static void GLInterfaceValidationTest(skiatest::Reporter* reporter) { - typedef const GrGLInterface* (*interfaceFactory)(); - struct { - interfaceFactory fFactory; - const char* fName; - } interfaceFactories[] = { -#if SK_ANGLE - {GrGLCreateANGLEInterface, "ANGLE"}, -#endif - {GrGLCreateNativeInterface, "Native"}, -#if SK_MESA - {GrGLCreateMesaInterface, "Mesa"}, -#endif - {GrGLCreateDebugInterface, "Debug"}, - {GrGLCreateNullInterface, "Null"}, - }; - - static const int kBogusSize = 16; - -#if SK_ANGLE - SkANGLEGLContext::AutoContextRestore angleACR; - SkANGLEGLContext angleContext; - bool angleContextInit = angleContext.init(kBogusSize, kBogusSize); - REPORTER_ASSERT(reporter, angleContextInit); - if (!angleContextInit) { - return; - } -#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; - bool nativeContextInit = nglctx.init(kBogusSize, kBogusSize); - REPORTER_ASSERT(reporter, nativeContextInit); - if (!nativeContextInit) { - return; - } - -#if SK_MESA - // We must have a current OSMesa context to initialize an OSMesa - // GrGLInterface - SkMesaGLContext::AutoContextRestore mglACR; - SkMesaGLContext mglctx; - bool mesaContextInit = mglctx.init(kBogusSize, kBogusSize); - REPORTER_ASSERT(reporter, mesaContextInit); - if(!mesaContextInit) { - return; - } -#endif - - SkAutoTUnref 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()) { +static void GLInterfaceValidationTest(skiatest::Reporter* reporter, GrContextFactory* factory) { + for (int i = 0; i <= GrContextFactory::kLastGLContextType; ++i) { + GrContextFactory::GLContextType glCtxType = (GrContextFactory::GLContextType)i; + // this forces the factory to make the context if it hasn't yet + factory->get(glCtxType); + SkGLContextHelper* glCtxHelper = factory->getGLContext(glCtxType); + REPORTER_ASSERT(reporter, NULL != glCtxHelper); + if (NULL != glCtxHelper) { + const GrGLInterface* interface = glCtxHelper->gl(); for (GrGLBinding binding = kFirstGrGLBinding; binding <= kLastGrGLBinding; binding = static_cast(binding << 1)) { - if (iface.get()->fBindingsExported & binding) { - REPORTER_ASSERT(reporter, iface.get()->validate(binding)); + if (interface->fBindingsExported & binding) { + REPORTER_ASSERT(reporter, interface->validate(binding)); } } } @@ -90,8 +36,8 @@ static void GLInterfaceValidationTest(skiatest::Reporter* reporter) { #include "TestClassDef.h" -DEFINE_TESTCLASS("GLInterfaceValidation", - GLInterfaceValidationTestClass, - GLInterfaceValidationTest) +DEFINE_GPUTESTCLASS("GLInterfaceValidation", + GLInterfaceValidationTestClass, + GLInterfaceValidationTest) #endif