OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
| 6 #include "base/run_loop.h" |
6 #include "cc/input/selection.h" | 7 #include "cc/input/selection.h" |
7 #include "cc/ipc/traits_test_service.mojom.h" | 8 #include "cc/ipc/traits_test_service.mojom.h" |
8 #include "cc/output/copy_output_result.h" | 9 #include "cc/output/copy_output_result.h" |
9 #include "cc/quads/debug_border_draw_quad.h" | 10 #include "cc/quads/debug_border_draw_quad.h" |
10 #include "cc/quads/render_pass.h" | 11 #include "cc/quads/render_pass.h" |
11 #include "cc/quads/render_pass_draw_quad.h" | 12 #include "cc/quads/render_pass_draw_quad.h" |
12 #include "cc/quads/solid_color_draw_quad.h" | 13 #include "cc/quads/solid_color_draw_quad.h" |
13 #include "cc/quads/stream_video_draw_quad.h" | 14 #include "cc/quads/stream_video_draw_quad.h" |
14 #include "cc/quads/surface_draw_quad.h" | 15 #include "cc/quads/surface_draw_quad.h" |
15 #include "cc/quads/texture_draw_quad.h" | 16 #include "cc/quads/texture_draw_quad.h" |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 const EchoTransferableResourceCallback& callback) override { | 125 const EchoTransferableResourceCallback& callback) override { |
125 callback.Run(t); | 126 callback.Run(t); |
126 } | 127 } |
127 | 128 |
128 mojo::BindingSet<TraitsTestService> traits_test_bindings_; | 129 mojo::BindingSet<TraitsTestService> traits_test_bindings_; |
129 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); | 130 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); |
130 }; | 131 }; |
131 | 132 |
132 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} | 133 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} |
133 | 134 |
134 void StubCopyOutputResultCallback(const gpu::SyncToken& sync_token, | 135 void CopyOutputResultCallback(base::Closure quit_closure, |
135 bool is_lost) {} | 136 const gpu::SyncToken& expected_sync_token, |
| 137 bool expected_is_lost, |
| 138 const gpu::SyncToken& sync_token, |
| 139 bool is_lost) { |
| 140 EXPECT_EQ(expected_sync_token, sync_token); |
| 141 EXPECT_EQ(expected_is_lost, is_lost); |
| 142 quit_closure.Run(); |
| 143 } |
136 | 144 |
137 } // namespace | 145 } // namespace |
138 | 146 |
139 TEST_F(StructTraitsTest, BeginFrameArgs) { | 147 TEST_F(StructTraitsTest, BeginFrameArgs) { |
140 const base::TimeTicks frame_time = base::TimeTicks::Now(); | 148 const base::TimeTicks frame_time = base::TimeTicks::Now(); |
141 const base::TimeTicks deadline = base::TimeTicks::Now(); | 149 const base::TimeTicks deadline = base::TimeTicks::Now(); |
142 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337); | 150 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337); |
143 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL; | 151 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL; |
144 const bool on_critical_path = true; | 152 const bool on_critical_path = true; |
145 BeginFrameArgs input; | 153 BeginFrameArgs input; |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 EXPECT_EQ(in_bitmap->getSize(), out_bitmap->getSize()); | 432 EXPECT_EQ(in_bitmap->getSize(), out_bitmap->getSize()); |
425 EXPECT_EQ(0, std::memcmp(in_bitmap->getPixels(), out_bitmap->getPixels(), | 433 EXPECT_EQ(0, std::memcmp(in_bitmap->getPixels(), out_bitmap->getPixels(), |
426 in_bitmap->getSize())); | 434 in_bitmap->getSize())); |
427 } | 435 } |
428 | 436 |
429 TEST_F(StructTraitsTest, CopyOutputResult_Texture) { | 437 TEST_F(StructTraitsTest, CopyOutputResult_Texture) { |
430 const gfx::Size size(1234, 5678); | 438 const gfx::Size size(1234, 5678); |
431 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { | 439 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { |
432 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3}; | 440 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3}; |
433 const uint32_t target = 3; | 441 const uint32_t target = 3; |
434 auto callback = | 442 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0, |
435 SingleReleaseCallback::Create(base::Bind(StubCopyOutputResultCallback)); | 443 gpu::CommandBufferId::FromUnsafeValue(0x123), |
| 444 71234838); |
| 445 bool is_lost = true; |
| 446 base::RunLoop run_loop; |
| 447 auto callback = SingleReleaseCallback::Create(base::Bind( |
| 448 CopyOutputResultCallback, run_loop.QuitClosure(), sync_token, is_lost)); |
436 gpu::Mailbox mailbox; | 449 gpu::Mailbox mailbox; |
437 mailbox.SetName(mailbox_name); | 450 mailbox.SetName(mailbox_name); |
438 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); | 451 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); |
439 | 452 |
440 auto input = CopyOutputResult::CreateTextureResult(size, texture_mailbox, | 453 auto input = CopyOutputResult::CreateTextureResult(size, texture_mailbox, |
441 std::move(callback)); | 454 std::move(callback)); |
442 | 455 |
443 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); | 456 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
444 std::unique_ptr<CopyOutputResult> output; | 457 std::unique_ptr<CopyOutputResult> output; |
445 proxy->EchoCopyOutputResult(std::move(input), &output); | 458 proxy->EchoCopyOutputResult(std::move(input), &output); |
446 | 459 |
447 EXPECT_FALSE(output->HasBitmap()); | 460 EXPECT_FALSE(output->HasBitmap()); |
448 EXPECT_TRUE(output->HasTexture()); | 461 EXPECT_TRUE(output->HasTexture()); |
449 EXPECT_EQ(size, output->size()); | 462 EXPECT_EQ(size, output->size()); |
450 | 463 |
451 TextureMailbox out_mailbox; | 464 TextureMailbox out_mailbox; |
452 std::unique_ptr<SingleReleaseCallback> out_callback; | 465 std::unique_ptr<SingleReleaseCallback> out_callback; |
453 output->TakeTexture(&out_mailbox, &out_callback); | 466 output->TakeTexture(&out_mailbox, &out_callback); |
454 EXPECT_EQ(mailbox, out_mailbox.mailbox()); | 467 EXPECT_EQ(mailbox, out_mailbox.mailbox()); |
| 468 out_callback->Run(sync_token, is_lost); |
| 469 // If CopyOutputResultCallback is called (which is the intended behaviour), |
| 470 // this will exit. Otherwise, this test will time out and fail. |
| 471 // In CopyOutputResultCallback we verify that the given sync_token and is_lost |
| 472 // have their intended values. |
| 473 run_loop.Run(); |
455 } | 474 } |
456 | 475 |
457 TEST_F(StructTraitsTest, FilterOperation) { | 476 TEST_F(StructTraitsTest, FilterOperation) { |
458 const FilterOperation inputs[] = { | 477 const FilterOperation inputs[] = { |
459 FilterOperation::CreateBlurFilter(20), | 478 FilterOperation::CreateBlurFilter(20), |
460 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, | 479 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, |
461 SkColorSetARGB(255, 40, 0, 0)), | 480 SkColorSetARGB(255, 40, 0, 0)), |
462 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( | 481 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( |
463 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), | 482 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), |
464 SkIntToScalar(9), SK_ColorBLACK, | 483 SkIntToScalar(9), SK_ColorBLACK, |
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1086 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); | 1105 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); |
1087 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); | 1106 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); |
1088 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); | 1107 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); |
1089 EXPECT_EQ(color_space, out_quad->color_space); | 1108 EXPECT_EQ(color_space, out_quad->color_space); |
1090 EXPECT_EQ(resource_offset, out_quad->resource_offset); | 1109 EXPECT_EQ(resource_offset, out_quad->resource_offset); |
1091 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); | 1110 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); |
1092 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); | 1111 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); |
1093 } | 1112 } |
1094 | 1113 |
1095 } // namespace cc | 1114 } // namespace cc |
OLD | NEW |