OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/render_surface_impl.h" | 5 #include "cc/render_surface_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
11 #include "cc/damage_tracker.h" | 11 #include "cc/damage_tracker.h" |
12 #include "cc/debug_border_draw_quad.h" | 12 #include "cc/debug_border_draw_quad.h" |
13 #include "cc/debug_colors.h" | 13 #include "cc/debug_colors.h" |
14 #include "cc/delegated_renderer_layer_impl.h" | 14 #include "cc/delegated_renderer_layer_impl.h" |
15 #include "cc/layer_impl.h" | 15 #include "cc/layer_impl.h" |
16 #include "cc/math_util.h" | 16 #include "cc/math_util.h" |
17 #include "cc/quad_sink.h" | 17 #include "cc/quad_sink.h" |
18 #include "cc/render_pass.h" | 18 #include "cc/render_pass.h" |
19 #include "cc/render_pass_draw_quad.h" | 19 #include "cc/render_pass_draw_quad.h" |
20 #include "cc/render_pass_sink.h" | 20 #include "cc/render_pass_sink.h" |
21 #include "cc/shared_quad_state.h" | 21 #include "cc/shared_quad_state.h" |
22 #include "third_party/skia/include/core/SkImageFilter.h" | 22 #include "third_party/skia/include/core/SkImageFilter.h" |
23 #include "ui/gfx/rect_conversions.h" | 23 #include "ui/gfx/rect_conversions.h" |
24 #include <public/WebTransformationMatrix.h> | 24 #include "ui/gfx/transform.h" |
25 | |
26 using WebKit::WebTransformationMatrix; | |
27 | 25 |
28 namespace cc { | 26 namespace cc { |
29 | 27 |
30 RenderSurfaceImpl::RenderSurfaceImpl(LayerImpl* owningLayer) | 28 RenderSurfaceImpl::RenderSurfaceImpl(LayerImpl* owningLayer) |
31 : m_owningLayer(owningLayer) | 29 : m_owningLayer(owningLayer) |
32 , m_surfacePropertyChanged(false) | 30 , m_surfacePropertyChanged(false) |
33 , m_drawOpacity(1) | 31 , m_drawOpacity(1) |
34 , m_drawOpacityIsAnimating(false) | 32 , m_drawOpacityIsAnimating(false) |
35 , m_targetSurfaceTransformsAreAnimating(false) | 33 , m_targetSurfaceTransformsAreAnimating(false) |
36 , m_screenSpaceTransformsAreAnimating(false) | 34 , m_screenSpaceTransformsAreAnimating(false) |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 std::string indentStr = indentString(indent); | 71 std::string indentStr = indentString(indent); |
74 str->append(indentStr); | 72 str->append(indentStr); |
75 base::StringAppendF(str, "%s\n", name().data()); | 73 base::StringAppendF(str, "%s\n", name().data()); |
76 | 74 |
77 indentStr.append(" "); | 75 indentStr.append(" "); |
78 str->append(indentStr); | 76 str->append(indentStr); |
79 base::StringAppendF(str, "contentRect: (%d, %d, %d, %d)\n", m_contentRect.x(
), m_contentRect.y(), m_contentRect.width(), m_contentRect.height()); | 77 base::StringAppendF(str, "contentRect: (%d, %d, %d, %d)\n", m_contentRect.x(
), m_contentRect.y(), m_contentRect.width(), m_contentRect.height()); |
80 | 78 |
81 str->append(indentStr); | 79 str->append(indentStr); |
82 base::StringAppendF(str, "drawTransform: %f, %f, %f, %f, %f, %f, %f, %f, %f,
%f, %f, %f, %f, %f, %f, %f\n", | 80 base::StringAppendF(str, "drawTransform: %f, %f, %f, %f, %f, %f, %f, %f, %f,
%f, %f, %f, %f, %f, %f, %f\n", |
83 m_drawTransform.m11(), m_drawTransform.m12(), m_drawTransform.m13(), m_d
rawTransform.m14(), | 81 m_drawTransform.matrix().getDouble(0, 0), m_drawTransform.matrix().getDo
uble(0, 1), m_drawTransform.matrix().getDouble(0, 2), m_drawTransform.matrix().g
etDouble(0, 3), |
84 m_drawTransform.m21(), m_drawTransform.m22(), m_drawTransform.m23(), m_d
rawTransform.m24(), | 82 m_drawTransform.matrix().getDouble(1, 0), m_drawTransform.matrix().getDo
uble(1, 1), m_drawTransform.matrix().getDouble(1, 2), m_drawTransform.matrix().g
etDouble(1, 3), |
85 m_drawTransform.m31(), m_drawTransform.m32(), m_drawTransform.m33(), m_d
rawTransform.m34(), | 83 m_drawTransform.matrix().getDouble(2, 0), m_drawTransform.matrix().getDo
uble(2, 1), m_drawTransform.matrix().getDouble(2, 2), m_drawTransform.matrix().g
etDouble(2, 3), |
86 m_drawTransform.m41(), m_drawTransform.m42(), m_drawTransform.m43(), m_d
rawTransform.m44()); | 84 m_drawTransform.matrix().getDouble(3, 0), m_drawTransform.matrix().getDo
uble(3, 1), m_drawTransform.matrix().getDouble(3, 2), m_drawTransform.matrix().g
etDouble(3, 3)); |
87 | 85 |
88 str->append(indentStr); | 86 str->append(indentStr); |
89 base::StringAppendF(str, "damageRect is pos(%f, %f), size(%f, %f)\n", | 87 base::StringAppendF(str, "damageRect is pos(%f, %f), size(%f, %f)\n", |
90 m_damageTracker->currentDamageRect().x(), m_damageTracker->currentDamage
Rect().y(), | 88 m_damageTracker->currentDamageRect().x(), m_damageTracker->currentDamage
Rect().y(), |
91 m_damageTracker->currentDamageRect().width(), m_damageTracker->currentDa
mageRect().height()); | 89 m_damageTracker->currentDamageRect().width(), m_damageTracker->currentDa
mageRect().height()); |
92 } | 90 } |
93 | 91 |
94 int RenderSurfaceImpl::owningLayerId() const | 92 int RenderSurfaceImpl::owningLayerId() const |
95 { | 93 { |
96 return m_owningLayer ? m_owningLayer->id() : 0; | 94 return m_owningLayer ? m_owningLayer->id() : 0; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 SkRefCnt_SafeAssign(pass->filter, m_owningLayer->filter()); | 190 SkRefCnt_SafeAssign(pass->filter, m_owningLayer->filter()); |
193 pass->background_filters = m_owningLayer->backgroundFilters(); | 191 pass->background_filters = m_owningLayer->backgroundFilters(); |
194 passSink.appendRenderPass(pass.Pass()); | 192 passSink.appendRenderPass(pass.Pass()); |
195 } | 193 } |
196 | 194 |
197 void RenderSurfaceImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQ
uadsData, bool forReplica, RenderPass::Id renderPassId) | 195 void RenderSurfaceImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQ
uadsData, bool forReplica, RenderPass::Id renderPassId) |
198 { | 196 { |
199 DCHECK(!forReplica || m_owningLayer->hasReplica()); | 197 DCHECK(!forReplica || m_owningLayer->hasReplica()); |
200 | 198 |
201 gfx::Rect clippedRectInTarget = computeClippedRectInTarget(m_owningLayer); | 199 gfx::Rect clippedRectInTarget = computeClippedRectInTarget(m_owningLayer); |
202 const WebTransformationMatrix& drawTransform = forReplica ? m_replicaDrawTra
nsform : m_drawTransform; | 200 const gfx::Transform& drawTransform = forReplica ? m_replicaDrawTransform :
m_drawTransform; |
203 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(SharedQuadSta
te::Create()); | 201 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(SharedQuadSta
te::Create()); |
204 sharedQuadState->SetAll(drawTransform, m_contentRect, clippedRectInTarget, m
_clipRect, m_isClipped, m_drawOpacity); | 202 sharedQuadState->SetAll(drawTransform, m_contentRect, clippedRectInTarget, m
_clipRect, m_isClipped, m_drawOpacity); |
205 | 203 |
206 if (m_owningLayer->showDebugBorders()) { | 204 if (m_owningLayer->showDebugBorders()) { |
207 SkColor color = forReplica ? DebugColors::SurfaceReplicaBorderColor() :
DebugColors::SurfaceBorderColor(); | 205 SkColor color = forReplica ? DebugColors::SurfaceReplicaBorderColor() :
DebugColors::SurfaceBorderColor(); |
208 float width = forReplica ? DebugColors::SurfaceReplicaBorderWidth(m_owni
ngLayer->layerTreeHostImpl()) : DebugColors::SurfaceBorderWidth(m_owningLayer->l
ayerTreeHostImpl()); | 206 float width = forReplica ? DebugColors::SurfaceReplicaBorderWidth(m_owni
ngLayer->layerTreeHostImpl()) : DebugColors::SurfaceBorderWidth(m_owningLayer->l
ayerTreeHostImpl()); |
209 scoped_ptr<DebugBorderDrawQuad> debugBorderQuad = DebugBorderDrawQuad::C
reate(); | 207 scoped_ptr<DebugBorderDrawQuad> debugBorderQuad = DebugBorderDrawQuad::C
reate(); |
210 debugBorderQuad->SetNew(sharedQuadState, contentRect(), color, width); | 208 debugBorderQuad->SetNew(sharedQuadState, contentRect(), color, width); |
211 quadSink.append(debugBorderQuad.PassAs<DrawQuad>(), appendQuadsData); | 209 quadSink.append(debugBorderQuad.PassAs<DrawQuad>(), appendQuadsData); |
212 } | 210 } |
(...skipping 28 matching lines...) Expand all Loading... |
241 ResourceProvider::ResourceId maskResourceId = maskLayer ? maskLayer->content
sResourceId() : 0; | 239 ResourceProvider::ResourceId maskResourceId = maskLayer ? maskLayer->content
sResourceId() : 0; |
242 gfx::Rect contentsChangedSinceLastFrame = contentsChanged() ? m_contentRect
: gfx::Rect(); | 240 gfx::Rect contentsChangedSinceLastFrame = contentsChanged() ? m_contentRect
: gfx::Rect(); |
243 | 241 |
244 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); | 242 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); |
245 quad->SetNew(sharedQuadState, contentRect(), renderPassId, forReplica, maskR
esourceId, contentsChangedSinceLastFrame, | 243 quad->SetNew(sharedQuadState, contentRect(), renderPassId, forReplica, maskR
esourceId, contentsChangedSinceLastFrame, |
246 maskTexCoordScaleX, maskTexCoordScaleY, maskTexCoordOffsetX, ma
skTexCoordOffsetY); | 244 maskTexCoordScaleX, maskTexCoordScaleY, maskTexCoordOffsetX, ma
skTexCoordOffsetY); |
247 quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); | 245 quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); |
248 } | 246 } |
249 | 247 |
250 } // namespace cc | 248 } // namespace cc |
OLD | NEW |