| 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 |