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
This commit is contained in:
bsalomon@google.com 2013-03-11 20:22:38 +00:00
parent 8a8fcba5b6
commit 7fa1bb4133

View File

@ -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<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()) {
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<GrGLBinding>(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