OLD | NEW |
| (Empty) |
1 // Copyright 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 CC_DELEGATED_RENDERER_LAYER_IMPL_H_ | |
6 #define CC_DELEGATED_RENDERER_LAYER_IMPL_H_ | |
7 | |
8 #include "base/memory/scoped_ptr.h" | |
9 #include "cc/base/cc_export.h" | |
10 #include "cc/base/scoped_ptr_vector.h" | |
11 #include "cc/layer_impl.h" | |
12 | |
13 namespace cc { | |
14 class DelegatedFrameData; | |
15 | |
16 class CC_EXPORT DelegatedRendererLayerImpl : public LayerImpl { | |
17 public: | |
18 static scoped_ptr<DelegatedRendererLayerImpl> Create( | |
19 LayerTreeImpl* tree_impl, int id) { | |
20 return make_scoped_ptr(new DelegatedRendererLayerImpl(tree_impl, id)); | |
21 } | |
22 virtual ~DelegatedRendererLayerImpl(); | |
23 | |
24 // LayerImpl overrides. | |
25 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl*) OVERRIDE; | |
26 virtual bool HasDelegatedContent() const OVERRIDE; | |
27 virtual bool HasContributingDelegatedRenderPasses() const OVERRIDE; | |
28 virtual RenderPass::Id FirstContributingRenderPassId() const OVERRIDE; | |
29 virtual RenderPass::Id NextContributingRenderPassId( | |
30 RenderPass::Id previous) const OVERRIDE; | |
31 virtual void DidLoseOutputSurface() OVERRIDE; | |
32 virtual void AppendQuads(QuadSink* quad_sink, | |
33 AppendQuadsData* append_quads_data) OVERRIDE; | |
34 | |
35 void AppendContributingRenderPasses(RenderPassSink* render_pass_sink); | |
36 | |
37 void SetFrameData(scoped_ptr<DelegatedFrameData> frame_data, | |
38 gfx::RectF damage_in_frame, | |
39 TransferableResourceArray* resources_for_ack); | |
40 | |
41 void SetDisplaySize(gfx::Size size); | |
42 | |
43 protected: | |
44 DelegatedRendererLayerImpl(LayerTreeImpl* tree_impl, int id); | |
45 | |
46 int ChildIdForTesting() const { return child_id_; } | |
47 const ScopedPtrVector<RenderPass>& RenderPassesInDrawOrderForTesting() const { | |
48 return render_passes_in_draw_order_; | |
49 } | |
50 const ResourceProvider::ResourceIdSet& ResourcesForTesting() const { | |
51 return resources_; | |
52 } | |
53 | |
54 private: | |
55 // Creates an ID with the resource provider for the child renderer | |
56 // that will be sending quads to the layer. | |
57 void CreateChildIdIfNeeded(); | |
58 void ClearChildId(); | |
59 | |
60 void SetRenderPasses( | |
61 ScopedPtrVector<RenderPass>* render_passes_in_draw_order); | |
62 void ClearRenderPasses(); | |
63 | |
64 RenderPass::Id ConvertDelegatedRenderPassId( | |
65 RenderPass::Id delegated_render_pass_id) const; | |
66 | |
67 gfx::Transform DelegatedFrameToLayerSpaceTransform(gfx::Size frame_size) | |
68 const; | |
69 | |
70 void AppendRenderPassQuads( | |
71 QuadSink* quad_sink, | |
72 AppendQuadsData* append_quads_data, | |
73 const RenderPass* delegated_render_pass, | |
74 gfx::Size frame_size) const; | |
75 | |
76 // LayerImpl overrides. | |
77 virtual const char* LayerTypeAsString() const OVERRIDE; | |
78 | |
79 ScopedPtrVector<RenderPass> render_passes_in_draw_order_; | |
80 base::hash_map<RenderPass::Id, int> render_passes_index_by_id_; | |
81 ResourceProvider::ResourceIdSet resources_; | |
82 | |
83 gfx::Size display_size_; | |
84 int child_id_; | |
85 }; | |
86 | |
87 } | |
88 | |
89 #endif // CC_DELEGATED_RENDERER_LAYER_IMPL_H_ | |
OLD | NEW |