NullGLTestContext.cpp revision b988ecf639f1394ea5e821ac15b989e25e064534
13724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
23724e574a744491b7cfb8187ac865a70ef3d4528bsalomon/*
33724e574a744491b7cfb8187ac865a70ef3d4528bsalomon * Copyright 2011 Google Inc.
43724e574a744491b7cfb8187ac865a70ef3d4528bsalomon *
53724e574a744491b7cfb8187ac865a70ef3d4528bsalomon * Use of this source code is governed by a BSD-style license that can be
63724e574a744491b7cfb8187ac865a70ef3d4528bsalomon * found in the LICENSE file.
73724e574a744491b7cfb8187ac865a70ef3d4528bsalomon */
83724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
9273c0f5e87397c40d22bb7e3ee078bb46a3f6860bsalomon#include "NullGLTestContext.h"
103724e574a744491b7cfb8187ac865a70ef3d4528bsalomon#include "gl/GrGLTestInterface.h"
113724e574a744491b7cfb8187ac865a70ef3d4528bsalomon#include "gl/GrGLDefines.h"
123724e574a744491b7cfb8187ac865a70ef3d4528bsalomon#include "gl/GrGLInterface.h"
133724e574a744491b7cfb8187ac865a70ef3d4528bsalomon#include "gl/GrGLTypes.h"
143724e574a744491b7cfb8187ac865a70ef3d4528bsalomon#include "SkMutex.h"
153724e574a744491b7cfb8187ac865a70ef3d4528bsalomon#include "SkTDArray.h"
163724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
173724e574a744491b7cfb8187ac865a70ef3d4528bsalomonnamespace {
18273c0f5e87397c40d22bb7e3ee078bb46a3f6860bsalomonclass NullGLContext : public sk_gpu_test::GLTestContext {
193724e574a744491b7cfb8187ac865a70ef3d4528bsalomonpublic:
20b988ecf639f1394ea5e821ac15b989e25e064534svaisanen    NullGLContext(bool enableNVPR) { this->init(GrGLCreateNullInterface(enableNVPR)); }
213724e574a744491b7cfb8187ac865a70ef3d4528bsalomon   ~NullGLContext() override { this->teardown(); }
223724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
23b988ecf639f1394ea5e821ac15b989e25e064534svaisanenprivate:
243724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void onPlatformMakeCurrent() const override {};
253724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void onPlatformSwapBuffers() const override {}
263724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    GrGLFuncPtr onPlatformGetProcAddress(const char*) const override { return nullptr; }
273724e574a744491b7cfb8187ac865a70ef3d4528bsalomon};
282f538e91573ae3b263a5b7f61628c8485913ded1bsalomon
293724e574a744491b7cfb8187ac865a70ef3d4528bsalomon}  // anonymous namespace
303724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
313724e574a744491b7cfb8187ac865a70ef3d4528bsalomonnamespace sk_gpu_test {
32b988ecf639f1394ea5e821ac15b989e25e064534svaisanenGLTestContext* CreateNullGLTestContext(bool enableNVPR) {
33b988ecf639f1394ea5e821ac15b989e25e064534svaisanen    GLTestContext* ctx = new NullGLContext(enableNVPR);
343724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    if (ctx->isValid()) {
353724e574a744491b7cfb8187ac865a70ef3d4528bsalomon        return ctx;
363724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    }
373724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    delete ctx;
383724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    return nullptr;
393724e574a744491b7cfb8187ac865a70ef3d4528bsalomon}
403724e574a744491b7cfb8187ac865a70ef3d4528bsalomon}  // namespace sk_gpu_test
413724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
42