1 // Copyright (c) 2013 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 WEBKIT_COMMON_GPU_CONTEXT_PROVIDER_IN_PROCESS_H_
6 #define WEBKIT_COMMON_GPU_CONTEXT_PROVIDER_IN_PROCESS_H_
10 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/synchronization/lock.h"
13 #include "base/threading/thread_checker.h"
14 #include "cc/blink/context_provider_web_context.h"
15 #include "webkit/common/gpu/webkit_gpu_export.h"
17 namespace blink
{ class WebGraphicsContext3D
; }
20 class WebGraphicsContext3DInProcessCommandBufferImpl
;
25 class GrContextForWebGraphicsContext3D
;
27 class WEBKIT_GPU_EXPORT ContextProviderInProcess
28 : NON_EXPORTED_BASE(public cc_blink::ContextProviderWebContext
) {
30 static scoped_refptr
<ContextProviderInProcess
> Create(
31 scoped_ptr
<gpu_blink::WebGraphicsContext3DInProcessCommandBufferImpl
>
33 const std::string
& debug_name
);
35 // Uses default attributes for creating an offscreen context.
36 static scoped_refptr
<ContextProviderInProcess
> CreateOffscreen(
37 bool lose_context_when_out_of_memory
);
40 ContextProviderInProcess(
41 scoped_ptr
<gpu_blink::WebGraphicsContext3DInProcessCommandBufferImpl
>
43 const std::string
& debug_name
);
44 ~ContextProviderInProcess() override
;
46 // cc_blink::ContextProviderWebContext:
47 blink::WebGraphicsContext3D
* WebContext3D() override
;
49 // cc::ContextProvider:
50 bool BindToCurrentThread() override
;
51 void DetachFromThread() override
;
52 Capabilities
ContextCapabilities() override
;
53 ::gpu::gles2::GLES2Interface
* ContextGL() override
;
54 ::gpu::ContextSupport
* ContextSupport() override
;
55 class GrContext
* GrContext() override
;
56 void SetupLock() override
;
57 base::Lock
* GetLock() override
;
58 bool IsContextLost() override
;
59 void VerifyContexts() override
;
60 void DeleteCachedResources() override
;
61 bool DestroyedOnMainThread() override
;
62 void SetLostContextCallback(
63 const LostContextCallback
& lost_context_callback
) override
;
64 void SetMemoryPolicyChangedCallback(
65 const MemoryPolicyChangedCallback
& memory_policy_changed_callback
)
69 void InitializeCapabilities();
71 base::ThreadChecker main_thread_checker_
;
72 base::ThreadChecker context_thread_checker_
;
74 scoped_ptr
<gpu_blink::WebGraphicsContext3DInProcessCommandBufferImpl
>
76 scoped_ptr
<GrContextForWebGraphicsContext3D
> gr_context_
;
78 LostContextCallback lost_context_callback_
;
80 base::Lock destroyed_lock_
;
83 base::Lock context_lock_
;
84 std::string debug_name_
;
85 class LostContextCallbackProxy
;
86 scoped_ptr
<LostContextCallbackProxy
> lost_context_callback_proxy_
;
88 cc::ContextProvider::Capabilities capabilities_
;
90 DISALLOW_COPY_AND_ASSIGN(ContextProviderInProcess
);
96 #endif // WEBKIT_COMMON_GPU_CONTEXT_PROVIDER_IN_PROCESS_H_