Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 1 addition & 20 deletions shell/common/rasterizer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ Rasterizer::Rasterizer(
: delegate_(delegate),
task_runners_(std::move(task_runners)),
compositor_context_(std::move(compositor_context)),
user_override_resource_cache_bytes_(false),
weak_factory_(this) {
FML_DCHECK(compositor_context_);
}
Expand Down Expand Up @@ -412,15 +411,7 @@ void Rasterizer::FireNextFrameCallbackIfPresent() {
callback();
}

void Rasterizer::SetResourceCacheMaxBytes(size_t max_bytes, bool from_user) {
user_override_resource_cache_bytes_ |= from_user;

if (!from_user && user_override_resource_cache_bytes_) {
// We should not update the setting here if a user has explicitly set a
// value for this over the flutter/skia channel.
return;
}

void Rasterizer::SetResourceCacheMaxBytes(int max_bytes) {
GrContext* context = surface_->GetContext();
if (context) {
int max_resources;
Expand All @@ -429,16 +420,6 @@ void Rasterizer::SetResourceCacheMaxBytes(size_t max_bytes, bool from_user) {
}
}

size_t Rasterizer::GetResourceCacheMaxBytes() const {
GrContext* context = surface_->GetContext();
if (context) {
size_t max_bytes;
context->getResourceCacheLimits(nullptr, &max_bytes);
return max_bytes;
}
return 0;
}

Rasterizer::Screenshot::Screenshot() {}

Rasterizer::Screenshot::Screenshot(sk_sp<SkData> p_data, SkISize p_size)
Expand Down
9 changes: 1 addition & 8 deletions shell/common/rasterizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,7 @@ class Rasterizer final : public SnapshotDelegate {
return compositor_context_.get();
}

// Sets the max size in bytes of the Skia resource cache. If this call is
// originating from the user, e.g. over the flutter/skia system channel,
// set from_user to true and the value will take precedence over system
// generated values, e.g. from a display resolution change.
void SetResourceCacheMaxBytes(size_t max_bytes, bool from_user);

size_t GetResourceCacheMaxBytes() const;
void SetResourceCacheMaxBytes(int max_bytes);

private:
Delegate& delegate_;
Expand All @@ -107,7 +101,6 @@ class Rasterizer final : public SnapshotDelegate {
std::unique_ptr<flutter::CompositorContext> compositor_context_;
std::unique_ptr<flutter::LayerTree> last_layer_tree_;
fml::closure next_frame_callback_;
bool user_override_resource_cache_bytes_;
fml::WeakPtrFactory<Rasterizer> weak_factory_;

// |SnapshotDelegate|
Expand Down
13 changes: 1 addition & 12 deletions shell/common/shell.cc
Original file line number Diff line number Diff line change
Expand Up @@ -610,16 +610,6 @@ void Shell::OnPlatformViewSetViewportMetrics(const ViewportMetrics& metrics) {
FML_DCHECK(is_setup_);
FML_DCHECK(task_runners_.GetPlatformTaskRunner()->RunsTasksOnCurrentThread());

// This is the formula Android uses.
// https://android.googlesource.com/platform/frameworks/base/+/master/libs/hwui/renderthread/CacheManager.cpp#41
int max_bytes = metrics.physical_width * metrics.physical_height * 12 * 4;
task_runners_.GetGPUTaskRunner()->PostTask(
[rasterizer = rasterizer_->GetWeakPtr(), max_bytes] {
if (rasterizer) {
rasterizer->SetResourceCacheMaxBytes(max_bytes, false);
}
});

task_runners_.GetUITaskRunner()->PostTask(
[engine = engine_->GetWeakPtr(), metrics]() {
if (engine) {
Expand Down Expand Up @@ -873,8 +863,7 @@ void Shell::HandleEngineSkiaMessage(fml::RefPtr<PlatformMessage> message) {
[rasterizer = rasterizer_->GetWeakPtr(),
max_bytes = args->value.GetInt()] {
if (rasterizer) {
rasterizer->SetResourceCacheMaxBytes(static_cast<size_t>(max_bytes),
true);
rasterizer->SetResourceCacheMaxBytes(max_bytes);
}
});
}
Expand Down
5 changes: 1 addition & 4 deletions shell/gpu/gpu_surface_gl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@ static const int kGrCacheMaxCount = 8192;

// Default maximum number of bytes of GPU memory of budgeted resources in the
// cache.
// The shell will dynamically increase or decrease this cache based on the
// viewport size, unless a user has specifically requested a size on the Skia
// system channel.
static const size_t kGrCacheMaxByteSize = 24 * (1 << 20);
static const size_t kGrCacheMaxByteSize = 512 * (1 << 20);

GPUSurfaceGL::GPUSurfaceGL(GPUSurfaceGLDelegate* delegate)
: delegate_(delegate), weak_factory_(this) {
Expand Down