#ifndef CC_TREES_FRAME_DATA_H_
#define CC_TREES_FRAME_DATA_H_
#include <string>
#include <vector>
#include "base/trace_event/traced_value.h"
#include "cc/cc_export.h"
#include "cc/layers/layer_collections.h"
#include "cc/trees/damage_reason.h"
#include "components/viz/common/frame_sinks/begin_frame_args.h"
#include "components/viz/common/quads/compositor_render_pass.h"
#include "components/viz/common/quads/trees_in_viz_timing.h"
#include "components/viz/common/surfaces/surface_id.h"
namespace cc {
struct CC_EXPORT FrameData {
FrameData();
FrameData(const FrameData&) = delete;
~FrameData();
FrameData& operator=(const FrameData&) = delete;
void AsValueInto(base::trace_event::TracedValue* value) const;
std::string ToString() const;
void set_trees_in_viz_timestamps(const viz::TreesInVizTiming& timing_details);
uint32_t frame_token = 0;
bool checkerboarded_needs_raster = false;
bool checkerboarded_needs_record = false;
std::vector<viz::SurfaceId> activation_dependencies;
std::optional<uint32_t> deadline_in_frames;
bool use_default_lower_bound_deadline = false;
viz::CompositorRenderPassList render_passes;
RAW_PTR_EXCLUSION const RenderSurfaceList* render_surface_list = nullptr;
RAW_PTR_EXCLUSION LayerImplList will_draw_layers;
bool has_no_damage = false;
viz::BeginFrameAck begin_frame_ack;
viz::BeginFrameArgs origin_begin_main_frame_args;
DamageReasonSet damage_reasons;
base::flat_map<base::TimeDelta, uint32_t> video_layer_preferred_intervals;
bool has_shared_element_resources = false;
bool has_view_transition_save_directive = false;
bool has_copy_requests = false;
std::optional<viz::TreesInVizTiming> trees_in_viz_timing_details;
};
}
#endif