13724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
23724e574a744491b7cfb8187ac865a70ef3d4528bsalomon/*
33724e574a744491b7cfb8187ac865a70ef3d4528bsalomon * Copyright 2015 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#ifndef GLTestContext_command_buffer_DEFINED
10273c0f5e87397c40d22bb7e3ee078bb46a3f6860bsalomon#define GLTestContext_command_buffer_DEFINED
113724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
12273c0f5e87397c40d22bb7e3ee078bb46a3f6860bsalomon#include "gl/GLTestContext.h"
133724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
143724e574a744491b7cfb8187ac865a70ef3d4528bsalomonnamespace sk_gpu_test {
15273c0f5e87397c40d22bb7e3ee078bb46a3f6860bsalomonclass CommandBufferGLTestContext : public GLTestContext {
163724e574a744491b7cfb8187ac865a70ef3d4528bsalomonpublic:
17273c0f5e87397c40d22bb7e3ee078bb46a3f6860bsalomon    ~CommandBufferGLTestContext() override;
183724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
1960c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian Osman    static CommandBufferGLTestContext *Create(GLTestContext* shareContext) {
2060c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian Osman        CommandBufferGLTestContext* cbShareContext =
2160c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian Osman                reinterpret_cast<CommandBufferGLTestContext*>(shareContext);
2260c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian Osman        CommandBufferGLTestContext *ctx = new CommandBufferGLTestContext(cbShareContext);
233724e574a744491b7cfb8187ac865a70ef3d4528bsalomon        if (!ctx->isValid()) {
243724e574a744491b7cfb8187ac865a70ef3d4528bsalomon            delete ctx;
253724e574a744491b7cfb8187ac865a70ef3d4528bsalomon            return nullptr;
263724e574a744491b7cfb8187ac865a70ef3d4528bsalomon        }
273724e574a744491b7cfb8187ac865a70ef3d4528bsalomon        return ctx;
283724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    }
293724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
303724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void presentCommandBuffer();
313724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
323724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    bool makeCurrent();
333724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
343724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    int getStencilBits();
353724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
363724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    int getSampleCount();
373724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
383724e574a744491b7cfb8187ac865a70ef3d4528bsalomonprivate:
3960c774db3ec46f3eb85f6390ba31e38c8d29e2d4Brian Osman    CommandBufferGLTestContext(CommandBufferGLTestContext* shareContext);
403724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
413724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void destroyGLContext();
423724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
433724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void onPlatformMakeCurrent() const override;
443724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
453724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void onPlatformSwapBuffers() const override;
463724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
473724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    GrGLFuncPtr onPlatformGetProcAddress(const char *name) const override;
483724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
493724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void *fContext;
503724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void *fDisplay;
513724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void *fSurface;
523724e574a744491b7cfb8187ac865a70ef3d4528bsalomon    void *fConfig;
533724e574a744491b7cfb8187ac865a70ef3d4528bsalomon};
543724e574a744491b7cfb8187ac865a70ef3d4528bsalomon}   // namespace sk_gpu_test
553724e574a744491b7cfb8187ac865a70ef3d4528bsalomon
563724e574a744491b7cfb8187ac865a70ef3d4528bsalomon#endif
57