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 "mojo/converters/surfaces/surfaces_type_converters.h" | 5 #include "mojo/converters/surfaces/surfaces_type_converters.h" |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "cc/output/compositor_frame.h" | 8 #include "cc/output/compositor_frame.h" |
9 #include "cc/output/delegated_frame_data.h" | 9 #include "cc/output/delegated_frame_data.h" |
10 #include "cc/quads/checkerboard_draw_quad.h" | |
11 #include "cc/quads/debug_border_draw_quad.h" | 10 #include "cc/quads/debug_border_draw_quad.h" |
12 #include "cc/quads/draw_quad.h" | 11 #include "cc/quads/draw_quad.h" |
13 #include "cc/quads/render_pass.h" | 12 #include "cc/quads/render_pass.h" |
14 #include "cc/quads/render_pass_draw_quad.h" | 13 #include "cc/quads/render_pass_draw_quad.h" |
15 #include "cc/quads/shared_quad_state.h" | 14 #include "cc/quads/shared_quad_state.h" |
16 #include "cc/quads/solid_color_draw_quad.h" | 15 #include "cc/quads/solid_color_draw_quad.h" |
17 #include "cc/quads/surface_draw_quad.h" | 16 #include "cc/quads/surface_draw_quad.h" |
18 #include "cc/quads/texture_draw_quad.h" | 17 #include "cc/quads/texture_draw_quad.h" |
19 #include "cc/quads/tile_draw_quad.h" | 18 #include "cc/quads/tile_draw_quad.h" |
20 #include "cc/quads/yuv_video_draw_quad.h" | 19 #include "cc/quads/yuv_video_draw_quad.h" |
21 #include "cc/surfaces/surface_id_allocator.h" | 20 #include "cc/surfaces/surface_id_allocator.h" |
22 #include "mojo/converters/geometry/geometry_type_converters.h" | 21 #include "mojo/converters/geometry/geometry_type_converters.h" |
23 #include "mojo/converters/transform/transform_type_converters.h" | 22 #include "mojo/converters/transform/transform_type_converters.h" |
24 | 23 |
25 namespace mojo { | 24 namespace mojo { |
26 | 25 |
27 #define ASSERT_ENUM_VALUES_EQUAL(value) \ | 26 #define ASSERT_ENUM_VALUES_EQUAL(value) \ |
28 COMPILE_ASSERT(cc::DrawQuad::value == static_cast<cc::DrawQuad::Material>( \ | 27 COMPILE_ASSERT(cc::DrawQuad::value == static_cast<cc::DrawQuad::Material>( \ |
29 MATERIAL_##value), \ | 28 MATERIAL_##value), \ |
30 value##_enum_value_matches) | 29 value##_enum_value_matches) |
31 | 30 |
32 ASSERT_ENUM_VALUES_EQUAL(CHECKERBOARD); | |
33 ASSERT_ENUM_VALUES_EQUAL(DEBUG_BORDER); | 31 ASSERT_ENUM_VALUES_EQUAL(DEBUG_BORDER); |
34 ASSERT_ENUM_VALUES_EQUAL(IO_SURFACE_CONTENT); | 32 ASSERT_ENUM_VALUES_EQUAL(IO_SURFACE_CONTENT); |
35 ASSERT_ENUM_VALUES_EQUAL(PICTURE_CONTENT); | 33 ASSERT_ENUM_VALUES_EQUAL(PICTURE_CONTENT); |
36 ASSERT_ENUM_VALUES_EQUAL(RENDER_PASS); | 34 ASSERT_ENUM_VALUES_EQUAL(RENDER_PASS); |
37 ASSERT_ENUM_VALUES_EQUAL(SOLID_COLOR); | 35 ASSERT_ENUM_VALUES_EQUAL(SOLID_COLOR); |
38 ASSERT_ENUM_VALUES_EQUAL(STREAM_VIDEO_CONTENT); | 36 ASSERT_ENUM_VALUES_EQUAL(STREAM_VIDEO_CONTENT); |
39 ASSERT_ENUM_VALUES_EQUAL(SURFACE_CONTENT); | 37 ASSERT_ENUM_VALUES_EQUAL(SURFACE_CONTENT); |
40 ASSERT_ENUM_VALUES_EQUAL(TEXTURE_CONTENT); | 38 ASSERT_ENUM_VALUES_EQUAL(TEXTURE_CONTENT); |
41 ASSERT_ENUM_VALUES_EQUAL(TILED_CONTENT); | 39 ASSERT_ENUM_VALUES_EQUAL(TILED_CONTENT); |
42 ASSERT_ENUM_VALUES_EQUAL(YUV_VIDEO_CONTENT); | 40 ASSERT_ENUM_VALUES_EQUAL(YUV_VIDEO_CONTENT); |
(...skipping 17 matching lines...) Expand all Loading... |
60 input->opacity, | 58 input->opacity, |
61 static_cast<::SkXfermode::Mode>(input->blend_mode), | 59 static_cast<::SkXfermode::Mode>(input->blend_mode), |
62 input->sorting_context_id); | 60 input->sorting_context_id); |
63 return state; | 61 return state; |
64 } | 62 } |
65 | 63 |
66 bool ConvertDrawQuad(const QuadPtr& input, | 64 bool ConvertDrawQuad(const QuadPtr& input, |
67 cc::SharedQuadState* sqs, | 65 cc::SharedQuadState* sqs, |
68 cc::RenderPass* render_pass) { | 66 cc::RenderPass* render_pass) { |
69 switch (input->material) { | 67 switch (input->material) { |
70 case MATERIAL_CHECKERBOARD: { | |
71 cc::CheckerboardDrawQuad* checkerboard_quad = | |
72 render_pass->CreateAndAppendDrawQuad<cc::CheckerboardDrawQuad>(); | |
73 checkerboard_quad->SetAll( | |
74 sqs, | |
75 input->rect.To<gfx::Rect>(), | |
76 input->opaque_rect.To<gfx::Rect>(), | |
77 input->visible_rect.To<gfx::Rect>(), | |
78 input->needs_blending, | |
79 input->checkerboard_quad_state->color.To<SkColor>(), | |
80 input->checkerboard_quad_state->scale); | |
81 break; | |
82 } | |
83 case MATERIAL_DEBUG_BORDER: { | 68 case MATERIAL_DEBUG_BORDER: { |
84 cc::DebugBorderDrawQuad* debug_border_quad = | 69 cc::DebugBorderDrawQuad* debug_border_quad = |
85 render_pass->CreateAndAppendDrawQuad<cc::DebugBorderDrawQuad>(); | 70 render_pass->CreateAndAppendDrawQuad<cc::DebugBorderDrawQuad>(); |
86 debug_border_quad->SetAll( | 71 debug_border_quad->SetAll( |
87 sqs, | 72 sqs, |
88 input->rect.To<gfx::Rect>(), | 73 input->rect.To<gfx::Rect>(), |
89 input->opaque_rect.To<gfx::Rect>(), | 74 input->opaque_rect.To<gfx::Rect>(), |
90 input->visible_rect.To<gfx::Rect>(), | 75 input->visible_rect.To<gfx::Rect>(), |
91 input->needs_blending, | 76 input->needs_blending, |
92 input->debug_border_quad_state->color.To<SkColor>(), | 77 input->debug_border_quad_state->color.To<SkColor>(), |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 quad->material = static_cast<Material>(input.material); | 252 quad->material = static_cast<Material>(input.material); |
268 quad->rect = Rect::From(input.rect); | 253 quad->rect = Rect::From(input.rect); |
269 quad->opaque_rect = Rect::From(input.opaque_rect); | 254 quad->opaque_rect = Rect::From(input.opaque_rect); |
270 quad->visible_rect = Rect::From(input.visible_rect); | 255 quad->visible_rect = Rect::From(input.visible_rect); |
271 quad->needs_blending = input.needs_blending; | 256 quad->needs_blending = input.needs_blending; |
272 // This is intentionally left set to an invalid value here. It's set when | 257 // This is intentionally left set to an invalid value here. It's set when |
273 // converting an entire pass since it's an index into the pass' shared quad | 258 // converting an entire pass since it's an index into the pass' shared quad |
274 // state list. | 259 // state list. |
275 quad->shared_quad_state_index = UINT32_MAX; | 260 quad->shared_quad_state_index = UINT32_MAX; |
276 switch (input.material) { | 261 switch (input.material) { |
277 case cc::DrawQuad::CHECKERBOARD: { | |
278 const cc::CheckerboardDrawQuad* checkerboard_quad = | |
279 cc::CheckerboardDrawQuad::MaterialCast(&input); | |
280 CheckerboardQuadStatePtr checkerboard_state = | |
281 CheckerboardQuadState::New(); | |
282 checkerboard_state->color = Color::From(checkerboard_quad->color); | |
283 checkerboard_state->scale = checkerboard_quad->scale; | |
284 quad->checkerboard_quad_state = checkerboard_state.Pass(); | |
285 break; | |
286 } | |
287 case cc::DrawQuad::DEBUG_BORDER: { | 262 case cc::DrawQuad::DEBUG_BORDER: { |
288 const cc::DebugBorderDrawQuad* debug_border_quad = | 263 const cc::DebugBorderDrawQuad* debug_border_quad = |
289 cc::DebugBorderDrawQuad::MaterialCast(&input); | 264 cc::DebugBorderDrawQuad::MaterialCast(&input); |
290 DebugBorderQuadStatePtr debug_border_state = | 265 DebugBorderQuadStatePtr debug_border_state = |
291 DebugBorderQuadState::New(); | 266 DebugBorderQuadState::New(); |
292 debug_border_state->color = Color::From(debug_border_quad->color); | 267 debug_border_state->color = Color::From(debug_border_quad->color); |
293 debug_border_state->width = debug_border_quad->width; | 268 debug_border_state->width = debug_border_quad->width; |
294 quad->debug_border_quad_state = debug_border_state.Pass(); | 269 quad->debug_border_quad_state = debug_border_state.Pass(); |
295 break; | 270 break; |
296 } | 271 } |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
628 if (!pass) | 603 if (!pass) |
629 return scoped_ptr<cc::CompositorFrame>(); | 604 return scoped_ptr<cc::CompositorFrame>(); |
630 frame_data->render_pass_list.push_back(pass.Pass()); | 605 frame_data->render_pass_list.push_back(pass.Pass()); |
631 } | 606 } |
632 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 607 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
633 frame->delegated_frame_data = frame_data.Pass(); | 608 frame->delegated_frame_data = frame_data.Pass(); |
634 return frame.Pass(); | 609 return frame.Pass(); |
635 } | 610 } |
636 | 611 |
637 } // namespace mojo | 612 } // namespace mojo |
OLD | NEW |