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 "base/run_loop.h" | 7 #include "base/run_loop.h" |
8 #include "cc/output/compositor_frame_metadata.h" | 8 #include "cc/output/compositor_frame_metadata.h" |
9 #include "cc/output/copy_output_request.h" | 9 #include "cc/output/copy_output_request.h" |
10 #include "cc/output/copy_output_result.h" | 10 #include "cc/output/copy_output_result.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
25 #include "third_party/skia/include/core/SkCanvas.h" | 25 #include "third_party/skia/include/core/SkCanvas.h" |
26 | 26 |
27 namespace cc { | 27 namespace cc { |
28 namespace { | 28 namespace { |
29 | 29 |
30 class SoftwareRendererTest : public testing::Test, public RendererClient { | 30 class SoftwareRendererTest : public testing::Test, public RendererClient { |
31 public: | 31 public: |
32 void InitializeRenderer( | 32 void InitializeRenderer( |
33 scoped_ptr<SoftwareOutputDevice> software_output_device) { | 33 scoped_ptr<SoftwareOutputDevice> software_output_device) { |
34 output_surface_ = FakeOutputSurface::CreateSoftware( | 34 output_surface_ = |
35 software_output_device.Pass()); | 35 FakeOutputSurface::CreateSoftware(std::move(software_output_device)); |
36 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 36 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
37 | 37 |
38 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 38 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
39 resource_provider_ = FakeResourceProvider::Create( | 39 resource_provider_ = FakeResourceProvider::Create( |
40 output_surface_.get(), shared_bitmap_manager_.get()); | 40 output_surface_.get(), shared_bitmap_manager_.get()); |
41 renderer_ = SoftwareRenderer::Create( | 41 renderer_ = SoftwareRenderer::Create( |
42 this, &settings_, output_surface_.get(), resource_provider()); | 42 this, &settings_, output_surface_.get(), resource_provider()); |
43 } | 43 } |
44 | 44 |
45 ResourceProvider* resource_provider() const { | 45 ResourceProvider* resource_provider() const { |
(...skipping 16 matching lines...) Expand all Loading... |
62 base::Bind(&SoftwareRendererTest::SaveBitmapResult, | 62 base::Bind(&SoftwareRendererTest::SaveBitmapResult, |
63 base::Unretained(&bitmap_result), | 63 base::Unretained(&bitmap_result), |
64 loop.QuitClosure()))); | 64 loop.QuitClosure()))); |
65 | 65 |
66 renderer()->DrawFrame(list, | 66 renderer()->DrawFrame(list, |
67 device_scale_factor, | 67 device_scale_factor, |
68 device_viewport_rect, | 68 device_viewport_rect, |
69 device_viewport_rect, | 69 device_viewport_rect, |
70 false); | 70 false); |
71 loop.Run(); | 71 loop.Run(); |
72 return bitmap_result.Pass(); | 72 return bitmap_result; |
73 } | 73 } |
74 | 74 |
75 static void SaveBitmapResult(scoped_ptr<SkBitmap>* bitmap_result, | 75 static void SaveBitmapResult(scoped_ptr<SkBitmap>* bitmap_result, |
76 const base::Closure& quit_closure, | 76 const base::Closure& quit_closure, |
77 scoped_ptr<CopyOutputResult> result) { | 77 scoped_ptr<CopyOutputResult> result) { |
78 DCHECK(result->HasBitmap()); | 78 DCHECK(result->HasBitmap()); |
79 *bitmap_result = result->TakeBitmap(); | 79 *bitmap_result = result->TakeBitmap(); |
80 quit_closure.Run(); | 80 quit_closure.Run(); |
81 } | 81 } |
82 | 82 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 root_render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 116 root_render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
117 inner_quad->SetNew( | 117 inner_quad->SetNew( |
118 shared_quad_state, inner_rect, inner_rect, SK_ColorCYAN, false); | 118 shared_quad_state, inner_rect, inner_rect, SK_ColorCYAN, false); |
119 inner_quad->visible_rect = visible_rect; | 119 inner_quad->visible_rect = visible_rect; |
120 SolidColorDrawQuad* outer_quad = | 120 SolidColorDrawQuad* outer_quad = |
121 root_render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 121 root_render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
122 outer_quad->SetNew( | 122 outer_quad->SetNew( |
123 shared_quad_state, outer_rect, outer_rect, SK_ColorYELLOW, false); | 123 shared_quad_state, outer_rect, outer_rect, SK_ColorYELLOW, false); |
124 | 124 |
125 RenderPassList list; | 125 RenderPassList list; |
126 list.push_back(root_render_pass.Pass()); | 126 list.push_back(std::move(root_render_pass)); |
127 | 127 |
128 float device_scale_factor = 1.f; | 128 float device_scale_factor = 1.f; |
129 gfx::Rect device_viewport_rect(outer_size); | 129 gfx::Rect device_viewport_rect(outer_size); |
130 scoped_ptr<SkBitmap> output = | 130 scoped_ptr<SkBitmap> output = |
131 DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); | 131 DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); |
132 EXPECT_EQ(outer_rect.width(), output->info().width()); | 132 EXPECT_EQ(outer_rect.width(), output->info().width()); |
133 EXPECT_EQ(outer_rect.height(), output->info().height()); | 133 EXPECT_EQ(outer_rect.height(), output->info().height()); |
134 | 134 |
135 EXPECT_EQ(SK_ColorYELLOW, output->getColor(0, 0)); | 135 EXPECT_EQ(SK_ColorYELLOW, output->getColor(0, 0)); |
136 EXPECT_EQ(SK_ColorYELLOW, | 136 EXPECT_EQ(SK_ColorYELLOW, |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 inner_quad->SetNew(shared_quad_state, inner_rect, inner_rect, inner_rect, | 188 inner_quad->SetNew(shared_quad_state, inner_rect, inner_rect, inner_rect, |
189 resource_cyan, gfx::RectF(gfx::SizeF(inner_size)), | 189 resource_cyan, gfx::RectF(gfx::SizeF(inner_size)), |
190 inner_size, false, false); | 190 inner_size, false, false); |
191 TileDrawQuad* outer_quad = | 191 TileDrawQuad* outer_quad = |
192 root_render_pass->CreateAndAppendDrawQuad<TileDrawQuad>(); | 192 root_render_pass->CreateAndAppendDrawQuad<TileDrawQuad>(); |
193 outer_quad->SetNew(shared_quad_state, outer_rect, outer_rect, outer_rect, | 193 outer_quad->SetNew(shared_quad_state, outer_rect, outer_rect, outer_rect, |
194 resource_yellow, gfx::RectF(gfx::SizeF(outer_size)), | 194 resource_yellow, gfx::RectF(gfx::SizeF(outer_size)), |
195 outer_size, false, false); | 195 outer_size, false, false); |
196 | 196 |
197 RenderPassList list; | 197 RenderPassList list; |
198 list.push_back(root_render_pass.Pass()); | 198 list.push_back(std::move(root_render_pass)); |
199 | 199 |
200 float device_scale_factor = 1.f; | 200 float device_scale_factor = 1.f; |
201 gfx::Rect device_viewport_rect(outer_size); | 201 gfx::Rect device_viewport_rect(outer_size); |
202 scoped_ptr<SkBitmap> output = | 202 scoped_ptr<SkBitmap> output = |
203 DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); | 203 DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); |
204 EXPECT_EQ(outer_rect.width(), output->info().width()); | 204 EXPECT_EQ(outer_rect.width(), output->info().width()); |
205 EXPECT_EQ(outer_rect.height(), output->info().height()); | 205 EXPECT_EQ(outer_rect.height(), output->info().height()); |
206 | 206 |
207 EXPECT_EQ(SK_ColorYELLOW, output->getColor(0, 0)); | 207 EXPECT_EQ(SK_ColorYELLOW, output->getColor(0, 0)); |
208 EXPECT_EQ(SK_ColorYELLOW, | 208 EXPECT_EQ(SK_ColorYELLOW, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 SkXfermode::kSrcOver_Mode, | 250 SkXfermode::kSrcOver_Mode, |
251 0); | 251 0); |
252 TileDrawQuad* quad = | 252 TileDrawQuad* quad = |
253 root_render_pass->CreateAndAppendDrawQuad<TileDrawQuad>(); | 253 root_render_pass->CreateAndAppendDrawQuad<TileDrawQuad>(); |
254 quad->SetNew(shared_quad_state, tile_rect, tile_rect, tile_rect, | 254 quad->SetNew(shared_quad_state, tile_rect, tile_rect, tile_rect, |
255 resource_cyan, gfx::RectF(gfx::SizeF(tile_size)), tile_size, | 255 resource_cyan, gfx::RectF(gfx::SizeF(tile_size)), tile_size, |
256 false, false); | 256 false, false); |
257 quad->visible_rect = visible_rect; | 257 quad->visible_rect = visible_rect; |
258 | 258 |
259 RenderPassList list; | 259 RenderPassList list; |
260 list.push_back(root_render_pass.Pass()); | 260 list.push_back(std::move(root_render_pass)); |
261 | 261 |
262 float device_scale_factor = 1.f; | 262 float device_scale_factor = 1.f; |
263 gfx::Rect device_viewport_rect(tile_size); | 263 gfx::Rect device_viewport_rect(tile_size); |
264 scoped_ptr<SkBitmap> output = | 264 scoped_ptr<SkBitmap> output = |
265 DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); | 265 DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); |
266 EXPECT_EQ(tile_rect.width(), output->info().width()); | 266 EXPECT_EQ(tile_rect.width(), output->info().width()); |
267 EXPECT_EQ(tile_rect.height(), output->info().height()); | 267 EXPECT_EQ(tile_rect.height(), output->info().height()); |
268 | 268 |
269 // Check portion of tile not in visible rect isn't drawn. | 269 // Check portion of tile not in visible rect isn't drawn. |
270 const unsigned int kTransparent = SK_ColorTRANSPARENT; | 270 const unsigned int kTransparent = SK_ColorTRANSPARENT; |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 EXPECT_EQ( | 390 EXPECT_EQ( |
391 SK_ColorMAGENTA, | 391 SK_ColorMAGENTA, |
392 output->getColor(interior_visible_rect.x(), interior_visible_rect.y())); | 392 output->getColor(interior_visible_rect.x(), interior_visible_rect.y())); |
393 EXPECT_EQ(SK_ColorMAGENTA, | 393 EXPECT_EQ(SK_ColorMAGENTA, |
394 output->getColor(interior_visible_rect.right() - 1, | 394 output->getColor(interior_visible_rect.right() - 1, |
395 interior_visible_rect.bottom() - 1)); | 395 interior_visible_rect.bottom() - 1)); |
396 } | 396 } |
397 | 397 |
398 } // namespace | 398 } // namespace |
399 } // namespace cc | 399 } // namespace cc |
OLD | NEW |