1 // Copyright 2014 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.
5 #ifndef MOJO_GLES2_GLES2_CONTEXT_H_
6 #define MOJO_GLES2_GLES2_CONTEXT_H_
8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "gpu/command_buffer/client/gles2_implementation.h"
11 #include "mojo/gles2/command_buffer_client_impl.h"
12 #include "mojo/public/bindings/remote_ptr.h"
13 #include "mojo/public/gles2/gles2.h"
15 struct MojoGLES2ContextPrivate
{};
21 class GLES2Implementation
;
28 class GLES2Context
: public CommandBufferDelegate
,
29 public MojoGLES2ContextPrivate
{
31 explicit GLES2Context(MojoAsyncWaiter
* async_waiter
,
32 ScopedCommandBufferHandle command_buffer_handle
,
33 MojoGLES2ContextLost lost_callback
,
34 MojoGLES2DrawAnimationFrame animation_callback
,
36 virtual ~GLES2Context();
39 gpu::gles2::GLES2Interface
* interface() const {
40 return implementation_
.get();
42 gpu::ContextSupport
* context_support() const { return implementation_
.get(); }
43 void RequestAnimationFrames();
44 void CancelAnimationFrames();
47 virtual void ContextLost() OVERRIDE
;
48 virtual void DrawAnimationFrame() OVERRIDE
;
50 CommandBufferClientImpl command_buffer_
;
51 scoped_ptr
<gpu::gles2::GLES2CmdHelper
> gles2_helper_
;
52 scoped_ptr
<gpu::TransferBuffer
> transfer_buffer_
;
53 scoped_ptr
<gpu::gles2::GLES2Implementation
> implementation_
;
54 MojoGLES2ContextLost lost_callback_
;
55 MojoGLES2DrawAnimationFrame animation_callback_
;
58 MOJO_DISALLOW_COPY_AND_ASSIGN(GLES2Context
);
64 #endif // MOJO_GLES2_GLES2_CONTEXT_H_