• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef GPU_COMMAND_BUFFER_SERVICE_GL_CONTEXT_VIRTUAL_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_GL_CONTEXT_VIRTUAL_H_
7 
8 #include "base/compiler_specific.h"
9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h"
12 #include "gpu/gpu_export.h"
13 #include "ui/gl/gl_context.h"
14 
15 namespace gfx {
16 class Display;
17 class GLSurface;
18 class GLStateRestorer;
19 }
20 
21 namespace gpu {
22 namespace gles2 {
23 class GLES2Decoder;
24 }
25 
26 // Encapsulates a virtual OpenGL context.
27 class GPU_EXPORT GLContextVirtual : public gfx::GLContext {
28  public:
29   GLContextVirtual(
30       gfx::GLShareGroup* share_group,
31       gfx::GLContext* shared_context,
32       base::WeakPtr<gles2::GLES2Decoder> decoder);
33 
34   gfx::Display* display();
35 
36   // Implement GLContext.
37   virtual bool Initialize(
38       gfx::GLSurface* compatible_surface,
39       gfx::GpuPreference gpu_preference) OVERRIDE;
40   virtual void Destroy() OVERRIDE;
41   virtual bool MakeCurrent(gfx::GLSurface* surface) OVERRIDE;
42   virtual void ReleaseCurrent(gfx::GLSurface* surface) OVERRIDE;
43   virtual bool IsCurrent(gfx::GLSurface* surface) OVERRIDE;
44   virtual void* GetHandle() OVERRIDE;
45   virtual void SetSwapInterval(int interval) OVERRIDE;
46   virtual std::string GetExtensions() OVERRIDE;
47   virtual bool GetTotalGpuMemory(size_t* bytes) OVERRIDE;
48   virtual void SetSafeToForceGpuSwitch() OVERRIDE;
49   virtual bool WasAllocatedUsingRobustnessExtension() OVERRIDE;
50   virtual void SetUnbindFboOnMakeCurrent() OVERRIDE;
51 
52  protected:
53   virtual ~GLContextVirtual();
54 
55  private:
56   scoped_refptr<gfx::GLContext> shared_context_;
57   gfx::Display* display_;
58   base::WeakPtr<gles2::GLES2Decoder> decoder_;
59 
60   DISALLOW_COPY_AND_ASSIGN(GLContextVirtual);
61 };
62 
63 }  // namespace gpu
64 
65 #endif  // GPU_COMMAND_BUFFER_SERVICE_GL_CONTEXT_VIRTUAL_H_
66