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

Side by Side Diff: cc/software_renderer_unittest.cc

Issue 11618026: Move filters to RenderPassDrawQuad (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years 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/software_renderer.cc ('k') | cc/test/render_pass_test_common.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "cc/software_renderer.h" 5 #include "cc/software_renderer.h"
6 6
7 #include "cc/compositor_frame_metadata.h" 7 #include "cc/compositor_frame_metadata.h"
8 #include "cc/quad_sink.h" 8 #include "cc/quad_sink.h"
9 #include "cc/render_pass.h" 9 #include "cc/render_pass.h"
10 #include "cc/render_pass_draw_quad.h" 10 #include "cc/render_pass_draw_quad.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 scoped_ptr<TestRenderPass> rootRenderPass = TestRenderPass::Create(); 83 scoped_ptr<TestRenderPass> rootRenderPass = TestRenderPass::Create();
84 rootRenderPass->SetNew(rootRenderPassId, outerRect, gfx::Rect(), gfx::Transf orm()); 84 rootRenderPass->SetNew(rootRenderPassId, outerRect, gfx::Rect(), gfx::Transf orm());
85 scoped_ptr<SolidColorDrawQuad> outerQuad = SolidColorDrawQuad::Create(); 85 scoped_ptr<SolidColorDrawQuad> outerQuad = SolidColorDrawQuad::Create();
86 outerQuad->SetNew(sharedQuadState.get(), outerRect, SK_ColorYELLOW); 86 outerQuad->SetNew(sharedQuadState.get(), outerRect, SK_ColorYELLOW);
87 scoped_ptr<SolidColorDrawQuad> innerQuad = SolidColorDrawQuad::Create(); 87 scoped_ptr<SolidColorDrawQuad> innerQuad = SolidColorDrawQuad::Create();
88 innerQuad->SetNew(sharedQuadState.get(), innerRect, SK_ColorCYAN); 88 innerQuad->SetNew(sharedQuadState.get(), innerRect, SK_ColorCYAN);
89 rootRenderPass->AppendQuad(innerQuad.PassAs<DrawQuad>()); 89 rootRenderPass->AppendQuad(innerQuad.PassAs<DrawQuad>());
90 rootRenderPass->AppendQuad(outerQuad.PassAs<DrawQuad>()); 90 rootRenderPass->AppendQuad(outerQuad.PassAs<DrawQuad>());
91 91
92 RenderPassList list; 92 RenderPassList list;
93 RenderPassIdHashMap hashmap; 93 list.append(rootRenderPass.PassAs<RenderPass>());
94 list.push_back(rootRenderPass.get()); 94 renderer()->drawFrame(list);
95 hashmap.add(rootRenderPassId, rootRenderPass.PassAs<RenderPass>());
96 renderer()->drawFrame(list, hashmap);
97 95
98 scoped_array<SkColor> pixels(new SkColor[deviceViewportSize().width() * devi ceViewportSize().height()]); 96 scoped_array<SkColor> pixels(new SkColor[deviceViewportSize().width() * devi ceViewportSize().height()]);
99 renderer()->getFramebufferPixels(pixels.get(), outerRect); 97 renderer()->getFramebufferPixels(pixels.get(), outerRect);
100 98
101 // FIXME: This fails on Android. Endianness maybe? 99 // FIXME: This fails on Android. Endianness maybe?
102 // Yellow: expects 0xFFFFFF00, was 0xFF00FFFF on android. 100 // Yellow: expects 0xFFFFFF00, was 0xFF00FFFF on android.
103 // Cyan: expects 0xFF00FFFF, was 0xFFFFFF00 on android. 101 // Cyan: expects 0xFF00FFFF, was 0xFFFFFF00 on android.
104 // http://crbug.com/154528 102 // http://crbug.com/154528
105 #ifndef OS_ANDROID 103 #ifndef OS_ANDROID
106 EXPECT_EQ(SK_ColorYELLOW, pixels[0]); 104 EXPECT_EQ(SK_ColorYELLOW, pixels[0]);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 scoped_ptr<TestRenderPass> rootRenderPass = TestRenderPass::Create(); 142 scoped_ptr<TestRenderPass> rootRenderPass = TestRenderPass::Create();
145 rootRenderPass->SetNew(rootRenderPassId, gfx::Rect(gfx::Point(), deviceViewp ortSize()), gfx::Rect(), gfx::Transform()); 143 rootRenderPass->SetNew(rootRenderPassId, gfx::Rect(gfx::Point(), deviceViewp ortSize()), gfx::Rect(), gfx::Transform());
146 scoped_ptr<TileDrawQuad> outerQuad = TileDrawQuad::Create(); 144 scoped_ptr<TileDrawQuad> outerQuad = TileDrawQuad::Create();
147 outerQuad->SetNew(sharedQuadState.get(), outerRect, outerRect, resourceYello w, gfx::RectF(gfx::PointF(), outerSize), outerSize, false, false, false, false, false); 145 outerQuad->SetNew(sharedQuadState.get(), outerRect, outerRect, resourceYello w, gfx::RectF(gfx::PointF(), outerSize), outerSize, false, false, false, false, false);
148 scoped_ptr<TileDrawQuad> innerQuad = TileDrawQuad::Create(); 146 scoped_ptr<TileDrawQuad> innerQuad = TileDrawQuad::Create();
149 innerQuad->SetNew(sharedQuadState.get(), innerRect, innerRect, resourceCyan, gfx::RectF(gfx::PointF(), innerSize), innerSize, false, false, false, false, fa lse); 147 innerQuad->SetNew(sharedQuadState.get(), innerRect, innerRect, resourceCyan, gfx::RectF(gfx::PointF(), innerSize), innerSize, false, false, false, false, fa lse);
150 rootRenderPass->AppendQuad(innerQuad.PassAs<DrawQuad>()); 148 rootRenderPass->AppendQuad(innerQuad.PassAs<DrawQuad>());
151 rootRenderPass->AppendQuad(outerQuad.PassAs<DrawQuad>()); 149 rootRenderPass->AppendQuad(outerQuad.PassAs<DrawQuad>());
152 150
153 RenderPassList list; 151 RenderPassList list;
154 RenderPassIdHashMap hashmap; 152 list.append(rootRenderPass.PassAs<RenderPass>());
155 list.push_back(rootRenderPass.get()); 153 renderer()->drawFrame(list);
156 hashmap.add(rootRenderPassId, rootRenderPass.PassAs<RenderPass>());
157 renderer()->drawFrame(list, hashmap);
158 154
159 scoped_array<SkColor> pixels(new SkColor[deviceViewportSize().width() * devi ceViewportSize().height()]); 155 scoped_array<SkColor> pixels(new SkColor[deviceViewportSize().width() * devi ceViewportSize().height()]);
160 renderer()->getFramebufferPixels(pixels.get(), outerRect); 156 renderer()->getFramebufferPixels(pixels.get(), outerRect);
161 157
162 EXPECT_EQ(SK_ColorYELLOW, pixels[0]); 158 EXPECT_EQ(SK_ColorYELLOW, pixels[0]);
163 EXPECT_EQ(SK_ColorYELLOW, pixels[outerPixels - 1]); 159 EXPECT_EQ(SK_ColorYELLOW, pixels[outerPixels - 1]);
164 EXPECT_EQ(SK_ColorCYAN, pixels[outerSize.width() + 1]); 160 EXPECT_EQ(SK_ColorCYAN, pixels[outerSize.width() + 1]);
165 EXPECT_EQ(SK_ColorCYAN, pixels[outerPixels - outerSize.width() - 2]); 161 EXPECT_EQ(SK_ColorCYAN, pixels[outerPixels - outerSize.width() - 2]);
166 } 162 }
167 163
168 TEST_F(SoftwareRendererTest, shouldClearRootRenderPass) 164 TEST_F(SoftwareRendererTest, shouldClearRootRenderPass)
169 { 165 {
170 gfx::Rect viewportRect(gfx::Size(100, 100)); 166 gfx::Rect viewportRect(gfx::Size(100, 100));
171 size_t viewportPixels = viewportRect.width() * viewportRect.height(); 167 size_t viewportPixels = viewportRect.width() * viewportRect.height();
172 setViewportSize(viewportRect.size()); 168 setViewportSize(viewportRect.size());
173 setShouldClearRootRenderPass(false); 169 setShouldClearRootRenderPass(false);
174 initializeRenderer(); 170 initializeRenderer();
175 171
176 RenderPassList list; 172 RenderPassList list;
177 RenderPassIdHashMap hashmap;
178 ScopedPtrVector<RenderPass> renderPasses;
179 scoped_array<SkColor> pixels(new SkColor[viewportPixels]); 173 scoped_array<SkColor> pixels(new SkColor[viewportPixels]);
180 174
181 // Draw a fullscreen green quad in a first frame. 175 // Draw a fullscreen green quad in a first frame.
182 RenderPass::Id rootClearPassId(1, 0); 176 RenderPass::Id rootClearPassId(1, 0);
183 TestRenderPass* rootClearPass = addRenderPass(renderPasses, rootClearPassId, viewportRect, gfx::Transform()); 177 TestRenderPass* rootClearPass = addRenderPass(list, rootClearPassId, viewpor tRect, gfx::Transform());
184 addQuad(rootClearPass, viewportRect, SK_ColorGREEN); 178 addQuad(rootClearPass, viewportRect, SK_ColorGREEN);
185 179
186 list.push_back(rootClearPass);
187 hashmap.set(rootClearPassId, renderPasses.take(0));
188
189 renderer()->decideRenderPassAllocationsForFrame(list); 180 renderer()->decideRenderPassAllocationsForFrame(list);
190 renderer()->drawFrame(list, hashmap); 181 renderer()->drawFrame(list);
191 renderer()->getFramebufferPixels(pixels.get(), viewportRect); 182 renderer()->getFramebufferPixels(pixels.get(), viewportRect);
192 183
193 EXPECT_EQ(SK_ColorGREEN, pixels[0]); 184 EXPECT_EQ(SK_ColorGREEN, pixels[0]);
194 EXPECT_EQ(SK_ColorGREEN, pixels[viewportPixels - 1]); 185 EXPECT_EQ(SK_ColorGREEN, pixels[viewportPixels - 1]);
195 186
196 renderPasses.clear();
197 hashmap.clear();
198 list.clear(); 187 list.clear();
199 188
200 // Draw a smaller magenta rect without filling the viewport in a separate fr ame. 189 // Draw a smaller magenta rect without filling the viewport in a separate fr ame.
201 gfx::Rect smallerRect(20, 20, 60, 60); 190 gfx::Rect smallerRect(20, 20, 60, 60);
202 191
203 RenderPass::Id rootSmallerPassId(2, 0); 192 RenderPass::Id rootSmallerPassId(2, 0);
204 TestRenderPass* rootSmallerPass = addRenderPass(renderPasses, rootSmallerPas sId, viewportRect, gfx::Transform()); 193 TestRenderPass* rootSmallerPass = addRenderPass(list, rootSmallerPassId, vie wportRect, gfx::Transform());
205 addQuad(rootSmallerPass, smallerRect, SK_ColorMAGENTA); 194 addQuad(rootSmallerPass, smallerRect, SK_ColorMAGENTA);
206 195
207 list.push_back(rootSmallerPass);
208 hashmap.set(rootSmallerPassId, renderPasses.take(0));
209
210 renderer()->decideRenderPassAllocationsForFrame(list); 196 renderer()->decideRenderPassAllocationsForFrame(list);
211 renderer()->drawFrame(list, hashmap); 197 renderer()->drawFrame(list);
212 renderer()->getFramebufferPixels(pixels.get(), viewportRect); 198 renderer()->getFramebufferPixels(pixels.get(), viewportRect);
213 199
214 // If we didn't clear, the borders should still be green. 200 // If we didn't clear, the borders should still be green.
215 EXPECT_EQ(SK_ColorGREEN, pixels[0]); 201 EXPECT_EQ(SK_ColorGREEN, pixels[0]);
216 EXPECT_EQ(SK_ColorGREEN, pixels[viewportPixels - 1]); 202 EXPECT_EQ(SK_ColorGREEN, pixels[viewportPixels - 1]);
217 203
218 EXPECT_EQ(SK_ColorMAGENTA, pixels[smallerRect.y() * viewportRect.width() + s mallerRect.x()]); 204 EXPECT_EQ(SK_ColorMAGENTA, pixels[smallerRect.y() * viewportRect.width() + s mallerRect.x()]);
219 EXPECT_EQ(SK_ColorMAGENTA, pixels[(smallerRect.bottom() - 1) * viewportRect. width() + smallerRect.right() - 1]); 205 EXPECT_EQ(SK_ColorMAGENTA, pixels[(smallerRect.bottom() - 1) * viewportRect. width() + smallerRect.right() - 1]);
220 } 206 }
221 207
222 } // namespace 208 } // namespace
223 } // namespace cc 209 } // namespace cc
OLDNEW
« no previous file with comments | « cc/software_renderer.cc ('k') | cc/test/render_pass_test_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698