+RenderPassDrawQuad* RenderPass::CopyFromAndAppendRenderPassDrawQuad(
+ const RenderPassDrawQuad* quad,
+ const SharedQuadState* shared_quad_state,
+ RenderPass::Id render_pass_id) {
+ RenderPassDrawQuad* copy_quad =
+ CopyFromAndAppendTypedDrawQuad<RenderPassDrawQuad>(quad);
+ copy_quad->shared_quad_state = shared_quad_state;
+ copy_quad->render_pass_id = render_pass_id;
+ return copy_quad;
+}
+
+DrawQuad* RenderPass::CopyFromAndAppendDrawQuad(
+ const DrawQuad* quad,
+ const SharedQuadState* shared_quad_state) {
+ switch (quad->material) {
+ case DrawQuad::CHECKERBOARD:
+ CopyFromAndAppendTypedDrawQuad<CheckerboardDrawQuad>(quad);
+ break;
+ case DrawQuad::DEBUG_BORDER:
+ CopyFromAndAppendTypedDrawQuad<DebugBorderDrawQuad>(quad);
+ break;
+ case DrawQuad::IO_SURFACE_CONTENT:
+ CopyFromAndAppendTypedDrawQuad<IOSurfaceDrawQuad>(quad);
+ break;
+ case DrawQuad::PICTURE_CONTENT:
+ CopyFromAndAppendTypedDrawQuad<PictureDrawQuad>(quad);
+ break;
+ case DrawQuad::TEXTURE_CONTENT:
+ CopyFromAndAppendTypedDrawQuad<TextureDrawQuad>(quad);
+ break;
+ case DrawQuad::SOLID_COLOR:
+ CopyFromAndAppendTypedDrawQuad<SolidColorDrawQuad>(quad);
+ break;
+ case DrawQuad::TILED_CONTENT:
+ CopyFromAndAppendTypedDrawQuad<TileDrawQuad>(quad);
+ break;
+ case DrawQuad::STREAM_VIDEO_CONTENT:
+ CopyFromAndAppendTypedDrawQuad<StreamVideoDrawQuad>(quad);
+ break;
+ case DrawQuad::SURFACE_CONTENT:
+ CopyFromAndAppendTypedDrawQuad<SurfaceDrawQuad>(quad);
+ break;
+ case DrawQuad::YUV_VIDEO_CONTENT:
+ CopyFromAndAppendTypedDrawQuad<YUVVideoDrawQuad>(quad);
+ break;
+ // RenderPass quads need to use specific CopyFrom function.
+ case DrawQuad::RENDER_PASS:
+ case DrawQuad::INVALID:
+ LOG(FATAL) << "Invalid DrawQuad material " << quad->material;
+ break;
+ }
+ quad_list.back()->shared_quad_state = shared_quad_state;
+ return quad_list.back();