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