Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: cc/CCRendererSoftwareTest.cpp

Issue 11108020: [cc] Change cc_tests.gyp filenames to Chromium style (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/CCRendererGLTest.cpp ('k') | cc/CCResourceProviderTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "config.h"
6
7 #include "CCRendererSoftware.h"
8
9 #include "CCAnimationTestCommon.h"
10 #include "CCGeometryTestUtils.h"
11 #include "CCQuadSink.h"
12 #include "CCRenderPass.h"
13 #include "CCRenderPassDrawQuad.h"
14 #include "CCRenderPassTestCommon.h"
15 #include "CCSettings.h"
16 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread
17 #include "CCSolidColorDrawQuad.h"
18 #include "CCTestCommon.h"
19 #include "CCTileDrawQuad.h"
20 #include "FakeWebCompositorSoftwareOutputDevice.h"
21 #include "FakeWebCompositorOutputSurface.h"
22 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h"
24 #include <wtf/OwnArrayPtr.h>
25
26 using namespace cc;
27 using namespace WebKit;
28 using namespace WebKitTests;
29
30 namespace {
31
32 class CCRendererSoftwareTest : public testing::Test, public CCRendererClient {
33 public:
34 void initializeRenderer() {
35 m_outputSurface = FakeWebCompositorOutputSurface::createSoftware(adoptPt r(new FakeWebCompositorSoftwareOutputDevice));
36 m_resourceProvider = CCResourceProvider::create(m_outputSurface.get());
37 m_renderer = CCRendererSoftware::create(this, resourceProvider(), softwa reDevice());
38 }
39
40 WebCompositorSoftwareOutputDevice* softwareDevice() const { return m_outputS urface->softwareDevice(); }
41 FakeWebCompositorOutputSurface* outputSurface() const { return m_outputSurfa ce.get(); }
42 CCResourceProvider* resourceProvider() const { return m_resourceProvider.get (); }
43 CCRendererSoftware* renderer() const { return m_renderer.get(); }
44 void setViewportSize(IntSize viewportSize) { m_viewportSize = viewportSize; }
45
46 // CCRendererClient implementation.
47 virtual const IntSize& deviceViewportSize() const OVERRIDE { return m_viewpo rtSize; }
48 virtual const CCLayerTreeSettings& settings() const OVERRIDE { return m_sett ings; }
49 virtual void didLoseContext() OVERRIDE { }
50 virtual void onSwapBuffersComplete() OVERRIDE { }
51 virtual void setFullRootLayerDamage() OVERRIDE { }
52 virtual void releaseContentsTextures() OVERRIDE { }
53 virtual void setMemoryAllocationLimitBytes(size_t) OVERRIDE { }
54
55 protected:
56 DebugScopedSetImplThread m_alwaysImplThread;
57
58 scoped_ptr<FakeWebCompositorOutputSurface> m_outputSurface;
59 OwnPtr<CCResourceProvider> m_resourceProvider;
60 OwnPtr<CCRendererSoftware> m_renderer;
61 IntSize m_viewportSize;
62 CCLayerTreeSettings m_settings;
63 };
64
65 TEST_F(CCRendererSoftwareTest, solidColorQuad)
66 {
67 IntSize outerSize(100, 100);
68 int outerPixels = outerSize.width() * outerSize.height();
69 IntSize innerSize(98, 98);
70 IntRect outerRect(IntPoint(), outerSize);
71 IntRect innerRect(IntPoint(1, 1), innerSize);
72 setViewportSize(outerSize);
73
74 initializeRenderer();
75
76 scoped_ptr<CCSharedQuadState> sharedQuadState = CCSharedQuadState::create(We bTransformationMatrix(), outerRect, outerRect, 1.0, true);
77 CCRenderPass::Id rootRenderPassId = CCRenderPass::Id(1, 1);
78 scoped_ptr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRende rPassId, outerRect, WebTransformationMatrix());
79 CCTestRenderPass* testRenderPass = static_cast<CCTestRenderPass*>(rootRender Pass.get());
80 scoped_ptr<CCDrawQuad> outerQuad = CCSolidColorDrawQuad::create(sharedQuadSt ate.get(), outerRect, SK_ColorYELLOW).PassAs<CCDrawQuad>();
81 scoped_ptr<CCDrawQuad> innerQuad = CCSolidColorDrawQuad::create(sharedQuadSt ate.get(), innerRect, SK_ColorCYAN).PassAs<CCDrawQuad>();
82 testRenderPass->appendQuad(innerQuad.Pass());
83 testRenderPass->appendQuad(outerQuad.Pass());
84
85 CCRenderPassList list;
86 CCRenderPassIdHashMap hashmap;
87 list.push_back(rootRenderPass.get());
88 hashmap.add(rootRenderPassId, rootRenderPass.Pass());
89 renderer()->drawFrame(list, hashmap);
90
91 OwnArrayPtr<SkColor> pixels = adoptArrayPtr(new SkColor[deviceViewportSize() .width() * deviceViewportSize().height()]);
92 renderer()->getFramebufferPixels(pixels.get(), outerRect);
93
94 EXPECT_EQ(SK_ColorYELLOW, pixels[0]);
95 EXPECT_EQ(SK_ColorYELLOW, pixels[outerPixels - 1]);
96 EXPECT_EQ(SK_ColorCYAN, pixels[outerSize.width() + 1]);
97 EXPECT_EQ(SK_ColorCYAN, pixels[outerPixels - outerSize.width() - 2]);
98 }
99
100 TEST_F(CCRendererSoftwareTest, tileQuad)
101 {
102 IntSize outerSize(100, 100);
103 int outerPixels = outerSize.width() * outerSize.height();
104 IntSize innerSize(98, 98);
105 int innerPixels = innerSize.width() * innerSize.height();
106 IntRect outerRect(IntPoint(), outerSize);
107 IntRect innerRect(IntPoint(1, 1), innerSize);
108 setViewportSize(outerSize);
109 initializeRenderer();
110
111 CCResourceProvider::ResourceId resourceYellow = resourceProvider()->createRe source(1, outerSize, GraphicsContext3D::RGBA, CCResourceProvider::TextureUsageAn y);
112 CCResourceProvider::ResourceId resourceCyan = resourceProvider()->createReso urce(1, innerSize, GraphicsContext3D::RGBA, CCResourceProvider::TextureUsageAny) ;
113
114 SkColor yellow = SK_ColorYELLOW;
115 SkColor cyan = SK_ColorCYAN;
116 OwnArrayPtr<SkColor> yellowPixels = adoptArrayPtr(new SkColor[outerPixels]);
117 OwnArrayPtr<SkColor> cyanPixels = adoptArrayPtr(new SkColor[innerPixels]);
118 for (int i = 0; i < outerPixels; i++)
119 yellowPixels[i] = yellow;
120 for (int i = 0; i < innerPixels; i++)
121 cyanPixels[i] = cyan;
122
123 resourceProvider()->upload(resourceYellow, reinterpret_cast<uint8_t*>(yellow Pixels.get()), IntRect(IntPoint(), outerSize), IntRect(IntPoint(), outerSize), I ntSize());
124 resourceProvider()->upload(resourceCyan, reinterpret_cast<uint8_t*>(cyanPixe ls.get()), IntRect(IntPoint(), innerSize), IntRect(IntPoint(), innerSize), IntSi ze());
125
126 IntRect rect = IntRect(IntPoint(), deviceViewportSize());
127
128 scoped_ptr<CCSharedQuadState> sharedQuadState = CCSharedQuadState::create(We bTransformationMatrix(), outerRect, outerRect, 1.0, true);
129 CCRenderPass::Id rootRenderPassId = CCRenderPass::Id(1, 1);
130 scoped_ptr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRende rPassId, IntRect(IntPoint(), deviceViewportSize()), WebTransformationMatrix());
131 CCTestRenderPass* testRenderPass = static_cast<CCTestRenderPass*>(rootRender Pass.get());
132 scoped_ptr<CCDrawQuad> outerQuad = CCTileDrawQuad::create(sharedQuadState.ge t(), outerRect, outerRect, resourceYellow, IntPoint(), outerSize, 0, false, fals e, false, false, false).PassAs<CCDrawQuad>();
133 scoped_ptr<CCDrawQuad> innerQuad = CCTileDrawQuad::create(sharedQuadState.ge t(), innerRect, innerRect, resourceCyan, IntPoint(), innerSize, 0, false, false, false, false, false).PassAs<CCDrawQuad>();
134 testRenderPass->appendQuad(innerQuad.Pass());
135 testRenderPass->appendQuad(outerQuad.Pass());
136
137 CCRenderPassList list;
138 CCRenderPassIdHashMap hashmap;
139 list.push_back(rootRenderPass.get());
140 hashmap.add(rootRenderPassId, rootRenderPass.Pass());
141 renderer()->drawFrame(list, hashmap);
142
143 OwnArrayPtr<SkColor> pixels = adoptArrayPtr(new SkColor[deviceViewportSize() .width() * deviceViewportSize().height()]);
144 renderer()->getFramebufferPixels(pixels.get(), outerRect);
145
146 EXPECT_EQ(SK_ColorYELLOW, pixels[0]);
147 EXPECT_EQ(SK_ColorYELLOW, pixels[outerPixels - 1]);
148 EXPECT_EQ(SK_ColorCYAN, pixels[outerSize.width() + 1]);
149 EXPECT_EQ(SK_ColorCYAN, pixels[outerPixels - outerSize.width() - 2]);
150 }
151
152 } // namespace
OLDNEW
« no previous file with comments | « cc/CCRendererGLTest.cpp ('k') | cc/CCResourceProviderTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698