OLD | NEW |
| (Empty) |
1 // Copyright 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. | |
4 | |
5 #include "ui/compositor/test/default_context_factory.h" | |
6 | |
7 #include "cc/output/output_surface.h" | |
8 #include "ui/compositor/reflector.h" | |
9 #include "ui/gl/gl_implementation.h" | |
10 #include "ui/gl/gl_surface.h" | |
11 #include "webkit/common/gpu/context_provider_in_process.h" | |
12 #include "webkit/common/gpu/grcontext_for_webgraphicscontext3d.h" | |
13 #include "webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.
h" | |
14 | |
15 namespace ui { | |
16 | |
17 DefaultContextFactory::DefaultContextFactory() { | |
18 DCHECK_NE(gfx::GetGLImplementation(), gfx::kGLImplementationNone); | |
19 } | |
20 | |
21 DefaultContextFactory::~DefaultContextFactory() { | |
22 } | |
23 | |
24 scoped_ptr<cc::OutputSurface> DefaultContextFactory::CreateOutputSurface( | |
25 Compositor* compositor, bool software_fallback) { | |
26 DCHECK(!software_fallback); | |
27 blink::WebGraphicsContext3D::Attributes attrs; | |
28 attrs.depth = false; | |
29 attrs.stencil = false; | |
30 attrs.antialias = false; | |
31 attrs.shareResources = true; | |
32 | |
33 using webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl; | |
34 scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> context3d( | |
35 WebGraphicsContext3DInProcessCommandBufferImpl::CreateViewContext( | |
36 attrs, compositor->widget())); | |
37 CHECK(context3d); | |
38 | |
39 using webkit::gpu::ContextProviderInProcess; | |
40 scoped_refptr<ContextProviderInProcess> context_provider = | |
41 ContextProviderInProcess::Create(context3d.Pass(), | |
42 "UICompositor"); | |
43 | |
44 return make_scoped_ptr(new cc::OutputSurface(context_provider)); | |
45 } | |
46 | |
47 scoped_refptr<Reflector> DefaultContextFactory::CreateReflector( | |
48 Compositor* mirroed_compositor, | |
49 Layer* mirroring_layer) { | |
50 return NULL; | |
51 } | |
52 | |
53 void DefaultContextFactory::RemoveReflector( | |
54 scoped_refptr<Reflector> reflector) { | |
55 } | |
56 | |
57 scoped_refptr<cc::ContextProvider> | |
58 DefaultContextFactory::OffscreenCompositorContextProvider() { | |
59 if (!offscreen_compositor_contexts_.get() || | |
60 !offscreen_compositor_contexts_->DestroyedOnMainThread()) { | |
61 offscreen_compositor_contexts_ = | |
62 webkit::gpu::ContextProviderInProcess::CreateOffscreen(); | |
63 } | |
64 return offscreen_compositor_contexts_; | |
65 } | |
66 | |
67 scoped_refptr<cc::ContextProvider> | |
68 DefaultContextFactory::SharedMainThreadContextProvider() { | |
69 if (shared_main_thread_contexts_ && | |
70 !shared_main_thread_contexts_->DestroyedOnMainThread()) | |
71 return shared_main_thread_contexts_; | |
72 | |
73 if (ui::Compositor::WasInitializedWithThread()) { | |
74 shared_main_thread_contexts_ = | |
75 webkit::gpu::ContextProviderInProcess::CreateOffscreen(); | |
76 } else { | |
77 shared_main_thread_contexts_ = | |
78 static_cast<webkit::gpu::ContextProviderInProcess*>( | |
79 OffscreenCompositorContextProvider().get()); | |
80 } | |
81 if (shared_main_thread_contexts_ && | |
82 !shared_main_thread_contexts_->BindToCurrentThread()) | |
83 shared_main_thread_contexts_ = NULL; | |
84 | |
85 return shared_main_thread_contexts_; | |
86 } | |
87 | |
88 void DefaultContextFactory::RemoveCompositor(Compositor* compositor) { | |
89 } | |
90 | |
91 bool DefaultContextFactory::DoesCreateTestContexts() { return false; } | |
92 | |
93 } // namespace ui | |
OLD | NEW |