Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: cc/ipc/quads_struct_traits.h

Issue 2229553004: cc: Implement UnionTraits for DrawQuads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed comment Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #ifndef CC_IPC_QUADS_STRUCT_TRAITS_H_ 5 #ifndef CC_IPC_QUADS_STRUCT_TRAITS_H_
6 #define CC_IPC_QUADS_STRUCT_TRAITS_H_ 6 #define CC_IPC_QUADS_STRUCT_TRAITS_H_
7 7
8 #include "cc/ipc/filter_operation_struct_traits.h" 8 #include "cc/ipc/filter_operation_struct_traits.h"
9 #include "cc/ipc/filter_operations_struct_traits.h" 9 #include "cc/ipc/filter_operations_struct_traits.h"
10 #include "cc/ipc/quads.mojom.h" 10 #include "cc/ipc/quads.mojom.h"
11 #include "cc/ipc/render_pass_id_struct_traits.h" 11 #include "cc/ipc/render_pass_id_struct_traits.h"
12 #include "cc/ipc/shared_quad_state_struct_traits.h" 12 #include "cc/ipc/shared_quad_state_struct_traits.h"
13 #include "cc/ipc/surface_id_struct_traits.h" 13 #include "cc/ipc/surface_id_struct_traits.h"
14 #include "cc/quads/debug_border_draw_quad.h" 14 #include "cc/quads/debug_border_draw_quad.h"
15 #include "cc/quads/picture_draw_quad.h" 15 #include "cc/quads/picture_draw_quad.h"
16 #include "cc/quads/render_pass_draw_quad.h" 16 #include "cc/quads/render_pass_draw_quad.h"
17 #include "cc/quads/solid_color_draw_quad.h" 17 #include "cc/quads/solid_color_draw_quad.h"
18 #include "cc/quads/stream_video_draw_quad.h" 18 #include "cc/quads/stream_video_draw_quad.h"
19 #include "cc/quads/surface_draw_quad.h" 19 #include "cc/quads/surface_draw_quad.h"
20 #include "cc/quads/texture_draw_quad.h" 20 #include "cc/quads/texture_draw_quad.h"
21 #include "cc/quads/tile_draw_quad.h" 21 #include "cc/quads/tile_draw_quad.h"
22 #include "cc/quads/yuv_video_draw_quad.h" 22 #include "cc/quads/yuv_video_draw_quad.h"
23 #include "ui/gfx/geometry/mojo/geometry_struct_traits.h" 23 #include "ui/gfx/geometry/mojo/geometry_struct_traits.h"
24 24
25 namespace mojo { 25 namespace mojo {
26 26
27 cc::DrawQuad* AllocateAndConstruct(cc::mojom::Material material, 27 cc::DrawQuad* AllocateAndConstruct(cc::mojom::Material material,
28 cc::QuadList* list); 28 cc::QuadList* list);
29
29 template <> 30 template <>
30 struct EnumTraits<cc::mojom::Material, cc::DrawQuad::Material> { 31 struct EnumTraits<cc::mojom::Material, cc::DrawQuad::Material> {
31 static cc::mojom::Material ToMojom(cc::DrawQuad::Material material); 32 static cc::mojom::Material ToMojom(cc::DrawQuad::Material material);
32 static bool FromMojom(cc::mojom::Material input, cc::DrawQuad::Material* out); 33 static bool FromMojom(cc::mojom::Material input, cc::DrawQuad::Material* out);
33 }; 34 };
34 35
35 template <> 36 template <>
37 struct UnionTraits<cc::mojom::DrawQuadState, cc::DrawQuad> {
38 static cc::mojom::DrawQuadState::DataView::Tag GetTag(
39 const cc::DrawQuad& quad) {
40 switch (quad.material) {
41 case cc::DrawQuad::INVALID:
42 break;
43 case cc::DrawQuad::DEBUG_BORDER:
44 return cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE;
45 case cc::DrawQuad::PICTURE_CONTENT:
46 break;
47 case cc::DrawQuad::RENDER_PASS:
48 return cc::mojom::DrawQuadState::DataView::Tag::RENDER_PASS_QUAD_STATE;
49 case cc::DrawQuad::SOLID_COLOR:
50 return cc::mojom::DrawQuadState::DataView::Tag::SOLID_COLOR_QUAD_STATE;
51 case cc::DrawQuad::STREAM_VIDEO_CONTENT:
52 return cc::mojom::DrawQuadState::DataView::Tag::STREAM_VIDEO_QUAD_STATE;
53 case cc::DrawQuad::SURFACE_CONTENT:
54 return cc::mojom::DrawQuadState::DataView::Tag::SURFACE_QUAD_STATE;
55 case cc::DrawQuad::TEXTURE_CONTENT:
56 return cc::mojom::DrawQuadState::DataView::Tag::TEXTURE_QUAD_STATE;
57 case cc::DrawQuad::TILED_CONTENT:
58 return cc::mojom::DrawQuadState::DataView::Tag::TILE_QUAD_STATE;
59 case cc::DrawQuad::YUV_VIDEO_CONTENT:
60 return cc::mojom::DrawQuadState::DataView::Tag::YUV_VIDEO_QUAD_STATE;
61 }
62 NOTREACHED();
63 return cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE;
64 }
65
66 static const cc::DrawQuad& debug_border_quad_state(const cc::DrawQuad& quad) {
67 return quad;
68 }
69
70 static const cc::DrawQuad& render_pass_quad_state(const cc::DrawQuad& quad) {
71 return quad;
72 }
73
74 static const cc::DrawQuad& solid_color_quad_state(const cc::DrawQuad& quad) {
75 return quad;
76 }
77
78 static const cc::DrawQuad& surface_quad_state(const cc::DrawQuad& quad) {
79 return quad;
80 }
81
82 static const cc::DrawQuad& texture_quad_state(const cc::DrawQuad& quad) {
83 return quad;
84 }
85
86 static const cc::DrawQuad& tile_quad_state(const cc::DrawQuad& quad) {
87 return quad;
88 }
89
90 static const cc::DrawQuad& stream_video_quad_state(const cc::DrawQuad& quad) {
91 return quad;
92 }
93
94 static const cc::DrawQuad& yuv_video_quad_state(const cc::DrawQuad& quad) {
95 return quad;
96 }
97
98 static bool Read(cc::mojom::DrawQuadState::DataView data, cc::DrawQuad* out) {
99 switch (data.tag()) {
100 case cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE:
101 return data.ReadDebugBorderQuadState(out);
102 case cc::mojom::DrawQuadState::DataView::Tag::RENDER_PASS_QUAD_STATE:
103 return data.ReadRenderPassQuadState(out);
104 case cc::mojom::DrawQuadState::DataView::Tag::SOLID_COLOR_QUAD_STATE:
105 return data.ReadSolidColorQuadState(out);
106 case cc::mojom::DrawQuadState::DataView::Tag::SURFACE_QUAD_STATE:
107 return data.ReadSurfaceQuadState(out);
108 case cc::mojom::DrawQuadState::DataView::Tag::TEXTURE_QUAD_STATE:
109 return data.ReadTextureQuadState(out);
110 case cc::mojom::DrawQuadState::DataView::Tag::TILE_QUAD_STATE:
111 return data.ReadTileQuadState(out);
112 case cc::mojom::DrawQuadState::DataView::Tag::STREAM_VIDEO_QUAD_STATE:
113 return data.ReadStreamVideoQuadState(out);
114 case cc::mojom::DrawQuadState::DataView::Tag::YUV_VIDEO_QUAD_STATE:
115 return data.ReadYuvVideoQuadState(out);
116 }
117 NOTREACHED();
118 return false;
119 }
120 };
121
122 template <>
36 struct StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad> { 123 struct StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad> {
37 static bool IsNull(const cc::DrawQuad& input) { 124 static bool IsNull(const cc::DrawQuad& input) {
38 return input.material != cc::DrawQuad::DEBUG_BORDER; 125 return input.material != cc::DrawQuad::DEBUG_BORDER;
39 } 126 }
40 127
41 static void SetToNull(cc::DrawQuad* output) { 128 static void SetToNull(cc::DrawQuad* output) {
42 // There is nothing to deserialize here if the DrawQuad is not a 129 // There is nothing to deserialize here if the DrawQuad is not a
43 // DebugBorderDrawQuad. If it is, then this should not be called. 130 // DebugBorderDrawQuad. If it is, then this should not be called.
44 DCHECK_NE(cc::DrawQuad::DEBUG_BORDER, output->material); 131 DCHECK_NE(cc::DrawQuad::DEBUG_BORDER, output->material);
45 } 132 }
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 509
423 static const gfx::Rect& visible_rect( 510 static const gfx::Rect& visible_rect(
424 const DrawQuadWithSharedQuadState& input) { 511 const DrawQuadWithSharedQuadState& input) {
425 return input.quad->visible_rect; 512 return input.quad->visible_rect;
426 } 513 }
427 514
428 static bool needs_blending(const DrawQuadWithSharedQuadState& input) { 515 static bool needs_blending(const DrawQuadWithSharedQuadState& input) {
429 return input.quad->needs_blending; 516 return input.quad->needs_blending;
430 } 517 }
431 518
432 static const cc::DrawQuad& debug_border_quad_state(
433 const DrawQuadWithSharedQuadState& input) {
434 return *input.quad;
435 }
436
437 static const cc::DrawQuad& render_pass_quad_state(
438 const DrawQuadWithSharedQuadState& input) {
439 return *input.quad;
440 }
441
442 static const cc::DrawQuad& solid_color_quad_state(
443 const DrawQuadWithSharedQuadState& input) {
444 return *input.quad;
445 }
446
447 static const cc::DrawQuad& surface_quad_state(
448 const DrawQuadWithSharedQuadState& input) {
449 return *input.quad;
450 }
451
452 static const cc::DrawQuad& texture_quad_state(
453 const DrawQuadWithSharedQuadState& input) {
454 return *input.quad;
455 }
456
457 static const cc::DrawQuad& tile_quad_state(
458 const DrawQuadWithSharedQuadState& input) {
459 return *input.quad;
460 }
461
462 static const cc::DrawQuad& stream_video_quad_state(
463 const DrawQuadWithSharedQuadState& input) {
464 return *input.quad;
465 }
466
467 static const cc::DrawQuad& yuv_video_quad_state(
468 const DrawQuadWithSharedQuadState& input) {
469 return *input.quad;
470 }
471
472 static OptSharedQuadState sqs(const DrawQuadWithSharedQuadState& input) { 519 static OptSharedQuadState sqs(const DrawQuadWithSharedQuadState& input) {
473 return {input.shared_quad_state}; 520 return {input.shared_quad_state};
474 } 521 }
522
523 static const cc::DrawQuad& draw_quad_state(
524 const DrawQuadWithSharedQuadState& input) {
525 return *input.quad;
526 }
475 }; 527 };
476 528
477 // This StructTraits is only used for deserialization within RenderPasses. 529 // This StructTraits is only used for deserialization within RenderPasses.
478 template <> 530 template <>
479 struct StructTraits<cc::mojom::DrawQuad, cc::DrawQuad> { 531 struct StructTraits<cc::mojom::DrawQuad, cc::DrawQuad> {
480 static bool Read(cc::mojom::DrawQuadDataView data, cc::DrawQuad* out); 532 static bool Read(cc::mojom::DrawQuadDataView data, cc::DrawQuad* out);
481 }; 533 };
482 534
483 template <> 535 template <>
484 struct ArrayTraits<cc::QuadList> { 536 struct ArrayTraits<cc::QuadList> {
(...skipping 24 matching lines...) Expand all
509 dq.shared_quad_state = current_sqs; 561 dq.shared_quad_state = current_sqs;
510 return dq; 562 return dq;
511 } 563 }
512 564
513 static size_t GetSize(const cc::QuadList& input) { return input.size(); } 565 static size_t GetSize(const cc::QuadList& input) { return input.size(); }
514 }; 566 };
515 567
516 } // namespace mojo 568 } // namespace mojo
517 569
518 #endif // CC_IPC_QUADS_STRUCT_TRAITS_H_ 570 #endif // CC_IPC_QUADS_STRUCT_TRAITS_H_
OLDNEW
« cc/ipc/quads.mojom ('K') | « cc/ipc/quads.mojom ('k') | cc/ipc/quads_struct_traits.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698