OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/layers/delegated_renderer_layer_impl.h" | 5 #include "cc/layers/delegated_renderer_layer_impl.h" |
6 | 6 |
| 7 #include <algorithm> |
| 8 #include <utility> |
| 9 |
7 #include "base/bind.h" | 10 #include "base/bind.h" |
8 #include "cc/base/math_util.h" | 11 #include "cc/base/math_util.h" |
9 #include "cc/layers/append_quads_data.h" | 12 #include "cc/layers/append_quads_data.h" |
10 #include "cc/layers/quad_sink.h" | 13 #include "cc/layers/quad_sink.h" |
11 #include "cc/layers/render_pass_sink.h" | 14 #include "cc/layers/render_pass_sink.h" |
12 #include "cc/output/delegated_frame_data.h" | 15 #include "cc/output/delegated_frame_data.h" |
13 #include "cc/quads/render_pass_draw_quad.h" | 16 #include "cc/quads/render_pass_draw_quad.h" |
14 #include "cc/quads/solid_color_draw_quad.h" | 17 #include "cc/quads/solid_color_draw_quad.h" |
15 #include "cc/trees/layer_tree_impl.h" | 18 #include "cc/trees/layer_tree_impl.h" |
16 | 19 |
(...skipping 27 matching lines...) Expand all Loading... |
44 ResourceProvider::ResourceIdSet *remapped_resources, | 47 ResourceProvider::ResourceIdSet *remapped_resources, |
45 ResourceProvider::ResourceId id) { | 48 ResourceProvider::ResourceId id) { |
46 | 49 |
47 ResourceProvider::ResourceIdMap::const_iterator it = | 50 ResourceProvider::ResourceIdMap::const_iterator it = |
48 child_to_parent_map.find(id); | 51 child_to_parent_map.find(id); |
49 if (it == child_to_parent_map.end()) { | 52 if (it == child_to_parent_map.end()) { |
50 *invalid_frame = true; | 53 *invalid_frame = true; |
51 return 0; | 54 return 0; |
52 } | 55 } |
53 | 56 |
54 DCHECK(it->first == id); | 57 DCHECK_EQ(it->first, id); |
55 ResourceProvider::ResourceId remapped_id = it->second; | 58 ResourceProvider::ResourceId remapped_id = it->second; |
56 remapped_resources->insert(remapped_id); | 59 remapped_resources->insert(remapped_id); |
57 return remapped_id; | 60 return remapped_id; |
58 } | 61 } |
59 | 62 |
60 void DelegatedRendererLayerImpl::SetFrameData( | 63 void DelegatedRendererLayerImpl::SetFrameData( |
61 scoped_ptr<DelegatedFrameData> frame_data, | 64 scoped_ptr<DelegatedFrameData> frame_data, |
62 gfx::RectF damage_in_frame, | 65 gfx::RectF damage_in_frame, |
63 TransferableResourceArray* resources_for_ack) { | 66 TransferableResourceArray* resources_for_ack) { |
64 CreateChildIdIfNeeded(); | 67 CreateChildIdIfNeeded(); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 } | 156 } |
154 | 157 |
155 void DelegatedRendererLayerImpl::ClearRenderPasses() { | 158 void DelegatedRendererLayerImpl::ClearRenderPasses() { |
156 // FIXME: Release the resources back to the nested compositor. | 159 // FIXME: Release the resources back to the nested compositor. |
157 render_passes_index_by_id_.clear(); | 160 render_passes_index_by_id_.clear(); |
158 render_passes_in_draw_order_.clear(); | 161 render_passes_in_draw_order_.clear(); |
159 } | 162 } |
160 | 163 |
161 scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::CreateLayerImpl( | 164 scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::CreateLayerImpl( |
162 LayerTreeImpl* tree_impl) { | 165 LayerTreeImpl* tree_impl) { |
163 return DelegatedRendererLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>()
; | 166 return DelegatedRendererLayerImpl::Create( |
| 167 tree_impl, id()).PassAs<LayerImpl>(); |
164 } | 168 } |
165 | 169 |
166 void DelegatedRendererLayerImpl::DidLoseOutputSurface() { | 170 void DelegatedRendererLayerImpl::DidLoseOutputSurface() { |
167 ClearRenderPasses(); | 171 ClearRenderPasses(); |
168 ClearChildId(); | 172 ClearChildId(); |
169 } | 173 } |
170 | 174 |
171 gfx::Transform DelegatedRendererLayerImpl::DelegatedFrameToLayerSpaceTransform( | 175 gfx::Transform DelegatedRendererLayerImpl::DelegatedFrameToLayerSpaceTransform( |
172 gfx::Size frame_size) const { | 176 gfx::Size frame_size) const { |
173 gfx::Size display_size = display_size_.IsEmpty() ? bounds() : display_size_; | 177 gfx::Size display_size = display_size_.IsEmpty() ? bounds() : display_size_; |
(...skipping 29 matching lines...) Expand all Loading... |
203 | 207 |
204 void DelegatedRendererLayerImpl::AppendContributingRenderPasses( | 208 void DelegatedRendererLayerImpl::AppendContributingRenderPasses( |
205 RenderPassSink* render_pass_sink) { | 209 RenderPassSink* render_pass_sink) { |
206 DCHECK(HasContributingDelegatedRenderPasses()); | 210 DCHECK(HasContributingDelegatedRenderPasses()); |
207 | 211 |
208 for (size_t i = 0; i < render_passes_in_draw_order_.size() - 1; ++i) { | 212 for (size_t i = 0; i < render_passes_in_draw_order_.size() - 1; ++i) { |
209 RenderPass::Id output_render_pass_id = | 213 RenderPass::Id output_render_pass_id = |
210 ConvertDelegatedRenderPassId(render_passes_in_draw_order_[i]->id); | 214 ConvertDelegatedRenderPassId(render_passes_in_draw_order_[i]->id); |
211 | 215 |
212 // Don't clash with the RenderPass we generate if we own a RenderSurface. | 216 // Don't clash with the RenderPass we generate if we own a RenderSurface. |
213 DCHECK(output_render_pass_id.index > 0); | 217 DCHECK_GT(output_render_pass_id.index, 0); |
214 | 218 |
215 render_pass_sink->AppendRenderPass( | 219 render_pass_sink->AppendRenderPass( |
216 render_passes_in_draw_order_[i]->Copy(output_render_pass_id)); | 220 render_passes_in_draw_order_[i]->Copy(output_render_pass_id)); |
217 } | 221 } |
218 } | 222 } |
219 | 223 |
220 void DelegatedRendererLayerImpl::AppendQuads( | 224 void DelegatedRendererLayerImpl::AppendQuads( |
221 QuadSink* quad_sink, | 225 QuadSink* quad_sink, |
222 AppendQuadsData* append_quads_data) { | 226 AppendQuadsData* append_quads_data) { |
223 AppendRainbowDebugBorder(quad_sink, append_quads_data); | 227 AppendRainbowDebugBorder(quad_sink, append_quads_data); |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 void DelegatedRendererLayerImpl::ClearChildId() { | 420 void DelegatedRendererLayerImpl::ClearChildId() { |
417 if (!child_id_) | 421 if (!child_id_) |
418 return; | 422 return; |
419 | 423 |
420 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider(); | 424 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider(); |
421 resource_provider->DestroyChild(child_id_); | 425 resource_provider->DestroyChild(child_id_); |
422 child_id_ = 0; | 426 child_id_ = 0; |
423 } | 427 } |
424 | 428 |
425 } // namespace cc | 429 } // namespace cc |
OLD | NEW |