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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "cc/base/math_util.h" | 8 #include "cc/base/math_util.h" |
9 #include "cc/layers/append_quads_data.h" | 9 #include "cc/layers/append_quads_data.h" |
10 #include "cc/layers/quad_sink.h" | 10 #include "cc/layers/quad_sink.h" |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 render_passes_in_draw_order_.back()->damage_rect.Union(old_root_damage); | 152 render_passes_in_draw_order_.back()->damage_rect.Union(old_root_damage); |
153 } | 153 } |
154 | 154 |
155 void DelegatedRendererLayerImpl::ClearRenderPasses() { | 155 void DelegatedRendererLayerImpl::ClearRenderPasses() { |
156 // FIXME: Release the resources back to the nested compositor. | 156 // FIXME: Release the resources back to the nested compositor. |
157 render_passes_index_by_id_.clear(); | 157 render_passes_index_by_id_.clear(); |
158 render_passes_in_draw_order_.clear(); | 158 render_passes_in_draw_order_.clear(); |
159 } | 159 } |
160 | 160 |
161 scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::CreateLayerImpl( | 161 scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::CreateLayerImpl( |
162 LayerTreeImpl* treeImpl) { | 162 LayerTreeImpl* tree_impl) { |
163 return DelegatedRendererLayerImpl::Create(treeImpl, id()).PassAs<LayerImpl>(); | 163 return DelegatedRendererLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>()
; |
164 } | 164 } |
165 | 165 |
166 void DelegatedRendererLayerImpl::DidLoseOutputSurface() { | 166 void DelegatedRendererLayerImpl::DidLoseOutputSurface() { |
167 ClearRenderPasses(); | 167 ClearRenderPasses(); |
168 ClearChildId(); | 168 ClearChildId(); |
169 } | 169 } |
170 | 170 |
171 gfx::Transform DelegatedRendererLayerImpl::DelegatedFrameToLayerSpaceTransform( | 171 gfx::Transform DelegatedRendererLayerImpl::DelegatedFrameToLayerSpaceTransform( |
172 gfx::Size frame_size) const { | 172 gfx::Size frame_size) const { |
173 gfx::Size display_size = display_size_.IsEmpty() ? bounds() : display_size_; | 173 gfx::Size display_size = display_size_.IsEmpty() ? bounds() : display_size_; |
(...skipping 16 matching lines...) Expand all Loading... |
190 RenderPass::Id DelegatedRendererLayerImpl::NextContributingRenderPassId( | 190 RenderPass::Id DelegatedRendererLayerImpl::NextContributingRenderPassId( |
191 RenderPass::Id previous) const { | 191 RenderPass::Id previous) const { |
192 return RenderPass::Id(previous.layer_id, previous.index + 1); | 192 return RenderPass::Id(previous.layer_id, previous.index + 1); |
193 } | 193 } |
194 | 194 |
195 RenderPass::Id DelegatedRendererLayerImpl::ConvertDelegatedRenderPassId( | 195 RenderPass::Id DelegatedRendererLayerImpl::ConvertDelegatedRenderPassId( |
196 RenderPass::Id delegated_render_pass_id) const { | 196 RenderPass::Id delegated_render_pass_id) const { |
197 base::hash_map<RenderPass::Id, int>::const_iterator found = | 197 base::hash_map<RenderPass::Id, int>::const_iterator found = |
198 render_passes_index_by_id_.find(delegated_render_pass_id); | 198 render_passes_index_by_id_.find(delegated_render_pass_id); |
199 DCHECK(found != render_passes_index_by_id_.end()); | 199 DCHECK(found != render_passes_index_by_id_.end()); |
200 unsigned delegatedRenderPassIndex = found->second; | 200 unsigned delegated_render_pass_index = found->second; |
201 return RenderPass::Id(id(), IndexToId(delegatedRenderPassIndex)); | 201 return RenderPass::Id(id(), IndexToId(delegated_render_pass_index)); |
202 } | 202 } |
203 | 203 |
204 void DelegatedRendererLayerImpl::AppendContributingRenderPasses( | 204 void DelegatedRendererLayerImpl::AppendContributingRenderPasses( |
205 RenderPassSink* render_pass_sink) { | 205 RenderPassSink* render_pass_sink) { |
206 DCHECK(HasContributingDelegatedRenderPasses()); | 206 DCHECK(HasContributingDelegatedRenderPasses()); |
207 | 207 |
208 for (size_t i = 0; i < render_passes_in_draw_order_.size() - 1; ++i) { | 208 for (size_t i = 0; i < render_passes_in_draw_order_.size() - 1; ++i) { |
209 RenderPass::Id output_render_pass_id = | 209 RenderPass::Id output_render_pass_id = |
210 ConvertDelegatedRenderPassId(render_passes_in_draw_order_[i]->id); | 210 ConvertDelegatedRenderPassId(render_passes_in_draw_order_[i]->id); |
211 | 211 |
(...skipping 14 matching lines...) Expand all Loading... |
226 return; | 226 return; |
227 | 227 |
228 RenderPass::Id target_render_pass_id = append_quads_data->renderPassId; | 228 RenderPass::Id target_render_pass_id = append_quads_data->renderPassId; |
229 | 229 |
230 const RenderPass* root_delegated_render_pass = | 230 const RenderPass* root_delegated_render_pass = |
231 render_passes_in_draw_order_.back(); | 231 render_passes_in_draw_order_.back(); |
232 | 232 |
233 DCHECK(root_delegated_render_pass->output_rect.origin().IsOrigin()); | 233 DCHECK(root_delegated_render_pass->output_rect.origin().IsOrigin()); |
234 gfx::Size frame_size = root_delegated_render_pass->output_rect.size(); | 234 gfx::Size frame_size = root_delegated_render_pass->output_rect.size(); |
235 | 235 |
236 // If the index of the renderPassId is 0, then it is a renderPass generated | 236 // If the index of the EenderPassId is 0, then it is a RenderPass generated |
237 // for a layer in this compositor, not the delegated renderer. Then we want to | 237 // for a layer in this compositor, not the delegated renderer. Then we want to |
238 // merge our root renderPass with the target renderPass. Otherwise, it is some | 238 // merge our root RenderPass with the target RenderPass. Otherwise, it is some |
239 // renderPass which we added from the delegated renderer. | 239 // RenderPass which we added from the delegated renderer. |
240 bool should_merge_root_render_pass_with_target = !target_render_pass_id.index; | 240 bool should_merge_root_render_pass_with_target = !target_render_pass_id.index; |
241 if (should_merge_root_render_pass_with_target) { | 241 if (should_merge_root_render_pass_with_target) { |
242 // Verify that the renderPass we are appending to is created our | 242 // Verify that the RenderPass we are appending to is created our |
243 // renderTarget. | 243 // render_target. |
244 DCHECK(target_render_pass_id.layer_id == render_target()->id()); | 244 DCHECK(target_render_pass_id.layer_id == render_target()->id()); |
245 | 245 |
246 AppendRenderPassQuads( | 246 AppendRenderPassQuads( |
247 quad_sink, append_quads_data, root_delegated_render_pass, frame_size); | 247 quad_sink, append_quads_data, root_delegated_render_pass, frame_size); |
248 } else { | 248 } else { |
249 // Verify that the renderPass we are appending to was created by us. | 249 // Verify that the RenderPass we are appending to was created by us. |
250 DCHECK(target_render_pass_id.layer_id == id()); | 250 DCHECK(target_render_pass_id.layer_id == id()); |
251 | 251 |
252 int render_pass_index = IdToIndex(target_render_pass_id.index); | 252 int render_pass_index = IdToIndex(target_render_pass_id.index); |
253 const RenderPass* delegated_render_pass = | 253 const RenderPass* delegated_render_pass = |
254 render_passes_in_draw_order_[render_pass_index]; | 254 render_passes_in_draw_order_[render_pass_index]; |
255 AppendRenderPassQuads( | 255 AppendRenderPassQuads( |
256 quad_sink, append_quads_data, delegated_render_pass, frame_size); | 256 quad_sink, append_quads_data, delegated_render_pass, frame_size); |
257 } | 257 } |
258 } | 258 } |
259 | 259 |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 void DelegatedRendererLayerImpl::ClearChildId() { | 416 void DelegatedRendererLayerImpl::ClearChildId() { |
417 if (!child_id_) | 417 if (!child_id_) |
418 return; | 418 return; |
419 | 419 |
420 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider(); | 420 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider(); |
421 resource_provider->DestroyChild(child_id_); | 421 resource_provider->DestroyChild(child_id_); |
422 child_id_ = 0; | 422 child_id_ = 0; |
423 } | 423 } |
424 | 424 |
425 } // namespace cc | 425 } // namespace cc |
OLD | NEW |