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:
24fc6c37b981daeece7474ce61070c707c37eefa62Mike Klein    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 {
3260c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian OsmanGLTestContext* CreateNullGLTestContext(bool enableNVPR, GLTestContext* shareContext) {
3360c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian Osman    if (shareContext) {
3460c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian Osman        return nullptr;
3560c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian Osman    }
36b988ecf639f1394ea5e821ac15b989e25e064534svaisanen    GLTestContext* ctx = new NullGLContext(enableNVPR);
373724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    if (ctx->isValid()) {
383724e574a744491b7cfb8187ac865a70ef3d4528bsalomon        return ctx;
393724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    }
403724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    delete ctx;
413724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    return nullptr;
423724e574a744491b7cfb8187ac865a70ef3d4528bsalomon}
433724e574a744491b7cfb8187ac865a70ef3d4528bsalomon}  // namespace sk_gpu_test
443724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
45