OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/test/pixel_test.h" | 5 #include "cc/test/pixel_test.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 namespace cc { | 29 namespace cc { |
30 | 30 |
31 PixelTest::PixelTest() | 31 PixelTest::PixelTest() |
32 : device_viewport_size_(gfx::Size(200, 200)), | 32 : device_viewport_size_(gfx::Size(200, 200)), |
33 disable_picture_quad_image_filtering_(false), | 33 disable_picture_quad_image_filtering_(false), |
34 output_surface_client_(new FakeOutputSurfaceClient) {} | 34 output_surface_client_(new FakeOutputSurfaceClient) {} |
35 | 35 |
36 PixelTest::~PixelTest() {} | 36 PixelTest::~PixelTest() {} |
37 | 37 |
38 bool PixelTest::RunPixelTest(RenderPassList* pass_list, | 38 bool PixelTest::RunPixelTest(RenderPassList* pass_list, |
39 OffscreenContextOption provide_offscreen_context, | |
40 const base::FilePath& ref_file, | 39 const base::FilePath& ref_file, |
41 const PixelComparator& comparator) { | 40 const PixelComparator& comparator) { |
42 return RunPixelTestWithReadbackTarget(pass_list, | 41 return RunPixelTestWithReadbackTarget(pass_list, |
43 pass_list->back(), | 42 pass_list->back(), |
44 provide_offscreen_context, | |
45 ref_file, | 43 ref_file, |
46 comparator); | 44 comparator); |
47 } | 45 } |
48 | 46 |
49 bool PixelTest::RunPixelTestWithReadbackTarget( | 47 bool PixelTest::RunPixelTestWithReadbackTarget( |
50 RenderPassList* pass_list, | 48 RenderPassList* pass_list, |
51 RenderPass* target, | 49 RenderPass* target, |
52 OffscreenContextOption provide_offscreen_context, | |
53 const base::FilePath& ref_file, | 50 const base::FilePath& ref_file, |
54 const PixelComparator& comparator) { | 51 const PixelComparator& comparator) { |
55 base::RunLoop run_loop; | 52 base::RunLoop run_loop; |
56 | 53 |
57 target->copy_requests.push_back(CopyOutputRequest::CreateBitmapRequest( | 54 target->copy_requests.push_back(CopyOutputRequest::CreateBitmapRequest( |
58 base::Bind(&PixelTest::ReadbackResult, | 55 base::Bind(&PixelTest::ReadbackResult, |
59 base::Unretained(this), | 56 base::Unretained(this), |
60 run_loop.QuitClosure()))); | 57 run_loop.QuitClosure()))); |
61 | 58 |
62 scoped_refptr<ContextProvider> offscreen_contexts; | |
63 switch (provide_offscreen_context) { | |
64 case NoOffscreenContext: | |
65 break; | |
66 case WithOffscreenContext: | |
67 offscreen_contexts = new TestInProcessContextProvider; | |
68 CHECK(offscreen_contexts->BindToCurrentThread()); | |
69 break; | |
70 } | |
71 | |
72 float device_scale_factor = 1.f; | 59 float device_scale_factor = 1.f; |
73 gfx::Rect device_viewport_rect = | 60 gfx::Rect device_viewport_rect = |
74 gfx::Rect(device_viewport_size_) + external_device_viewport_offset_; | 61 gfx::Rect(device_viewport_size_) + external_device_viewport_offset_; |
75 gfx::Rect device_clip_rect = external_device_clip_rect_.IsEmpty() | 62 gfx::Rect device_clip_rect = external_device_clip_rect_.IsEmpty() |
76 ? device_viewport_rect | 63 ? device_viewport_rect |
77 : external_device_clip_rect_; | 64 : external_device_clip_rect_; |
78 renderer_->DecideRenderPassAllocationsForFrame(*pass_list); | 65 renderer_->DecideRenderPassAllocationsForFrame(*pass_list); |
79 renderer_->DrawFrame(pass_list, | 66 renderer_->DrawFrame(pass_list, |
80 offscreen_contexts.get(), | |
81 device_scale_factor, | 67 device_scale_factor, |
82 device_viewport_rect, | 68 device_viewport_rect, |
83 device_clip_rect, | 69 device_clip_rect, |
84 disable_picture_quad_image_filtering_); | 70 disable_picture_quad_image_filtering_); |
85 | 71 |
86 // Wait for the readback to complete. | 72 // Wait for the readback to complete. |
87 resource_provider_->Finish(); | 73 resource_provider_->Finish(); |
88 run_loop.Run(); | 74 run_loop.Run(); |
89 | 75 |
90 return PixelsMatchReference(ref_file, comparator); | 76 return PixelsMatchReference(ref_file, comparator); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 153 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
168 resource_provider_ = ResourceProvider::Create( | 154 resource_provider_ = ResourceProvider::Create( |
169 output_surface_.get(), shared_bitmap_manager_.get(), 0, false, 1); | 155 output_surface_.get(), shared_bitmap_manager_.get(), 0, false, 1); |
170 renderer_ = | 156 renderer_ = |
171 SoftwareRenderer::Create( | 157 SoftwareRenderer::Create( |
172 this, &settings_, output_surface_.get(), resource_provider_.get()) | 158 this, &settings_, output_surface_.get(), resource_provider_.get()) |
173 .PassAs<DirectRenderer>(); | 159 .PassAs<DirectRenderer>(); |
174 } | 160 } |
175 | 161 |
176 } // namespace cc | 162 } // namespace cc |
OLD | NEW |