#include "cc/tiles/picture_layer_tiling_set.h"
#include <stddef.h>
#include <algorithm>
#include <limits>
#include <memory>
#include <set>
#include <utility>
#include <vector>
#include "base/containers/contains.h"
#include "base/memory/ptr_util.h"
#include "base/memory/raw_ptr.h"
#include "base/ranges/algorithm.h"
#include "base/trace_event/trace_event.h"
#include "cc/raster/raster_source.h"
#include "ui/gfx/geometry/rect_conversions.h"
namespace cc {
namespace {
class LargestToSmallestScaleFunctor { … };
inline float LargerRatio(float float1, float float2) { … }
const float kSoonBorderDistanceViewportPercentage = …;
const float kMaxSoonBorderDistanceInScreenPixels = …;
}
std::unique_ptr<PictureLayerTilingSet> PictureLayerTilingSet::Create(
WhichTree tree,
PictureLayerTilingClient* client,
int tiling_interest_area_padding,
float skewport_target_time_in_seconds,
int skewport_extrapolation_limit_in_screen_pixels,
float max_preraster_distance) { … }
PictureLayerTilingSet::PictureLayerTilingSet(
WhichTree tree,
PictureLayerTilingClient* client,
int tiling_interest_area_padding,
float skewport_target_time_in_seconds,
int skewport_extrapolation_limit_in_screen_pixels,
float max_preraster_distance)
: … { … }
PictureLayerTilingSet::~PictureLayerTilingSet() = default;
void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin(
const PictureLayerTilingSet* pending_twin_set,
scoped_refptr<RasterSource> raster_source,
const Region& layer_invalidation) { … }
void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSourceForActivation(
scoped_refptr<RasterSource> raster_source,
const PictureLayerTilingSet* pending_twin_set,
const Region& layer_invalidation,
float minimum_contents_scale,
float maximum_contents_scale) { … }
void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSourceForCommit(
scoped_refptr<RasterSource> raster_source,
const Region& layer_invalidation,
float minimum_contents_scale,
float maximum_contents_scale) { … }
void PictureLayerTilingSet::Invalidate(const Region& layer_invalidation) { … }
void PictureLayerTilingSet::VerifyTilings(
const PictureLayerTilingSet* pending_twin_set) const { … }
void PictureLayerTilingSet::CleanUpTilings(
float min_acceptable_high_res_scale_key,
float max_acceptable_high_res_scale_key,
const std::vector<raw_ptr<PictureLayerTiling, VectorExperimental>>&
needed_tilings,
PictureLayerTilingSet* twin_set) { … }
void PictureLayerTilingSet::RemoveNonIdealTilings() { … }
void PictureLayerTilingSet::MarkAllTilingsNonIdeal() { … }
PictureLayerTiling* PictureLayerTilingSet::AddTiling(
const gfx::AxisTransform2d& raster_transform,
scoped_refptr<RasterSource> raster_source,
bool can_use_lcd_text) { … }
int PictureLayerTilingSet::NumHighResTilings() const { … }
PictureLayerTiling* PictureLayerTilingSet::FindTilingWithScaleKey(
float scale_key) const { … }
PictureLayerTiling* PictureLayerTilingSet::FindTilingWithResolution(
TileResolution resolution) const { … }
PictureLayerTiling* PictureLayerTilingSet::FindTilingWithNearestScaleKey(
float start_scale,
float snap_to_existing_tiling_ratio) const { … }
void PictureLayerTilingSet::RemoveTilingsBelowScaleKey(
float minimum_scale_key) { … }
void PictureLayerTilingSet::RemoveTilingsAboveScaleKey(
float maximum_scale_key) { … }
void PictureLayerTilingSet::ReleaseAllResources() { … }
void PictureLayerTilingSet::RemoveAllTilings() { … }
void PictureLayerTilingSet::Remove(PictureLayerTiling* tiling) { … }
void PictureLayerTilingSet::RemoveAllTiles() { … }
float PictureLayerTilingSet::GetMaximumContentsScale() const { … }
bool PictureLayerTilingSet::TilingsNeedUpdate(
const gfx::Rect& visible_rect_in_layer_space,
double current_frame_time_in_seconds) { … }
gfx::Rect PictureLayerTilingSet::ComputeSkewport(
const gfx::Rect& visible_rect_in_layer_space,
double current_frame_time_in_seconds,
float ideal_contents_scale) { … }
gfx::Rect PictureLayerTilingSet::ComputeSoonBorderRect(
const gfx::Rect& visible_rect,
float ideal_contents_scale) { … }
void PictureLayerTilingSet::UpdatePriorityRects(
const gfx::Rect& visible_rect_in_layer_space,
double current_frame_time_in_seconds,
float ideal_contents_scale) { … }
bool PictureLayerTilingSet::UpdateTilePriorities(
const gfx::Rect& visible_rect_in_layer_space,
float ideal_contents_scale,
double current_frame_time_in_seconds,
const Occlusion& occlusion_in_layer_space,
bool can_require_tiles_for_activation) { … }
void PictureLayerTilingSet::GetAllPrioritizedTilesForTracing(
std::vector<PrioritizedTile>* prioritized_tiles) const { … }
PictureLayerTilingSet::CoverageIterator PictureLayerTilingSet::Cover(
const gfx::Rect& coverage_rect,
float coverage_scale,
float ideal_contents_scale) { … }
void PictureLayerTilingSet::AsValueInto(
base::trace_event::TracedValue* state) const { … }
size_t PictureLayerTilingSet::GPUMemoryUsageInBytes() const { … }
PictureLayerTilingSet::TilingRange PictureLayerTilingSet::GetTilingRange(
TilingRangeType type) const { … }
}