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

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: Addressed alphabetization 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
« no previous file with comments | « cc/ipc/quads.mojom ('k') | cc/ipc/quads_struct_traits.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..489049ccacb0059adc6c4f44060206c6bb8f0d00 100644
--- a/cc/ipc/quads_struct_traits.h
+++ b/cc/ipc/quads_struct_traits.h
@@ -24,26 +24,98 @@
namespace mojo {
-cc::DrawQuad* AllocateAndConstruct(cc::mojom::Material material,
- cc::QuadList* list);
+cc::DrawQuad* AllocateAndConstruct(
+ cc::mojom::DrawQuadState::DataView::Tag material,
+ cc::QuadList* list);
+
template <>
-struct EnumTraits<cc::mojom::Material, cc::DrawQuad::Material> {
- static cc::mojom::Material ToMojom(cc::DrawQuad::Material material);
- static bool FromMojom(cc::mojom::Material input, cc::DrawQuad::Material* out);
+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;
- }
-
- static void SetToNull(cc::DrawQuad* output) {
- // There is nothing to deserialize here if the DrawQuad is not a
- // DebugBorderDrawQuad. If it is, then this should not be called.
- DCHECK_NE(cc::DrawQuad::DEBUG_BORDER, output->material);
- }
-
static uint32_t color(const cc::DrawQuad& input) {
const cc::DebugBorderDrawQuad* quad =
cc::DebugBorderDrawQuad::MaterialCast(&input);
@@ -62,16 +134,6 @@ struct StructTraits<cc::mojom::DebugBorderQuadState, cc::DrawQuad> {
template <>
struct StructTraits<cc::mojom::RenderPassQuadState, cc::DrawQuad> {
- static bool IsNull(const cc::DrawQuad& quad) {
- return quad.material != cc::DrawQuad::RENDER_PASS;
- }
-
- static void SetToNull(cc::DrawQuad* output) {
- // There is nothing to deserialize here if the DrawQuad is not a
- // RenderPassDrawQuad. If it is, then this should not be called.
- DCHECK_NE(cc::DrawQuad::RENDER_PASS, output->material);
- }
-
static const cc::RenderPassId& render_pass_id(const cc::DrawQuad& input) {
const cc::RenderPassDrawQuad* quad =
cc::RenderPassDrawQuad::MaterialCast(&input);
@@ -121,16 +183,6 @@ struct StructTraits<cc::mojom::RenderPassQuadState, cc::DrawQuad> {
template <>
struct StructTraits<cc::mojom::SolidColorQuadState, cc::DrawQuad> {
- static bool IsNull(const cc::DrawQuad& input) {
- return input.material != cc::DrawQuad::SOLID_COLOR;
- }
-
- static void SetToNull(cc::DrawQuad* output) {
- // There is nothing to deserialize here if the DrawQuad is not a
- // SolidColorDrawQuad. If it is, then this should not be called.
- DCHECK_NE(cc::DrawQuad::SOLID_COLOR, output->material);
- }
-
static uint32_t color(const cc::DrawQuad& input) {
const cc::SolidColorDrawQuad* quad =
cc::SolidColorDrawQuad::MaterialCast(&input);
@@ -149,16 +201,6 @@ struct StructTraits<cc::mojom::SolidColorQuadState, cc::DrawQuad> {
template <>
struct StructTraits<cc::mojom::StreamVideoQuadState, cc::DrawQuad> {
- static bool IsNull(const cc::DrawQuad& input) {
- return input.material != cc::DrawQuad::STREAM_VIDEO_CONTENT;
- }
-
- static void SetToNull(cc::DrawQuad* output) {
- // There is nothing to deserialize here if the DrawQuad is not a
- // StreamVideoDrawQuad. If it is, then this should not be called.
- DCHECK_NE(cc::DrawQuad::STREAM_VIDEO_CONTENT, output->material);
- }
-
static uint32_t resource_id(const cc::DrawQuad& input) {
const cc::StreamVideoDrawQuad* quad =
cc::StreamVideoDrawQuad::MaterialCast(&input);
@@ -184,16 +226,6 @@ struct StructTraits<cc::mojom::StreamVideoQuadState, cc::DrawQuad> {
template <>
struct StructTraits<cc::mojom::SurfaceQuadState, cc::DrawQuad> {
- static bool IsNull(const cc::DrawQuad& input) {
- return input.material != cc::DrawQuad::SURFACE_CONTENT;
- }
-
- static void SetToNull(cc::DrawQuad* output) {
- // There is nothing to deserialize here if the DrawQuad is not a
- // SurfaceDrawQuad. If it is, then this should not be called.
- DCHECK_NE(cc::DrawQuad::SURFACE_CONTENT, output->material);
- }
-
static const cc::SurfaceId& surface(const cc::DrawQuad& input) {
const cc::SurfaceDrawQuad* quad = cc::SurfaceDrawQuad::MaterialCast(&input);
return quad->surface_id;
@@ -204,16 +236,6 @@ struct StructTraits<cc::mojom::SurfaceQuadState, cc::DrawQuad> {
template <>
struct StructTraits<cc::mojom::TextureQuadState, cc::DrawQuad> {
- static bool IsNull(const cc::DrawQuad& input) {
- return input.material != cc::DrawQuad::TEXTURE_CONTENT;
- }
-
- static void SetToNull(cc::DrawQuad* output) {
- // There is nothing to deserialize here if the DrawQuad is not a
- // TextureContentDrawQuad. If it is, then this should not be called.
- DCHECK_NE(cc::DrawQuad::TEXTURE_CONTENT, output->material);
- }
-
static uint32_t resource_id(const cc::DrawQuad& input) {
const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input);
return quad->resource_id();
@@ -264,16 +286,6 @@ struct StructTraits<cc::mojom::TextureQuadState, cc::DrawQuad> {
template <>
struct StructTraits<cc::mojom::TileQuadState, cc::DrawQuad> {
- static bool IsNull(const cc::DrawQuad& input) {
- return input.material != cc::DrawQuad::TILED_CONTENT;
- }
-
- static void SetToNull(cc::DrawQuad* output) {
- // There is nothing to deserialize here if the DrawQuad is not a
- // TileDrawQuad. If it is, then this should not be called.
- DCHECK_NE(cc::DrawQuad::TILED_CONTENT, output->material);
- }
-
static const gfx::RectF& tex_coord_rect(const cc::DrawQuad& input) {
const cc::TileDrawQuad* quad = cc::TileDrawQuad::MaterialCast(&input);
return quad->tex_coord_rect;
@@ -312,16 +324,6 @@ struct EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace> {
template <>
struct StructTraits<cc::mojom::YUVVideoQuadState, cc::DrawQuad> {
- static bool IsNull(const cc::DrawQuad& input) {
- return input.material != cc::DrawQuad::YUV_VIDEO_CONTENT;
- }
-
- static void SetToNull(cc::DrawQuad* output) {
- // There is nothing to deserialize here if the DrawQuad is not a
- // YUVVideoDrawQuad. If it is, then this should not be called.
- DCHECK_NE(cc::DrawQuad::YUV_VIDEO_CONTENT, output->material);
- }
-
static const gfx::RectF& ya_tex_coord_rect(const cc::DrawQuad& input) {
const cc::YUVVideoDrawQuad* quad =
cc::YUVVideoDrawQuad::MaterialCast(&input);
@@ -406,11 +408,6 @@ struct DrawQuadWithSharedQuadState {
template <>
struct StructTraits<cc::mojom::DrawQuad, DrawQuadWithSharedQuadState> {
- static cc::DrawQuad::Material material(
- const DrawQuadWithSharedQuadState& input) {
- return input.quad->material;
- }
-
static const gfx::Rect& rect(const DrawQuadWithSharedQuadState& input) {
return input.quad->rect;
}
@@ -429,49 +426,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.
« no previous file with comments | « 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