OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/mus/public/cpp/surfaces/surfaces_type_converters.h" | 5 #include "components/mus/public/cpp/surfaces/surfaces_type_converters.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <utility> | 10 #include <utility> |
11 | 11 |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
13 #include "cc/output/compositor_frame.h" | 13 #include "cc/output/compositor_frame.h" |
14 #include "cc/output/compositor_frame_metadata.h" | 14 #include "cc/output/compositor_frame_metadata.h" |
15 #include "cc/output/delegated_frame_data.h" | 15 #include "cc/output/delegated_frame_data.h" |
16 #include "cc/quads/debug_border_draw_quad.h" | 16 #include "cc/quads/debug_border_draw_quad.h" |
17 #include "cc/quads/draw_quad.h" | 17 #include "cc/quads/draw_quad.h" |
18 #include "cc/quads/render_pass.h" | 18 #include "cc/quads/render_pass.h" |
19 #include "cc/quads/render_pass_draw_quad.h" | 19 #include "cc/quads/render_pass_draw_quad.h" |
20 #include "cc/quads/shared_quad_state.h" | 20 #include "cc/quads/shared_quad_state.h" |
21 #include "cc/quads/solid_color_draw_quad.h" | 21 #include "cc/quads/solid_color_draw_quad.h" |
22 #include "cc/quads/surface_draw_quad.h" | 22 #include "cc/quads/surface_draw_quad.h" |
23 #include "cc/quads/texture_draw_quad.h" | 23 #include "cc/quads/texture_draw_quad.h" |
24 #include "cc/quads/tile_draw_quad.h" | 24 #include "cc/quads/tile_draw_quad.h" |
25 #include "cc/quads/yuv_video_draw_quad.h" | 25 #include "cc/quads/yuv_video_draw_quad.h" |
26 #include "cc/surfaces/surface_id_allocator.h" | 26 #include "cc/surfaces/surface_id_allocator.h" |
27 #include "components/mus/public/cpp/surfaces/custom_surface_converter.h" | 27 #include "components/mus/public/cpp/surfaces/custom_surface_converter.h" |
28 #include "ui/gfx/mojo/transform_type_converters.h" | |
29 | 28 |
30 using mus::mojom::Color; | 29 using mus::mojom::Color; |
31 using mus::mojom::ColorPtr; | 30 using mus::mojom::ColorPtr; |
32 using mus::mojom::CompositorFrame; | 31 using mus::mojom::CompositorFrame; |
33 using mus::mojom::CompositorFramePtr; | 32 using mus::mojom::CompositorFramePtr; |
34 using mus::mojom::CompositorFrameMetadata; | 33 using mus::mojom::CompositorFrameMetadata; |
35 using mus::mojom::CompositorFrameMetadataPtr; | 34 using mus::mojom::CompositorFrameMetadataPtr; |
36 using mus::mojom::DebugBorderQuadState; | 35 using mus::mojom::DebugBorderQuadState; |
37 using mus::mojom::DebugBorderQuadStatePtr; | 36 using mus::mojom::DebugBorderQuadStatePtr; |
38 using mus::mojom::Pass; | 37 using mus::mojom::Pass; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 "REC_601 enum value must match"); | 82 "REC_601 enum value must match"); |
84 // TODO(jamesr): Add REC_709 and JPEG to the YUVColorSpace enum upstream in | 83 // TODO(jamesr): Add REC_709 and JPEG to the YUVColorSpace enum upstream in |
85 // mojo. | 84 // mojo. |
86 | 85 |
87 namespace { | 86 namespace { |
88 | 87 |
89 cc::SharedQuadState* ConvertSharedQuadState( | 88 cc::SharedQuadState* ConvertSharedQuadState( |
90 const mus::mojom::SharedQuadStatePtr& input, | 89 const mus::mojom::SharedQuadStatePtr& input, |
91 cc::RenderPass* render_pass) { | 90 cc::RenderPass* render_pass) { |
92 cc::SharedQuadState* state = render_pass->CreateAndAppendSharedQuadState(); | 91 cc::SharedQuadState* state = render_pass->CreateAndAppendSharedQuadState(); |
93 state->SetAll(input->quad_to_target_transform.To<gfx::Transform>(), | 92 state->SetAll(input->quad_to_target_transform, input->quad_layer_bounds, |
94 input->quad_layer_bounds, input->visible_quad_layer_rect, | 93 input->visible_quad_layer_rect, input->clip_rect, |
95 input->clip_rect, input->is_clipped, input->opacity, | 94 input->is_clipped, input->opacity, |
96 static_cast<::SkXfermode::Mode>(input->blend_mode), | 95 static_cast<::SkXfermode::Mode>(input->blend_mode), |
97 input->sorting_context_id); | 96 input->sorting_context_id); |
98 return state; | 97 return state; |
99 } | 98 } |
100 | 99 |
101 bool ConvertDrawQuad(const QuadPtr& input, | 100 bool ConvertDrawQuad(const QuadPtr& input, |
102 const CompositorFrameMetadataPtr& metadata, | 101 const CompositorFrameMetadataPtr& metadata, |
103 cc::SharedQuadState* sqs, | 102 cc::SharedQuadState* sqs, |
104 cc::RenderPass* render_pass, | 103 cc::RenderPass* render_pass, |
105 CustomSurfaceConverter* custom_converter) { | 104 CustomSurfaceConverter* custom_converter) { |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 NOTREACHED() << "Unsupported material " << input.material; | 342 NOTREACHED() << "Unsupported material " << input.material; |
344 } | 343 } |
345 return quad; | 344 return quad; |
346 } | 345 } |
347 | 346 |
348 // static | 347 // static |
349 mus::mojom::SharedQuadStatePtr | 348 mus::mojom::SharedQuadStatePtr |
350 TypeConverter<mus::mojom::SharedQuadStatePtr, cc::SharedQuadState>::Convert( | 349 TypeConverter<mus::mojom::SharedQuadStatePtr, cc::SharedQuadState>::Convert( |
351 const cc::SharedQuadState& input) { | 350 const cc::SharedQuadState& input) { |
352 mus::mojom::SharedQuadStatePtr state = SharedQuadState::New(); | 351 mus::mojom::SharedQuadStatePtr state = SharedQuadState::New(); |
353 state->quad_to_target_transform = | 352 state->quad_to_target_transform = input.quad_to_target_transform; |
354 Transform::From(input.quad_to_target_transform); | |
355 state->quad_layer_bounds = input.quad_layer_bounds; | 353 state->quad_layer_bounds = input.quad_layer_bounds; |
356 state->visible_quad_layer_rect = input.visible_quad_layer_rect; | 354 state->visible_quad_layer_rect = input.visible_quad_layer_rect; |
357 state->clip_rect = input.clip_rect; | 355 state->clip_rect = input.clip_rect; |
358 state->is_clipped = input.is_clipped; | 356 state->is_clipped = input.is_clipped; |
359 state->opacity = input.opacity; | 357 state->opacity = input.opacity; |
360 state->blend_mode = static_cast<mus::mojom::SkXfermode>(input.blend_mode); | 358 state->blend_mode = static_cast<mus::mojom::SkXfermode>(input.blend_mode); |
361 state->sorting_context_id = input.sorting_context_id; | 359 state->sorting_context_id = input.sorting_context_id; |
362 return state; | 360 return state; |
363 } | 361 } |
364 | 362 |
365 // static | 363 // static |
366 PassPtr TypeConverter<PassPtr, cc::RenderPass>::Convert( | 364 PassPtr TypeConverter<PassPtr, cc::RenderPass>::Convert( |
367 const cc::RenderPass& input) { | 365 const cc::RenderPass& input) { |
368 PassPtr pass = Pass::New(); | 366 PassPtr pass = Pass::New(); |
369 pass->id = input.id; | 367 pass->id = input.id; |
370 pass->output_rect = input.output_rect; | 368 pass->output_rect = input.output_rect; |
371 pass->damage_rect = input.damage_rect; | 369 pass->damage_rect = input.damage_rect; |
372 pass->transform_to_root_target = | 370 pass->transform_to_root_target = input.transform_to_root_target; |
373 Transform::From(input.transform_to_root_target); | |
374 pass->has_transparent_background = input.has_transparent_background; | 371 pass->has_transparent_background = input.has_transparent_background; |
375 Array<QuadPtr> quads(input.quad_list.size()); | 372 Array<QuadPtr> quads(input.quad_list.size()); |
376 Array<mus::mojom::SharedQuadStatePtr> shared_quad_state( | 373 Array<mus::mojom::SharedQuadStatePtr> shared_quad_state( |
377 input.shared_quad_state_list.size()); | 374 input.shared_quad_state_list.size()); |
378 const cc::SharedQuadState* last_sqs = nullptr; | 375 const cc::SharedQuadState* last_sqs = nullptr; |
379 cc::SharedQuadStateList::ConstIterator next_sqs_iter = | 376 cc::SharedQuadStateList::ConstIterator next_sqs_iter = |
380 input.shared_quad_state_list.begin(); | 377 input.shared_quad_state_list.begin(); |
381 for (auto iter = input.quad_list.cbegin(); iter != input.quad_list.cend(); | 378 for (auto iter = input.quad_list.cbegin(); iter != input.quad_list.cend(); |
382 ++iter) { | 379 ++iter) { |
383 const cc::DrawQuad& quad = **iter; | 380 const cc::DrawQuad& quad = **iter; |
(...skipping 16 matching lines...) Expand all Loading... |
400 } | 397 } |
401 | 398 |
402 // static | 399 // static |
403 std::unique_ptr<cc::RenderPass> ConvertToRenderPass( | 400 std::unique_ptr<cc::RenderPass> ConvertToRenderPass( |
404 const PassPtr& input, | 401 const PassPtr& input, |
405 const CompositorFrameMetadataPtr& metadata, | 402 const CompositorFrameMetadataPtr& metadata, |
406 CustomSurfaceConverter* custom_converter) { | 403 CustomSurfaceConverter* custom_converter) { |
407 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create( | 404 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create( |
408 input->shared_quad_states.size(), input->quads.size()); | 405 input->shared_quad_states.size(), input->quads.size()); |
409 pass->SetAll(input->id, input->output_rect, input->damage_rect, | 406 pass->SetAll(input->id, input->output_rect, input->damage_rect, |
410 input->transform_to_root_target.To<gfx::Transform>(), | 407 input->transform_to_root_target, |
411 input->has_transparent_background); | 408 input->has_transparent_background); |
412 for (size_t i = 0; i < input->shared_quad_states.size(); ++i) { | 409 for (size_t i = 0; i < input->shared_quad_states.size(); ++i) { |
413 ConvertSharedQuadState(input->shared_quad_states[i], pass.get()); | 410 ConvertSharedQuadState(input->shared_quad_states[i], pass.get()); |
414 } | 411 } |
415 cc::SharedQuadStateList::Iterator sqs_iter = | 412 cc::SharedQuadStateList::Iterator sqs_iter = |
416 pass->shared_quad_state_list.begin(); | 413 pass->shared_quad_state_list.begin(); |
417 for (size_t i = 0; i < input->quads.size(); ++i) { | 414 for (size_t i = 0; i < input->quads.size(); ++i) { |
418 QuadPtr quad = std::move(input->quads[i]); | 415 QuadPtr quad = std::move(input->quads[i]); |
419 while (quad->shared_quad_state_index > sqs_iter.index()) { | 416 while (quad->shared_quad_state_index > sqs_iter.index()) { |
420 ++sqs_iter; | 417 ++sqs_iter; |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 } | 549 } |
553 | 550 |
554 // static | 551 // static |
555 std::unique_ptr<cc::CompositorFrame> | 552 std::unique_ptr<cc::CompositorFrame> |
556 TypeConverter<std::unique_ptr<cc::CompositorFrame>, | 553 TypeConverter<std::unique_ptr<cc::CompositorFrame>, |
557 CompositorFramePtr>::Convert(const CompositorFramePtr& input) { | 554 CompositorFramePtr>::Convert(const CompositorFramePtr& input) { |
558 return ConvertToCompositorFrame(input, nullptr); | 555 return ConvertToCompositorFrame(input, nullptr); |
559 } | 556 } |
560 | 557 |
561 } // namespace mojo | 558 } // namespace mojo |
OLD | NEW |