| 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 |