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 "cc/output/software_renderer.h" | 5 #include "cc/output/software_renderer.h" |
6 | 6 |
7 #include "cc/layers/quad_sink.h" | 7 #include "cc/layers/quad_sink.h" |
8 #include "cc/output/compositor_frame_metadata.h" | 8 #include "cc/output/compositor_frame_metadata.h" |
9 #include "cc/output/software_output_device.h" | 9 #include "cc/output/software_output_device.h" |
10 #include "cc/quads/render_pass.h" | 10 #include "cc/quads/render_pass.h" |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 set_viewport_size(viewport_rect.size()); | 211 set_viewport_size(viewport_rect.size()); |
212 set_should_clear_root_render_pass(false); | 212 set_should_clear_root_render_pass(false); |
213 InitializeRenderer(); | 213 InitializeRenderer(); |
214 | 214 |
215 RenderPassList list; | 215 RenderPassList list; |
216 scoped_array<SkColor> pixels(new SkColor[viewport_pixels]); | 216 scoped_array<SkColor> pixels(new SkColor[viewport_pixels]); |
217 | 217 |
218 // Draw a fullscreen green quad in a first frame. | 218 // Draw a fullscreen green quad in a first frame. |
219 RenderPass::Id root_clear_pass_id(1, 0); | 219 RenderPass::Id root_clear_pass_id(1, 0); |
220 TestRenderPass* root_clear_pass = | 220 TestRenderPass* root_clear_pass = |
221 AddRenderPass(list, root_clear_pass_id, viewport_rect, gfx::Transform()); | 221 AddRenderPass(&list, root_clear_pass_id, viewport_rect, gfx::Transform()); |
222 AddQuad(root_clear_pass, viewport_rect, SK_ColorGREEN); | 222 AddQuad(root_clear_pass, viewport_rect, SK_ColorGREEN); |
223 | 223 |
224 renderer()->DecideRenderPassAllocationsForFrame(list); | 224 renderer()->DecideRenderPassAllocationsForFrame(list); |
225 renderer()->DrawFrame(list); | 225 renderer()->DrawFrame(list); |
226 renderer()->GetFramebufferPixels(pixels.get(), viewport_rect); | 226 renderer()->GetFramebufferPixels(pixels.get(), viewport_rect); |
227 | 227 |
228 EXPECT_EQ(SK_ColorGREEN, pixels[0]); | 228 EXPECT_EQ(SK_ColorGREEN, pixels[0]); |
229 EXPECT_EQ(SK_ColorGREEN, pixels[viewport_pixels - 1]); | 229 EXPECT_EQ(SK_ColorGREEN, pixels[viewport_pixels - 1]); |
230 | 230 |
231 list.clear(); | 231 list.clear(); |
232 | 232 |
233 // Draw a smaller magenta rect without filling the viewport in a separate | 233 // Draw a smaller magenta rect without filling the viewport in a separate |
234 // frame. | 234 // frame. |
235 gfx::Rect smaller_rect(20, 20, 60, 60); | 235 gfx::Rect smaller_rect(20, 20, 60, 60); |
236 | 236 |
237 RenderPass::Id root_smaller_pass_id(2, 0); | 237 RenderPass::Id root_smaller_pass_id(2, 0); |
238 TestRenderPass* root_smaller_pass = AddRenderPass( | 238 TestRenderPass* root_smaller_pass = AddRenderPass( |
239 list, root_smaller_pass_id, viewport_rect, gfx::Transform()); | 239 &list, root_smaller_pass_id, viewport_rect, gfx::Transform()); |
240 AddQuad(root_smaller_pass, smaller_rect, SK_ColorMAGENTA); | 240 AddQuad(root_smaller_pass, smaller_rect, SK_ColorMAGENTA); |
241 | 241 |
242 renderer()->DecideRenderPassAllocationsForFrame(list); | 242 renderer()->DecideRenderPassAllocationsForFrame(list); |
243 renderer()->DrawFrame(list); | 243 renderer()->DrawFrame(list); |
244 renderer()->GetFramebufferPixels(pixels.get(), viewport_rect); | 244 renderer()->GetFramebufferPixels(pixels.get(), viewport_rect); |
245 | 245 |
246 // If we didn't clear, the borders should still be green. | 246 // If we didn't clear, the borders should still be green. |
247 EXPECT_EQ(SK_ColorGREEN, pixels[0]); | 247 EXPECT_EQ(SK_ColorGREEN, pixels[0]); |
248 EXPECT_EQ(SK_ColorGREEN, pixels[viewport_pixels - 1]); | 248 EXPECT_EQ(SK_ColorGREEN, pixels[viewport_pixels - 1]); |
249 | 249 |
250 EXPECT_EQ( | 250 EXPECT_EQ( |
251 SK_ColorMAGENTA, | 251 SK_ColorMAGENTA, |
252 pixels[smaller_rect.y() * viewport_rect.width() + smaller_rect.x()]); | 252 pixels[smaller_rect.y() * viewport_rect.width() + smaller_rect.x()]); |
253 EXPECT_EQ(SK_ColorMAGENTA, | 253 EXPECT_EQ(SK_ColorMAGENTA, |
254 pixels[(smaller_rect.bottom() - 1) * viewport_rect.width() + | 254 pixels[(smaller_rect.bottom() - 1) * viewport_rect.width() + |
255 smaller_rect.right() - 1]); | 255 smaller_rect.right() - 1]); |
256 } | 256 } |
257 | 257 |
258 } // namespace | 258 } // namespace |
259 } // namespace cc | 259 } // namespace cc |
OLD | NEW |