Chromium Code Reviews| 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 "cc/input/selection.h" | 6 #include "cc/input/selection.h" |
| 7 #include "cc/ipc/traits_test_service.mojom.h" | 7 #include "cc/ipc/traits_test_service.mojom.h" |
| 8 #include "cc/output/copy_output_result.h" | 8 #include "cc/output/copy_output_result.h" |
| 9 #include "cc/quads/debug_border_draw_quad.h" | 9 #include "cc/quads/debug_border_draw_quad.h" |
| 10 #include "cc/quads/render_pass.h" | 10 #include "cc/quads/render_pass.h" |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 const EchoCompositorFrameMetadataCallback& callback) override { | 50 const EchoCompositorFrameMetadataCallback& callback) override { |
| 51 callback.Run(c); | 51 callback.Run(c); |
| 52 } | 52 } |
| 53 | 53 |
| 54 void EchoCopyOutputRequest( | 54 void EchoCopyOutputRequest( |
| 55 const CopyOutputRequest& c, | 55 const CopyOutputRequest& c, |
| 56 const EchoCopyOutputRequestCallback& callback) override { | 56 const EchoCopyOutputRequestCallback& callback) override { |
| 57 callback.Run(std::move(c)); | 57 callback.Run(std::move(c)); |
| 58 } | 58 } |
| 59 | 59 |
| 60 void EchoCopyOutputResult( | |
| 61 const CopyOutputResult& c, | |
| 62 const EchoCopyOutputResultCallback& callback) override { | |
| 63 callback.Run(c); | |
| 64 } | |
| 65 | |
| 60 void EchoFilterOperation( | 66 void EchoFilterOperation( |
| 61 const FilterOperation& f, | 67 const FilterOperation& f, |
| 62 const EchoFilterOperationCallback& callback) override { | 68 const EchoFilterOperationCallback& callback) override { |
| 63 callback.Run(f); | 69 callback.Run(f); |
| 64 } | 70 } |
| 65 | 71 |
| 66 void EchoFilterOperations( | 72 void EchoFilterOperations( |
| 67 const FilterOperations& f, | 73 const FilterOperations& f, |
| 68 const EchoFilterOperationsCallback& callback) override { | 74 const EchoFilterOperationsCallback& callback) override { |
| 69 callback.Run(f); | 75 callback.Run(f); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 118 const EchoTransferableResourceCallback& callback) override { | 124 const EchoTransferableResourceCallback& callback) override { |
| 119 callback.Run(t); | 125 callback.Run(t); |
| 120 } | 126 } |
| 121 | 127 |
| 122 mojo::BindingSet<TraitsTestService> traits_test_bindings_; | 128 mojo::BindingSet<TraitsTestService> traits_test_bindings_; |
| 123 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); | 129 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); |
| 124 }; | 130 }; |
| 125 | 131 |
| 126 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} | 132 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} |
| 127 | 133 |
| 134 void StubCopyOutputResultCallback(const gpu::SyncToken& sync_token, | |
| 135 bool is_lost) {} | |
| 136 | |
| 128 } // namespace | 137 } // namespace |
| 129 | 138 |
| 130 TEST_F(StructTraitsTest, BeginFrameArgs) { | 139 TEST_F(StructTraitsTest, BeginFrameArgs) { |
| 131 const base::TimeTicks frame_time = base::TimeTicks::Now(); | 140 const base::TimeTicks frame_time = base::TimeTicks::Now(); |
| 132 const base::TimeTicks deadline = base::TimeTicks::Now(); | 141 const base::TimeTicks deadline = base::TimeTicks::Now(); |
| 133 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337); | 142 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337); |
| 134 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL; | 143 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL; |
| 135 const bool on_critical_path = true; | 144 const bool on_critical_path = true; |
| 136 BeginFrameArgs input; | 145 BeginFrameArgs input; |
| 137 input.frame_time = frame_time; | 146 input.frame_time = frame_time; |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 363 base::UnguessableToken::Deserialize(0xdeadbeef, 0xdeadf00d); | 372 base::UnguessableToken::Deserialize(0xdeadbeef, 0xdeadf00d); |
| 364 gpu::Mailbox mailbox; | 373 gpu::Mailbox mailbox; |
| 365 mailbox.SetName(mailbox_name); | 374 mailbox.SetName(mailbox_name); |
| 366 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); | 375 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); |
| 367 | 376 |
| 368 // Test with bitmap. | 377 // Test with bitmap. |
| 369 std::unique_ptr<CopyOutputRequest> input; | 378 std::unique_ptr<CopyOutputRequest> input; |
| 370 input = CopyOutputRequest::CreateBitmapRequest(callback); | 379 input = CopyOutputRequest::CreateBitmapRequest(callback); |
| 371 input->set_area(area); | 380 input->set_area(area); |
| 372 input->set_source(source); | 381 input->set_source(source); |
| 373 | |
| 374 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); | 382 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| 375 CopyOutputRequest output; | 383 CopyOutputRequest output; |
| 376 proxy->EchoCopyOutputRequest(*input.get(), &output); | 384 proxy->EchoCopyOutputRequest(*input.get(), &output); |
| 377 | 385 |
| 378 EXPECT_TRUE(output.force_bitmap_result()); | 386 EXPECT_TRUE(output.force_bitmap_result()); |
| 379 EXPECT_FALSE(output.has_texture_mailbox()); | 387 EXPECT_FALSE(output.has_texture_mailbox()); |
| 380 EXPECT_TRUE(output.has_area()); | 388 EXPECT_TRUE(output.has_area()); |
| 381 EXPECT_EQ(area, output.area()); | 389 EXPECT_EQ(area, output.area()); |
| 382 EXPECT_EQ(source, output.source()); | 390 EXPECT_EQ(source, output.source()); |
| 383 | 391 |
| 384 // Test with texture mailbox. | 392 // Test with texture mailbox. |
| 385 input = CopyOutputRequest::CreateRequest(callback); | 393 input = CopyOutputRequest::CreateRequest(callback); |
| 386 input->SetTextureMailbox(texture_mailbox); | 394 input->SetTextureMailbox(texture_mailbox); |
| 387 | 395 |
| 388 CopyOutputRequest output2; | 396 CopyOutputRequest output2; |
| 389 proxy->EchoCopyOutputRequest(*input.get(), &output2); | 397 proxy->EchoCopyOutputRequest(*input.get(), &output2); |
| 390 | 398 |
| 391 EXPECT_TRUE(output2.has_texture_mailbox()); | 399 EXPECT_TRUE(output2.has_texture_mailbox()); |
| 392 EXPECT_FALSE(output2.has_area()); | 400 EXPECT_FALSE(output2.has_area()); |
| 393 EXPECT_EQ(mailbox, output2.texture_mailbox().mailbox()); | 401 EXPECT_EQ(mailbox, output2.texture_mailbox().mailbox()); |
| 394 EXPECT_EQ(target, output2.texture_mailbox().target()); | 402 EXPECT_EQ(target, output2.texture_mailbox().target()); |
| 395 EXPECT_FALSE(output2.has_source()); | 403 EXPECT_FALSE(output2.has_source()); |
| 396 } | 404 } |
| 397 | 405 |
| 406 TEST_F(StructTraitsTest, CopyOutputResult) { | |
| 407 const gfx::Size size(1234, 5678); | |
| 408 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { | |
| 409 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3}; | |
| 410 const uint32_t target = 3; | |
| 411 auto callback = | |
| 412 SingleReleaseCallback::Create(base::Bind(StubCopyOutputResultCallback)); | |
| 413 gpu::Mailbox mailbox; | |
| 414 mailbox.SetName(mailbox_name); | |
| 415 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); | |
| 416 auto bitmap = base::MakeUnique<SkBitmap>(); | |
| 417 bitmap->allocN32Pixels(7, 8); | |
| 418 bitmap->eraseARGB(123, 213, 77, 33); | |
| 419 | |
| 420 // Bitmap test | |
| 421 auto in_bitmap = base::MakeUnique<SkBitmap>(*bitmap); | |
| 422 auto input = CopyOutputResult::CreateBitmapResult(std::move(in_bitmap)); | |
| 423 | |
| 424 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); | |
| 425 CopyOutputResult output; | |
| 426 proxy->EchoCopyOutputResult(*input, &output); | |
| 427 | |
| 428 EXPECT_TRUE(output.HasBitmap()); | |
| 429 EXPECT_FALSE(output.HasTexture()); | |
| 430 EXPECT_EQ(input->size(), output.size()); | |
| 431 std::unique_ptr<SkBitmap> out_bitmap = output.TakeBitmap(); | |
| 432 EXPECT_EQ(bitmap->getSize(), out_bitmap->getSize()); | |
| 433 EXPECT_EQ(0, std::memcmp(bitmap->getPixels(), out_bitmap->getPixels(), | |
| 434 bitmap->getSize())); | |
| 435 | |
| 436 // Texture test | |
|
vmpstr
2017/01/31 21:32:19
nit: Can you create a different TEST_F for this (e
| |
| 437 input = CopyOutputResult::CreateTextureResult(size, texture_mailbox, | |
| 438 std::move(callback)); | |
| 439 | |
| 440 CopyOutputResult output2; | |
| 441 proxy->EchoCopyOutputResult(*input, &output2); | |
| 442 | |
| 443 EXPECT_FALSE(output2.HasBitmap()); | |
| 444 EXPECT_TRUE(output2.HasTexture()); | |
| 445 EXPECT_EQ(size, output2.size()); | |
| 446 TextureMailbox out_mailbox; | |
| 447 std::unique_ptr<SingleReleaseCallback> out_callback; | |
| 448 output2.TakeTexture(&out_mailbox, &out_callback); | |
| 449 EXPECT_EQ(mailbox, out_mailbox.mailbox()); | |
| 450 } | |
| 451 | |
| 398 TEST_F(StructTraitsTest, FilterOperation) { | 452 TEST_F(StructTraitsTest, FilterOperation) { |
| 399 const FilterOperation inputs[] = { | 453 const FilterOperation inputs[] = { |
| 400 FilterOperation::CreateBlurFilter(20), | 454 FilterOperation::CreateBlurFilter(20), |
| 401 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, | 455 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, |
| 402 SkColorSetARGB(255, 40, 0, 0)), | 456 SkColorSetARGB(255, 40, 0, 0)), |
| 403 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( | 457 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( |
| 404 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), | 458 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), |
| 405 SkIntToScalar(9), SK_ColorBLACK, | 459 SkIntToScalar(9), SK_ColorBLACK, |
| 406 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, | 460 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, |
| 407 nullptr))}; | 461 nullptr))}; |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1023 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); | 1077 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); |
| 1024 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); | 1078 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); |
| 1025 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); | 1079 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); |
| 1026 EXPECT_EQ(color_space, out_quad->color_space); | 1080 EXPECT_EQ(color_space, out_quad->color_space); |
| 1027 EXPECT_EQ(resource_offset, out_quad->resource_offset); | 1081 EXPECT_EQ(resource_offset, out_quad->resource_offset); |
| 1028 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); | 1082 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); |
| 1029 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); | 1083 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); |
| 1030 } | 1084 } |
| 1031 | 1085 |
| 1032 } // namespace cc | 1086 } // namespace cc |
| OLD | NEW |