Unverified Commit 3890af64 authored by xster's avatar xster Committed by GitHub

Add debug disable flags for various performance affecting layers (#15548)

parent 27ac523e
......@@ -111,6 +111,26 @@ bool debugCheckIntrinsicSizes = false;
/// * The discussion at [RendererBinding.drawFrame].
bool debugProfilePaintsEnabled = false;
/// Setting to true will cause all clipping effects from the layer tree to be ignored.
///
/// Can be used to debug whether objects being clipped are painting excessively
/// in clipped areas. Can also be used to check whether excessive use of clipping
/// is affecting performance.
bool debugDisableClipLayers = false;
/// Setting to true will cause all physical modeling effects, such as shadows
/// from elevations, from the layer tree to be ignored.
///
/// Can be used to check whether excessive use of physical models is affecting
/// performance.
bool debugDisablePhysicalShapeLayers = false;
/// Setting to true will cause all opacity effects to be ignored.
///
/// An optimization to not paint the child at all when opacity is 0 will still
/// remain. Can be used to check whether excessive use of opacity effects is
/// affecting performance.
bool debugDisableOpacityLayers = false;
void _debugDrawDoubleRect(Canvas canvas, Rect outerRect, Rect innerRect, Color color) {
final Path path = new Path()
......
......@@ -10,6 +10,8 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/painting.dart';
import 'package:vector_math/vector_math_64.dart';
import 'debug.dart';
/// A composited layer.
///
/// During painting, the render tree generates a tree of composited layers that
......@@ -531,9 +533,11 @@ class ClipRectLayer extends ContainerLayer {
@override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushClipRect(clipRect.shift(layerOffset));
if (!debugDisableClipLayers)
builder.pushClipRect(clipRect.shift(layerOffset));
addChildrenToScene(builder, layerOffset);
builder.pop();
if (!debugDisableClipLayers)
builder.pop();
}
@override
......@@ -559,9 +563,11 @@ class ClipRRectLayer extends ContainerLayer {
@override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushClipRRect(clipRRect.shift(layerOffset));
if (!debugDisableClipLayers)
builder.pushClipRRect(clipRRect.shift(layerOffset));
addChildrenToScene(builder, layerOffset);
builder.pop();
if (!debugDisableClipLayers)
builder.pop();
}
@override
......@@ -587,9 +593,11 @@ class ClipPathLayer extends ContainerLayer {
@override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushClipPath(clipPath.shift(layerOffset));
if (!debugDisableClipLayers)
builder.pushClipPath(clipPath.shift(layerOffset));
addChildrenToScene(builder, layerOffset);
builder.pop();
if (!debugDisableClipLayers)
builder.pop();
}
}
......@@ -664,9 +672,11 @@ class OpacityLayer extends ContainerLayer {
@override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushOpacity(alpha);
if (!debugDisableOpacityLayers)
builder.pushOpacity(alpha);
addChildrenToScene(builder, layerOffset);
builder.pop();
if (!debugDisableOpacityLayers)
builder.pop();
}
@override
......@@ -778,13 +788,15 @@ class PhysicalModelLayer extends ContainerLayer {
@override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushPhysicalShape(
path: clipPath.shift(layerOffset),
elevation: elevation,
color: color,
);
if (!debugDisablePhysicalShapeLayers)
builder.pushPhysicalShape(
path: clipPath.shift(layerOffset),
elevation: elevation,
color: color,
);
addChildrenToScene(builder, layerOffset);
builder.pop();
if (!debugDisablePhysicalShapeLayers)
builder.pop();
}
@override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment