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 "CCRendererSoftware.h" | 7 #include "CCRendererSoftware.h" |
8 | 8 |
9 #include "CCAnimationTestCommon.h" | 9 #include "CCAnimationTestCommon.h" |
10 #include "CCGeometryTestUtils.h" | 10 #include "CCGeometryTestUtils.h" |
11 #include "CCQuadSink.h" | 11 #include "CCQuadSink.h" |
12 #include "CCRenderPass.h" | 12 #include "CCRenderPass.h" |
13 #include "CCRenderPassDrawQuad.h" | 13 #include "CCRenderPassDrawQuad.h" |
| 14 #include "CCRenderPassTestCommon.h" |
14 #include "CCSettings.h" | 15 #include "CCSettings.h" |
15 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread | 16 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread |
16 #include "CCSolidColorDrawQuad.h" | 17 #include "CCSolidColorDrawQuad.h" |
17 #include "CCTestCommon.h" | 18 #include "CCTestCommon.h" |
18 #include "CCTileDrawQuad.h" | 19 #include "CCTileDrawQuad.h" |
19 #include "FakeWebCompositorSoftwareOutputDevice.h" | 20 #include "FakeWebCompositorSoftwareOutputDevice.h" |
20 #include "FakeWebCompositorOutputSurface.h" | 21 #include "FakeWebCompositorOutputSurface.h" |
21 #include <gmock/gmock.h> | 22 #include <gmock/gmock.h> |
22 #include <gtest/gtest.h> | 23 #include <gtest/gtest.h> |
23 #include <wtf/OwnArrayPtr.h> | 24 #include <wtf/OwnArrayPtr.h> |
(...skipping 30 matching lines...) Expand all Loading... |
54 protected: | 55 protected: |
55 DebugScopedSetImplThread m_alwaysImplThread; | 56 DebugScopedSetImplThread m_alwaysImplThread; |
56 | 57 |
57 OwnPtr<FakeWebCompositorOutputSurface> m_outputSurface; | 58 OwnPtr<FakeWebCompositorOutputSurface> m_outputSurface; |
58 OwnPtr<CCResourceProvider> m_resourceProvider; | 59 OwnPtr<CCResourceProvider> m_resourceProvider; |
59 OwnPtr<CCRendererSoftware> m_renderer; | 60 OwnPtr<CCRendererSoftware> m_renderer; |
60 IntSize m_viewportSize; | 61 IntSize m_viewportSize; |
61 CCLayerTreeSettings m_settings; | 62 CCLayerTreeSettings m_settings; |
62 }; | 63 }; |
63 | 64 |
64 class CCTestRenderPass : public CCRenderPass { | |
65 public: | |
66 static PassOwnPtr<CCTestRenderPass> create(CCRenderPass::Id id, IntRect outp
utRect, const WebTransformationMatrix& rootTransform) { return adoptPtr(new CCTe
stRenderPass(id, outputRect, rootTransform)); } | |
67 | |
68 void appendQuad(PassOwnPtr<CCDrawQuad> quad) { m_quadList.append(quad); } | |
69 | |
70 protected: | |
71 CCTestRenderPass(CCRenderPass::Id id, IntRect outputRect, const WebTransform
ationMatrix& rootTransform) : CCRenderPass(id, outputRect, rootTransform) { } | |
72 }; | |
73 | |
74 | |
75 TEST_F(CCRendererSoftwareTest, solidColorQuad) | 65 TEST_F(CCRendererSoftwareTest, solidColorQuad) |
76 { | 66 { |
77 IntSize outerSize(100, 100); | 67 IntSize outerSize(100, 100); |
78 int outerPixels = outerSize.width() * outerSize.height(); | 68 int outerPixels = outerSize.width() * outerSize.height(); |
79 IntSize innerSize(98, 98); | 69 IntSize innerSize(98, 98); |
80 IntRect outerRect(IntPoint(), outerSize); | 70 IntRect outerRect(IntPoint(), outerSize); |
81 IntRect innerRect(IntPoint(1, 1), innerSize); | 71 IntRect innerRect(IntPoint(1, 1), innerSize); |
82 setViewportSize(outerSize); | 72 setViewportSize(outerSize); |
83 | 73 |
84 initializeRenderer(); | 74 initializeRenderer(); |
85 | 75 |
86 OwnPtr<CCSharedQuadState> sharedQuadState = CCSharedQuadState::create(WebTra
nsformationMatrix(), outerRect, outerRect, 1.0, true); | 76 OwnPtr<CCSharedQuadState> sharedQuadState = CCSharedQuadState::create(WebTra
nsformationMatrix(), outerRect, outerRect, 1.0, true); |
87 CCRenderPass::Id rootRenderPassId = CCRenderPass::Id(1, 1); | 77 CCRenderPass::Id rootRenderPassId = CCRenderPass::Id(1, 1); |
88 OwnPtr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRenderPas
sId, outerRect, WebTransformationMatrix()); | 78 scoped_ptr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRende
rPassId, outerRect, WebTransformationMatrix()); |
89 CCTestRenderPass* testRenderPass = static_cast<CCTestRenderPass*>(rootRender
Pass.get()); | 79 CCTestRenderPass* testRenderPass = static_cast<CCTestRenderPass*>(rootRender
Pass.get()); |
90 OwnPtr<CCDrawQuad> outerQuad = CCSolidColorDrawQuad::create(sharedQuadState.
get(), outerRect, SK_ColorYELLOW); | 80 OwnPtr<CCDrawQuad> outerQuad = CCSolidColorDrawQuad::create(sharedQuadState.
get(), outerRect, SK_ColorYELLOW); |
91 OwnPtr<CCDrawQuad> innerQuad = CCSolidColorDrawQuad::create(sharedQuadState.
get(), innerRect, SK_ColorCYAN); | 81 OwnPtr<CCDrawQuad> innerQuad = CCSolidColorDrawQuad::create(sharedQuadState.
get(), innerRect, SK_ColorCYAN); |
92 testRenderPass->appendQuad(innerQuad.release()); | 82 testRenderPass->appendQuad(innerQuad.release()); |
93 testRenderPass->appendQuad(outerQuad.release()); | 83 testRenderPass->appendQuad(outerQuad.release()); |
94 | 84 |
95 CCRenderPassList list; | 85 CCRenderPassList list; |
96 CCRenderPassIdHashMap hashmap; | 86 CCRenderPassIdHashMap hashmap; |
97 list.append(rootRenderPass.get()); | 87 list.append(rootRenderPass.get()); |
98 hashmap.add(rootRenderPassId, rootRenderPass.release()); | 88 hashmap.add(rootRenderPassId, rootRenderPass.Pass()); |
99 renderer()->drawFrame(list, hashmap); | 89 renderer()->drawFrame(list, hashmap); |
100 | 90 |
101 OwnArrayPtr<SkColor> pixels = adoptArrayPtr(new SkColor[deviceViewportSize()
.width() * deviceViewportSize().height()]); | 91 OwnArrayPtr<SkColor> pixels = adoptArrayPtr(new SkColor[deviceViewportSize()
.width() * deviceViewportSize().height()]); |
102 renderer()->getFramebufferPixels(pixels.get(), outerRect); | 92 renderer()->getFramebufferPixels(pixels.get(), outerRect); |
103 | 93 |
104 EXPECT_EQ(SK_ColorYELLOW, pixels[0]); | 94 EXPECT_EQ(SK_ColorYELLOW, pixels[0]); |
105 EXPECT_EQ(SK_ColorYELLOW, pixels[outerPixels - 1]); | 95 EXPECT_EQ(SK_ColorYELLOW, pixels[outerPixels - 1]); |
106 EXPECT_EQ(SK_ColorCYAN, pixels[outerSize.width() + 1]); | 96 EXPECT_EQ(SK_ColorCYAN, pixels[outerSize.width() + 1]); |
107 EXPECT_EQ(SK_ColorCYAN, pixels[outerPixels - outerSize.width() - 2]); | 97 EXPECT_EQ(SK_ColorCYAN, pixels[outerPixels - outerSize.width() - 2]); |
108 } | 98 } |
(...skipping 21 matching lines...) Expand all Loading... |
130 for (int i = 0; i < innerPixels; i++) | 120 for (int i = 0; i < innerPixels; i++) |
131 cyanPixels[i] = cyan; | 121 cyanPixels[i] = cyan; |
132 | 122 |
133 resourceProvider()->upload(resourceYellow, reinterpret_cast<uint8_t*>(yellow
Pixels.get()), IntRect(IntPoint(), outerSize), IntRect(IntPoint(), outerSize), I
ntSize()); | 123 resourceProvider()->upload(resourceYellow, reinterpret_cast<uint8_t*>(yellow
Pixels.get()), IntRect(IntPoint(), outerSize), IntRect(IntPoint(), outerSize), I
ntSize()); |
134 resourceProvider()->upload(resourceCyan, reinterpret_cast<uint8_t*>(cyanPixe
ls.get()), IntRect(IntPoint(), innerSize), IntRect(IntPoint(), innerSize), IntSi
ze()); | 124 resourceProvider()->upload(resourceCyan, reinterpret_cast<uint8_t*>(cyanPixe
ls.get()), IntRect(IntPoint(), innerSize), IntRect(IntPoint(), innerSize), IntSi
ze()); |
135 | 125 |
136 IntRect rect = IntRect(IntPoint(), deviceViewportSize()); | 126 IntRect rect = IntRect(IntPoint(), deviceViewportSize()); |
137 | 127 |
138 OwnPtr<CCSharedQuadState> sharedQuadState = CCSharedQuadState::create(WebTra
nsformationMatrix(), outerRect, outerRect, 1.0, true); | 128 OwnPtr<CCSharedQuadState> sharedQuadState = CCSharedQuadState::create(WebTra
nsformationMatrix(), outerRect, outerRect, 1.0, true); |
139 CCRenderPass::Id rootRenderPassId = CCRenderPass::Id(1, 1); | 129 CCRenderPass::Id rootRenderPassId = CCRenderPass::Id(1, 1); |
140 OwnPtr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRenderPas
sId, IntRect(IntPoint(), deviceViewportSize()), WebTransformationMatrix()); | 130 scoped_ptr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRende
rPassId, IntRect(IntPoint(), deviceViewportSize()), WebTransformationMatrix()); |
141 CCTestRenderPass* testRenderPass = static_cast<CCTestRenderPass*>(rootRender
Pass.get()); | 131 CCTestRenderPass* testRenderPass = static_cast<CCTestRenderPass*>(rootRender
Pass.get()); |
142 OwnPtr<CCDrawQuad> outerQuad = CCTileDrawQuad::create(sharedQuadState.get(),
outerRect, outerRect, resourceYellow, IntPoint(), outerSize, 0, false, false, f
alse, false, false); | 132 OwnPtr<CCDrawQuad> outerQuad = CCTileDrawQuad::create(sharedQuadState.get(),
outerRect, outerRect, resourceYellow, IntPoint(), outerSize, 0, false, false, f
alse, false, false); |
143 OwnPtr<CCDrawQuad> innerQuad = CCTileDrawQuad::create(sharedQuadState.get(),
innerRect, innerRect, resourceCyan, IntPoint(), innerSize, 0, false, false, fal
se, false, false); | 133 OwnPtr<CCDrawQuad> innerQuad = CCTileDrawQuad::create(sharedQuadState.get(),
innerRect, innerRect, resourceCyan, IntPoint(), innerSize, 0, false, false, fal
se, false, false); |
144 testRenderPass->appendQuad(innerQuad.release()); | 134 testRenderPass->appendQuad(innerQuad.release()); |
145 testRenderPass->appendQuad(outerQuad.release()); | 135 testRenderPass->appendQuad(outerQuad.release()); |
146 | 136 |
147 CCRenderPassList list; | 137 CCRenderPassList list; |
148 CCRenderPassIdHashMap hashmap; | 138 CCRenderPassIdHashMap hashmap; |
149 list.append(rootRenderPass.get()); | 139 list.append(rootRenderPass.get()); |
150 hashmap.add(rootRenderPassId, rootRenderPass.release()); | 140 hashmap.add(rootRenderPassId, rootRenderPass.Pass()); |
151 renderer()->drawFrame(list, hashmap); | 141 renderer()->drawFrame(list, hashmap); |
152 | 142 |
153 OwnArrayPtr<SkColor> pixels = adoptArrayPtr(new SkColor[deviceViewportSize()
.width() * deviceViewportSize().height()]); | 143 OwnArrayPtr<SkColor> pixels = adoptArrayPtr(new SkColor[deviceViewportSize()
.width() * deviceViewportSize().height()]); |
154 renderer()->getFramebufferPixels(pixels.get(), outerRect); | 144 renderer()->getFramebufferPixels(pixels.get(), outerRect); |
155 | 145 |
156 EXPECT_EQ(SK_ColorYELLOW, pixels[0]); | 146 EXPECT_EQ(SK_ColorYELLOW, pixels[0]); |
157 EXPECT_EQ(SK_ColorYELLOW, pixels[outerPixels - 1]); | 147 EXPECT_EQ(SK_ColorYELLOW, pixels[outerPixels - 1]); |
158 EXPECT_EQ(SK_ColorCYAN, pixels[outerSize.width() + 1]); | 148 EXPECT_EQ(SK_ColorCYAN, pixels[outerSize.width() + 1]); |
159 EXPECT_EQ(SK_ColorCYAN, pixels[outerPixels - outerSize.width() - 2]); | 149 EXPECT_EQ(SK_ColorCYAN, pixels[outerPixels - outerSize.width() - 2]); |
160 } | 150 } |
161 | 151 |
162 } // namespace | 152 } // namespace |
OLD | NEW |