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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: cc/ipc/quads_struct_traits.h
diff --git a/cc/ipc/quads_struct_traits.h b/cc/ipc/quads_struct_traits.h
index 6643b43a89603c3963057aa9c41fce2fb3a1f1c2..615a1ec129f59d71911614e96ce343ceba9dda30 100644
--- a/cc/ipc/quads_struct_traits.h
+++ b/cc/ipc/quads_struct_traits.h
@@ -26,6 +26,7 @@ namespace mojo {
cc::DrawQuad* AllocateAndConstruct(cc::mojom::Material material,
cc::QuadList* list);
+
template <>
struct EnumTraits<cc::mojom::Material, cc::DrawQuad::Material> {
static cc::mojom::Material ToMojom(cc::DrawQuad::Material material);
@@ -33,6 +34,92 @@ struct EnumTraits<cc::mojom::Material, cc::DrawQuad::Material> {
};
template <>
+struct UnionTraits<cc::mojom::DrawQuadState, cc::DrawQuad> {
+ static cc::mojom::DrawQuadState::DataView::Tag GetTag(
+ const cc::DrawQuad& quad) {
+ switch (quad.material) {
+ case cc::DrawQuad::INVALID:
+ break;
+ case cc::DrawQuad::DEBUG_BORDER:
+ return cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE;
+ case cc::DrawQuad::PICTURE_CONTENT:
+ break;
+ case cc::DrawQuad::RENDER_PASS:
+ return cc::mojom::DrawQuadState::DataView::Tag::RENDER_PASS_QUAD_STATE;
+ case cc::DrawQuad::SOLID_COLOR:
+ return cc::mojom::DrawQuadState::DataView::Tag::SOLID_COLOR_QUAD_STATE;
+ case cc::DrawQuad::STREAM_VIDEO_CONTENT:
+ return cc::mojom::DrawQuadState::DataView::Tag::STREAM_VIDEO_QUAD_STATE;
+ case cc::DrawQuad::SURFACE_CONTENT:
+ return cc::mojom::DrawQuadState::DataView::Tag::SURFACE_QUAD_STATE;
+ case cc::DrawQuad::TEXTURE_CONTENT:
+ return cc::mojom::DrawQuadState::DataView::Tag::TEXTURE_QUAD_STATE;
+ case cc::DrawQuad::TILED_CONTENT:
+ return cc::mojom::DrawQuadState::DataView::Tag::TILE_QUAD_STATE;
+ case cc::DrawQuad::YUV_VIDEO_CONTENT:
+ return cc::mojom::DrawQuadState::DataView::Tag::YUV_VIDEO_QUAD_STATE;
+ }
+ NOTREACHED();
+ return cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE;
+ }
+
+ static const cc::DrawQuad& debug_border_quad_state(const cc::DrawQuad& quad) {
+ return quad;
+ }
+
+ static const cc::DrawQuad& render_pass_quad_state(const cc::DrawQuad& quad) {
+ return quad;
+ }
+
+ static const cc::DrawQuad& solid_color_quad_state(const cc::DrawQuad& quad) {
+ return quad;
+ }
+
+ static const cc::DrawQuad& surface_quad_state(const cc::DrawQuad& quad) {
+ return quad;
+ }
+
+ static const cc::DrawQuad& texture_quad_state(const cc::DrawQuad& quad) {
+ return quad;
+ }
+
+ static const cc::DrawQuad& tile_quad_state(const cc::DrawQuad& quad) {
+ return quad;
+ }
+
+ static const cc::DrawQuad& stream_video_quad_state(const cc::DrawQuad& quad) {
+ return quad;
+ }
+
+ static const cc::DrawQuad& yuv_video_quad_state(const cc::DrawQuad& quad) {
+ return quad;
+ }
+
+ static bool Read(cc::mojom::DrawQuadState::DataView data, cc::DrawQuad* out) {
+ switch (data.tag()) {
+ case cc::mojom::DrawQuadState::DataView::Tag::DEBUG_BORDER_QUAD_STATE:
+ return data.ReadDebugBorderQuadState(out);
+ case cc::mojom::DrawQuadState::DataView::Tag::RENDER_PASS_QUAD_STATE:
+ return data.ReadRenderPassQuadState(out);
+ case cc::mojom::DrawQuadState::DataView::Tag::SOLID_COLOR_QUAD_STATE:
+ return data.ReadSolidColorQuadState(out);
+ case cc::mojom::DrawQuadState::DataView::Tag::SURFACE_QUAD_STATE:
+ return data.ReadSurfaceQuadState(out);
+ case cc::mojom::DrawQuadState::DataView::Tag::TEXTURE_QUAD_STATE:
+ return data.ReadTextureQuadState(out);
+ case cc::mojom::DrawQuadState::DataView::Tag::TILE_QUAD_STATE:
+ return data.ReadTileQuadState(out);
+ case cc::mojom::DrawQuadState::DataView::Tag::STREAM_VIDEO_QUAD_STATE:
+ return data.ReadStreamVideoQuadState(out);
+ case cc::mojom::DrawQuadState::DataView::Tag::YUV_VIDEO_QUAD_STATE:
+ return data.ReadYuvVideoQuadState(out);
+ }
+ NOTREACHED();
+ return false;
+ }
+};
+
+template <>
struct StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad> {
static bool IsNull(const cc::DrawQuad& input) {
return input.material != cc::DrawQuad::DEBUG_BORDER;
@@ -429,49 +516,14 @@ struct StructTraits<cc::mojom::DrawQuad, DrawQuadWithSharedQuadState> {
return input.quad->needs_blending;
}
- static const cc::DrawQuad& debug_border_quad_state(
- const DrawQuadWithSharedQuadState& input) {
- return *input.quad;
- }
-
- static const cc::DrawQuad& render_pass_quad_state(
- const DrawQuadWithSharedQuadState& input) {
- return *input.quad;
- }
-
- static const cc::DrawQuad& solid_color_quad_state(
- const DrawQuadWithSharedQuadState& input) {
- return *input.quad;
- }
-
- static const cc::DrawQuad& surface_quad_state(
- const DrawQuadWithSharedQuadState& input) {
- return *input.quad;
- }
-
- static const cc::DrawQuad& texture_quad_state(
- const DrawQuadWithSharedQuadState& input) {
- return *input.quad;
- }
-
- static const cc::DrawQuad& tile_quad_state(
- const DrawQuadWithSharedQuadState& input) {
- return *input.quad;
- }
-
- static const cc::DrawQuad& stream_video_quad_state(
- const DrawQuadWithSharedQuadState& input) {
- return *input.quad;
+ static OptSharedQuadState sqs(const DrawQuadWithSharedQuadState& input) {
+ return {input.shared_quad_state};
}
- static const cc::DrawQuad& yuv_video_quad_state(
+ static const cc::DrawQuad& draw_quad_state(
const DrawQuadWithSharedQuadState& input) {
return *input.quad;
}
-
- static OptSharedQuadState sqs(const DrawQuadWithSharedQuadState& input) {
- return {input.shared_quad_state};
- }
};
// This StructTraits is only used for deserialization within RenderPasses.
« 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