1373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
2373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com/*
3373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com * Copyright 2011 Google Inc.
4373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com *
5373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com * Use of this source code is governed by a BSD-style license that can be
6373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com * found in the LICENSE file.
7373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com */
8373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com#ifndef SkMesaGLContext_DEFINED
9373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com#define SkMesaGLContext_DEFINED
10373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
116177e6999d23a4268ffd98dedfb1da00e272a89brobertphillips@google.com#include "SkGLContextHelper.h"
12373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
13373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com#if SK_MESA
14373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
156177e6999d23a4268ffd98dedfb1da00e272a89brobertphillips@google.comclass SkMesaGLContext : public SkGLContextHelper {
1657f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.comprivate:
1757f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com    typedef intptr_t Context;
1857f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com
19373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.compublic:
20373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com    SkMesaGLContext();
21373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
22373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com    virtual ~SkMesaGLContext();
23373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
24373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com    virtual void makeCurrent() const SK_OVERRIDE;
25c9542ca3d00878a18a57af80037060d6374d5650djsollen@google.com    virtual void swapBuffers() const SK_OVERRIDE;
26373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
2757f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com    class AutoContextRestore {
2857f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com    public:
2957f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com        AutoContextRestore();
3057f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com        ~AutoContextRestore();
3157f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com
3257f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com    private:
3357f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com        Context fOldContext;
34b3400badf022b4ff6f3545d1baa706affc22d93dbsalomon@google.com        GrGLint fOldWidth;
35b3400badf022b4ff6f3545d1baa706affc22d93dbsalomon@google.com        GrGLint fOldHeight;
36b3400badf022b4ff6f3545d1baa706affc22d93dbsalomon@google.com        GrGLint fOldFormat;
3757f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com        void*   fOldImage;
3857f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com    };
3957f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com
40373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.comprotected:
41373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com    virtual const GrGLInterface* createGLContext() SK_OVERRIDE;
4274913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com    virtual void destroyGLContext() SK_OVERRIDE;
43373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
44373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.comprivate:
45373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com    Context fContext;
46373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com    GrGLubyte *fImage;
47373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com};
48373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
49373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com#endif
50373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com
5157f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com#endif
52