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 "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "cc/delegated_renderer_layer_impl.h" | 7 #include "cc/delegated_renderer_layer_impl.h" |
8 | 8 |
9 #include "cc/append_quads_data.h" | 9 #include "cc/append_quads_data.h" |
10 #include "cc/layer_tree_host_impl.h" | 10 #include "cc/layer_tree_host_impl.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 using namespace cc; | 29 using namespace cc; |
30 using namespace WebKitTests; | 30 using namespace WebKitTests; |
31 | 31 |
32 namespace { | 32 namespace { |
33 | 33 |
34 class DelegatedRendererLayerImplTest : public testing::Test, public LayerTreeHos
tImplClient { | 34 class DelegatedRendererLayerImplTest : public testing::Test, public LayerTreeHos
tImplClient { |
35 public: | 35 public: |
36 DelegatedRendererLayerImplTest() | 36 DelegatedRendererLayerImplTest() |
37 { | 37 { |
38 LayerTreeSettings settings; | 38 LayerTreeSettings settings; |
39 settings.minimumOcclusionTrackingSize = IntSize(); | 39 settings.minimumOcclusionTrackingSize = gfx::Size(); |
40 | 40 |
41 m_hostImpl = LayerTreeHostImpl::create(settings, this); | 41 m_hostImpl = LayerTreeHostImpl::create(settings, this); |
42 m_hostImpl->initializeRenderer(createContext()); | 42 m_hostImpl->initializeRenderer(createContext()); |
43 m_hostImpl->setViewportSize(IntSize(10, 10), IntSize(10, 10)); | 43 m_hostImpl->setViewportSize(gfx::Size(10, 10), gfx::Size(10, 10)); |
44 } | 44 } |
45 | 45 |
46 // LayerTreeHostImplClient implementation. | 46 // LayerTreeHostImplClient implementation. |
47 virtual void didLoseContextOnImplThread() OVERRIDE { } | 47 virtual void didLoseContextOnImplThread() OVERRIDE { } |
48 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } | 48 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } |
49 virtual void onVSyncParametersChanged(double, double) OVERRIDE { } | 49 virtual void onVSyncParametersChanged(double, double) OVERRIDE { } |
50 virtual void onCanDrawStateChanged(bool) OVERRIDE { } | 50 virtual void onCanDrawStateChanged(bool) OVERRIDE { } |
51 virtual void setNeedsRedrawOnImplThread() OVERRIDE { } | 51 virtual void setNeedsRedrawOnImplThread() OVERRIDE { } |
52 virtual void setNeedsCommitOnImplThread() OVERRIDE { } | 52 virtual void setNeedsCommitOnImplThread() OVERRIDE { } |
53 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, double wallClockTime) OVERRIDE { } | 53 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<Animatio
nEventsVector>, double wallClockTime) OVERRIDE { } |
54 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes, int
priorityCutoff) OVERRIDE { return true; } | 54 virtual bool reduceContentsTextureMemoryOnImplThread(size_t limitBytes, int
priorityCutoff) OVERRIDE { return true; } |
55 | 55 |
56 protected: | 56 protected: |
57 scoped_ptr<GraphicsContext> createContext() | 57 scoped_ptr<GraphicsContext> createContext() |
58 { | 58 { |
59 return FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGrap
hicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<GraphicsContext>(); | 59 return FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGrap
hicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<GraphicsContext>(); |
60 } | 60 } |
61 | 61 |
62 DebugScopedSetImplThread m_alwaysImplThread; | 62 DebugScopedSetImplThread m_alwaysImplThread; |
63 DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked; | 63 DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked; |
64 | 64 |
65 scoped_ptr<LayerTreeHostImpl> m_hostImpl; | 65 scoped_ptr<LayerTreeHostImpl> m_hostImpl; |
66 }; | 66 }; |
67 | 67 |
68 static TestRenderPass* addRenderPass(ScopedPtrVector<RenderPass>& passList, Rend
erPass::Id id, IntRect outputRect, WebTransformationMatrix rootTransform) | 68 static TestRenderPass* addRenderPass(ScopedPtrVector<RenderPass>& passList, Rend
erPass::Id id, gfx::Rect outputRect, WebTransformationMatrix rootTransform) |
69 { | 69 { |
70 scoped_ptr<TestRenderPass> pass(TestRenderPass::create(id, outputRect, rootT
ransform)); | 70 scoped_ptr<TestRenderPass> pass(TestRenderPass::create(id, outputRect, rootT
ransform)); |
71 TestRenderPass* saved = pass.get(); | 71 TestRenderPass* saved = pass.get(); |
72 passList.append(pass.PassAs<RenderPass>()); | 72 passList.append(pass.PassAs<RenderPass>()); |
73 return saved; | 73 return saved; |
74 } | 74 } |
75 | 75 |
76 static SolidColorDrawQuad* addQuad(TestRenderPass* pass, IntRect rect, SkColor c
olor) | 76 static SolidColorDrawQuad* addQuad(TestRenderPass* pass, gfx::Rect rect, SkColor
color) |
77 { | 77 { |
78 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); | 78 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); |
79 AppendQuadsData data(pass->id()); | 79 AppendQuadsData data(pass->id()); |
80 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
create(WebTransformationMatrix(), rect, rect, 1, false)); | 80 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadState::
create(WebTransformationMatrix(), rect, rect, 1, false)); |
81 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::create(sharedState
, rect, color); | 81 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::create(sharedState
, rect, color); |
82 SolidColorDrawQuad* quadPtr = quad.get(); | 82 SolidColorDrawQuad* quadPtr = quad.get(); |
83 quadSink.append(quad.PassAs<DrawQuad>(), data); | 83 quadSink.append(quad.PassAs<DrawQuad>(), data); |
84 return quadPtr; | 84 return quadPtr; |
85 } | 85 } |
86 | 86 |
(...skipping 10 matching lines...) Expand all Loading... |
97 class DelegatedRendererLayerImplTestSimple : public DelegatedRendererLayerImplTe
st { | 97 class DelegatedRendererLayerImplTestSimple : public DelegatedRendererLayerImplTe
st { |
98 public: | 98 public: |
99 DelegatedRendererLayerImplTestSimple() | 99 DelegatedRendererLayerImplTestSimple() |
100 : DelegatedRendererLayerImplTest() | 100 : DelegatedRendererLayerImplTest() |
101 { | 101 { |
102 scoped_ptr<LayerImpl> rootLayer = SolidColorLayerImpl::create(1).PassAs<
LayerImpl>(); | 102 scoped_ptr<LayerImpl> rootLayer = SolidColorLayerImpl::create(1).PassAs<
LayerImpl>(); |
103 scoped_ptr<LayerImpl> layerBefore = SolidColorLayerImpl::create(2).PassA
s<LayerImpl>(); | 103 scoped_ptr<LayerImpl> layerBefore = SolidColorLayerImpl::create(2).PassA
s<LayerImpl>(); |
104 scoped_ptr<LayerImpl> layerAfter = SolidColorLayerImpl::create(3).PassAs
<LayerImpl>(); | 104 scoped_ptr<LayerImpl> layerAfter = SolidColorLayerImpl::create(3).PassAs
<LayerImpl>(); |
105 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(4); | 105 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(4); |
106 | 106 |
107 m_hostImpl->setViewportSize(IntSize(100, 100), IntSize(100, 100)); | 107 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
108 rootLayer->setBounds(IntSize(100, 100)); | 108 rootLayer->setBounds(gfx::Size(100, 100)); |
109 | 109 |
110 layerBefore->setPosition(IntPoint(20, 20)); | 110 layerBefore->setPosition(gfx::Point(20, 20)); |
111 layerBefore->setBounds(IntSize(14, 14)); | 111 layerBefore->setBounds(gfx::Size(14, 14)); |
112 layerBefore->setContentBounds(IntSize(14, 14)); | 112 layerBefore->setContentBounds(gfx::Size(14, 14)); |
113 layerBefore->setDrawsContent(true); | 113 layerBefore->setDrawsContent(true); |
114 layerBefore->setForceRenderSurface(true); | 114 layerBefore->setForceRenderSurface(true); |
115 | 115 |
116 layerAfter->setPosition(IntPoint(5, 5)); | 116 layerAfter->setPosition(gfx::Point(5, 5)); |
117 layerAfter->setBounds(IntSize(15, 15)); | 117 layerAfter->setBounds(gfx::Size(15, 15)); |
118 layerAfter->setContentBounds(IntSize(15, 15)); | 118 layerAfter->setContentBounds(gfx::Size(15, 15)); |
119 layerAfter->setDrawsContent(true); | 119 layerAfter->setDrawsContent(true); |
120 layerAfter->setForceRenderSurface(true); | 120 layerAfter->setForceRenderSurface(true); |
121 | 121 |
122 delegatedRendererLayer->setPosition(IntPoint(3, 3)); | 122 delegatedRendererLayer->setPosition(gfx::Point(3, 3)); |
123 delegatedRendererLayer->setBounds(IntSize(10, 10)); | 123 delegatedRendererLayer->setBounds(gfx::Size(10, 10)); |
124 delegatedRendererLayer->setContentBounds(IntSize(10, 10)); | 124 delegatedRendererLayer->setContentBounds(gfx::Size(10, 10)); |
125 delegatedRendererLayer->setDrawsContent(true); | 125 delegatedRendererLayer->setDrawsContent(true); |
126 WebTransformationMatrix transform; | 126 WebTransformationMatrix transform; |
127 transform.translate(1, 1); | 127 transform.translate(1, 1); |
128 delegatedRendererLayer->setTransform(transform); | 128 delegatedRendererLayer->setTransform(transform); |
129 | 129 |
130 ScopedPtrVector<RenderPass> delegatedRenderPasses; | 130 ScopedPtrVector<RenderPass> delegatedRenderPasses; |
131 TestRenderPass* pass1 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 6), IntRect(6, 6, 6, 6), WebTransformationMatrix()); | 131 TestRenderPass* pass1 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 6), gfx::Rect(6, 6, 6, 6), WebTransformationMatrix()); |
132 addQuad(pass1, IntRect(0, 0, 6, 6), 33u); | 132 addQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u); |
133 TestRenderPass* pass2 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 7), IntRect(7, 7, 7, 7), WebTransformationMatrix()); | 133 TestRenderPass* pass2 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 7), gfx::Rect(7, 7, 7, 7), WebTransformationMatrix()); |
134 addQuad(pass2, IntRect(0, 0, 7, 7), 22u); | 134 addQuad(pass2, gfx::Rect(0, 0, 7, 7), 22u); |
135 addRenderPassQuad(pass2, pass1); | 135 addRenderPassQuad(pass2, pass1); |
136 TestRenderPass* pass3 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 8), IntRect(8, 8, 8, 8), WebTransformationMatrix()); | 136 TestRenderPass* pass3 = addRenderPass(delegatedRenderPasses, RenderPass:
:Id(9, 8), gfx::Rect(8, 8, 8, 8), WebTransformationMatrix()); |
137 addRenderPassQuad(pass3, pass2); | 137 addRenderPassQuad(pass3, pass2); |
138 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); | 138 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); |
139 | 139 |
140 // The RenderPasses should be taken by the layer. | 140 // The RenderPasses should be taken by the layer. |
141 EXPECT_EQ(0u, delegatedRenderPasses.size()); | 141 EXPECT_EQ(0u, delegatedRenderPasses.size()); |
142 | 142 |
143 m_rootLayerPtr = rootLayer.get(); | 143 m_rootLayerPtr = rootLayer.get(); |
144 m_layerBeforePtr = layerBefore.get(); | 144 m_layerBeforePtr = layerBefore.get(); |
145 m_layerAfterPtr = layerAfter.get(); | 145 m_layerAfterPtr = layerAfter.get(); |
146 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); | 146 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 179 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
180 // And all other RenderPasses should be non-delegated. | 180 // And all other RenderPasses should be non-delegated. |
181 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); | 181 EXPECT_NE(4, frame.renderPasses[0]->id().layerId); |
182 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 182 EXPECT_EQ(0, frame.renderPasses[0]->id().index); |
183 EXPECT_NE(4, frame.renderPasses[3]->id().layerId); | 183 EXPECT_NE(4, frame.renderPasses[3]->id().layerId); |
184 EXPECT_EQ(0, frame.renderPasses[3]->id().index); | 184 EXPECT_EQ(0, frame.renderPasses[3]->id().index); |
185 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); | 185 EXPECT_NE(4, frame.renderPasses[4]->id().layerId); |
186 EXPECT_EQ(0, frame.renderPasses[4]->id().index); | 186 EXPECT_EQ(0, frame.renderPasses[4]->id().index); |
187 | 187 |
188 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. | 188 // The DelegatedRendererLayer should have added its RenderPasses to the fram
e in order. |
189 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); | 189 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[1]->outputRect()); |
190 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); | 190 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[2]->outputRect()); |
191 } | 191 } |
192 | 192 |
193 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) | 193 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToContributingRenderPasses
) |
194 { | 194 { |
195 LayerTreeHostImpl::FrameData frame; | 195 LayerTreeHostImpl::FrameData frame; |
196 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 196 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
197 m_hostImpl->drawLayers(frame); | 197 m_hostImpl->drawLayers(frame); |
198 m_hostImpl->didDrawAllLayers(frame); | 198 m_hostImpl->didDrawAllLayers(frame); |
199 | 199 |
200 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 200 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
201 ASSERT_EQ(5u, frame.renderPasses.size()); | 201 ASSERT_EQ(5u, frame.renderPasses.size()); |
202 | 202 |
203 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 203 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
204 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 204 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
205 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 205 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
206 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 206 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
207 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 207 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
208 | 208 |
209 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 209 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
210 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 210 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
211 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 211 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
quadRect()); |
212 | 212 |
213 // Verify it added the right quads. | 213 // Verify it added the right quads. |
214 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 214 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
215 EXPECT_RECT_EQ(IntRect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->qu
adRect()); | 215 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
quadRect()); |
216 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->qu
adRect()); | 216 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
quadRect()); |
217 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 217 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
218 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 218 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
quadRect()); |
219 } | 219 } |
220 | 220 |
221 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) | 221 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) |
222 { | 222 { |
223 LayerTreeHostImpl::FrameData frame; | 223 LayerTreeHostImpl::FrameData frame; |
224 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 224 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
225 m_hostImpl->drawLayers(frame); | 225 m_hostImpl->drawLayers(frame); |
226 m_hostImpl->didDrawAllLayers(frame); | 226 m_hostImpl->didDrawAllLayers(frame); |
227 | 227 |
228 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 228 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
229 ASSERT_EQ(5u, frame.renderPasses.size()); | 229 ASSERT_EQ(5u, frame.renderPasses.size()); |
230 | 230 |
231 // The layer's target is the RenderPass from m_layerAfter. | 231 // The layer's target is the RenderPass from m_layerAfter. |
232 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id()); | 232 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id()); |
233 | 233 |
234 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 234 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
235 // The m_layerAfter also adds one quad. | 235 // The m_layerAfter also adds one quad. |
236 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); | 236 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); |
237 | 237 |
238 // Verify it added the right quads. | 238 // Verify it added the right quads. |
239 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->qu
adRect()); | 239 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
quadRect()); |
240 | 240 |
241 // Its target layer should have a quad as well. | 241 // Its target layer should have a quad as well. |
242 EXPECT_RECT_EQ(IntRect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]->
quadRect()); | 242 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]
->quadRect()); |
243 } | 243 } |
244 | 244 |
245 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) | 245 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) |
246 { | 246 { |
247 LayerTreeHostImpl::FrameData frame; | 247 LayerTreeHostImpl::FrameData frame; |
248 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 248 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
249 m_hostImpl->drawLayers(frame); | 249 m_hostImpl->drawLayers(frame); |
250 m_hostImpl->didDrawAllLayers(frame); | 250 m_hostImpl->didDrawAllLayers(frame); |
251 | 251 |
252 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 252 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 ASSERT_EQ(6u, frame.renderPasses.size()); | 317 ASSERT_EQ(6u, frame.renderPasses.size()); |
318 | 318 |
319 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 319 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
320 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 320 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
321 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 321 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
322 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 322 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
323 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 323 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
324 | 324 |
325 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 325 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
326 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 326 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
327 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 327 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
quadRect()); |
328 | 328 |
329 // Verify it added the right quads. | 329 // Verify it added the right quads. |
330 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 330 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
331 EXPECT_RECT_EQ(IntRect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->qu
adRect()); | 331 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
quadRect()); |
332 EXPECT_RECT_EQ(IntRect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->qu
adRect()); | 332 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
quadRect()); |
333 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 333 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
334 EXPECT_RECT_EQ(IntRect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->qu
adRect()); | 334 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
quadRect()); |
335 } | 335 } |
336 | 336 |
337 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) | 337 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) |
338 { | 338 { |
339 LayerTreeHostImpl::FrameData frame; | 339 LayerTreeHostImpl::FrameData frame; |
340 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 340 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
341 m_hostImpl->drawLayers(frame); | 341 m_hostImpl->drawLayers(frame); |
342 m_hostImpl->didDrawAllLayers(frame); | 342 m_hostImpl->didDrawAllLayers(frame); |
343 | 343 |
344 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 344 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
345 ASSERT_EQ(6u, frame.renderPasses.size()); | 345 ASSERT_EQ(6u, frame.renderPasses.size()); |
346 | 346 |
347 // The layer's target is the RenderPass owned by itself. | 347 // The layer's target is the RenderPass owned by itself. |
348 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id()); | 348 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id()); |
349 | 349 |
350 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 350 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
351 // The m_layerAfter also adds one quad. | 351 // The m_layerAfter also adds one quad. |
352 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); | 352 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); |
353 | 353 |
354 // Verify it added the right quads. | 354 // Verify it added the right quads. |
355 EXPECT_RECT_EQ(IntRect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->qu
adRect()); | 355 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
quadRect()); |
356 } | 356 } |
357 | 357 |
358 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) | 358 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) |
359 { | 359 { |
360 LayerTreeHostImpl::FrameData frame; | 360 LayerTreeHostImpl::FrameData frame; |
361 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 361 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
362 m_hostImpl->drawLayers(frame); | 362 m_hostImpl->drawLayers(frame); |
363 m_hostImpl->didDrawAllLayers(frame); | 363 m_hostImpl->didDrawAllLayers(frame); |
364 | 364 |
365 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 365 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
(...skipping 12 matching lines...) Expand all Loading... |
378 } | 378 } |
379 | 379 |
380 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { | 380 class DelegatedRendererLayerImplTestSharedData : public DelegatedRendererLayerIm
plTest { |
381 public: | 381 public: |
382 DelegatedRendererLayerImplTestSharedData() | 382 DelegatedRendererLayerImplTestSharedData() |
383 : DelegatedRendererLayerImplTest() | 383 : DelegatedRendererLayerImplTest() |
384 { | 384 { |
385 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); | 385 scoped_ptr<LayerImpl> rootLayer = LayerImpl::create(1); |
386 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); | 386 scoped_ptr<DelegatedRendererLayerImpl> delegatedRendererLayer = Delegate
dRendererLayerImpl::create(2); |
387 | 387 |
388 m_hostImpl->setViewportSize(IntSize(100, 100), IntSize(100, 100)); | 388 m_hostImpl->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
389 rootLayer->setBounds(IntSize(100, 100)); | 389 rootLayer->setBounds(gfx::Size(100, 100)); |
390 | 390 |
391 delegatedRendererLayer->setPosition(IntPoint(20, 20)); | 391 delegatedRendererLayer->setPosition(gfx::Point(20, 20)); |
392 delegatedRendererLayer->setBounds(IntSize(20, 20)); | 392 delegatedRendererLayer->setBounds(gfx::Size(20, 20)); |
393 delegatedRendererLayer->setContentBounds(IntSize(20, 20)); | 393 delegatedRendererLayer->setContentBounds(gfx::Size(20, 20)); |
394 delegatedRendererLayer->setDrawsContent(true); | 394 delegatedRendererLayer->setDrawsContent(true); |
395 WebTransformationMatrix transform; | 395 WebTransformationMatrix transform; |
396 transform.translate(10, 10); | 396 transform.translate(10, 10); |
397 delegatedRendererLayer->setTransform(transform); | 397 delegatedRendererLayer->setTransform(transform); |
398 | 398 |
399 ScopedPtrVector<RenderPass> delegatedRenderPasses; | 399 ScopedPtrVector<RenderPass> delegatedRenderPasses; |
400 IntRect passRect(0, 0, 50, 50); | 400 gfx::Rect passRect(0, 0, 50, 50); |
401 TestRenderPass* pass = addRenderPass(delegatedRenderPasses, RenderPass::
Id(9, 6), passRect, WebTransformationMatrix()); | 401 TestRenderPass* pass = addRenderPass(delegatedRenderPasses, RenderPass::
Id(9, 6), passRect, WebTransformationMatrix()); |
402 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); | 402 MockQuadCuller quadSink(pass->quadList(), pass->sharedQuadStateList()); |
403 AppendQuadsData data(pass->id()); | 403 AppendQuadsData data(pass->id()); |
404 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadSta
te::create(WebTransformationMatrix(), passRect, passRect, 1, false)); | 404 SharedQuadState* sharedState = quadSink.useSharedQuadState(SharedQuadSta
te::create(WebTransformationMatrix(), passRect, passRect, 1, false)); |
405 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(0, 0, 10
, 10), 1u).PassAs<DrawQuad>(), data); | 405 quadSink.append(SolidColorDrawQuad::create(sharedState, gfx::Rect(0, 0,
10, 10), 1u).PassAs<DrawQuad>(), data); |
406 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(0, 10, 1
0, 10), 2u).PassAs<DrawQuad>(), data); | 406 quadSink.append(SolidColorDrawQuad::create(sharedState, gfx::Rect(0, 10,
10, 10), 2u).PassAs<DrawQuad>(), data); |
407 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(10, 0, 1
0, 10), 3u).PassAs<DrawQuad>(), data); | 407 quadSink.append(SolidColorDrawQuad::create(sharedState, gfx::Rect(10, 0,
10, 10), 3u).PassAs<DrawQuad>(), data); |
408 quadSink.append(SolidColorDrawQuad::create(sharedState, IntRect(10, 10,
10, 10), 4u).PassAs<DrawQuad>(), data); | 408 quadSink.append(SolidColorDrawQuad::create(sharedState, gfx::Rect(10, 10
, 10, 10), 4u).PassAs<DrawQuad>(), data); |
409 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); | 409 delegatedRendererLayer->setRenderPasses(delegatedRenderPasses); |
410 | 410 |
411 // The RenderPasses should be taken by the layer. | 411 // The RenderPasses should be taken by the layer. |
412 EXPECT_EQ(0u, delegatedRenderPasses.size()); | 412 EXPECT_EQ(0u, delegatedRenderPasses.size()); |
413 | 413 |
414 m_rootLayerPtr = rootLayer.get(); | 414 m_rootLayerPtr = rootLayer.get(); |
415 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); | 415 m_delegatedRendererLayerPtr = delegatedRendererLayer.get(); |
416 | 416 |
417 rootLayer->addChild(delegatedRendererLayer.PassAs<LayerImpl>()); | 417 rootLayer->addChild(delegatedRendererLayer.PassAs<LayerImpl>()); |
418 | 418 |
(...skipping 19 matching lines...) Expand all Loading... |
438 const QuadList& quadList = frame.renderPasses[0]->quadList(); | 438 const QuadList& quadList = frame.renderPasses[0]->quadList(); |
439 ASSERT_EQ(4u, quadList.size()); | 439 ASSERT_EQ(4u, quadList.size()); |
440 | 440 |
441 // All quads should share the same state. | 441 // All quads should share the same state. |
442 const SharedQuadState* sharedState = quadList[0]->sharedQuadState(); | 442 const SharedQuadState* sharedState = quadList[0]->sharedQuadState(); |
443 EXPECT_EQ(sharedState, quadList[1]->sharedQuadState()); | 443 EXPECT_EQ(sharedState, quadList[1]->sharedQuadState()); |
444 EXPECT_EQ(sharedState, quadList[2]->sharedQuadState()); | 444 EXPECT_EQ(sharedState, quadList[2]->sharedQuadState()); |
445 EXPECT_EQ(sharedState, quadList[3]->sharedQuadState()); | 445 EXPECT_EQ(sharedState, quadList[3]->sharedQuadState()); |
446 | 446 |
447 // The state should be transformed only once. | 447 // The state should be transformed only once. |
448 EXPECT_RECT_EQ(IntRect(30, 30, 50, 50), sharedState->clippedRectInTarget); | 448 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clippedRectInTarget); |
449 WebTransformationMatrix expected; | 449 WebTransformationMatrix expected; |
450 expected.translate(30, 30); | 450 expected.translate(30, 30); |
451 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->quadTransform); | 451 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->quadTransform); |
452 } | 452 } |
453 | 453 |
454 } // namespace | 454 } // namespace |
OLD | NEW |