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; ...@@ -111,6 +111,26 @@ bool debugCheckIntrinsicSizes = false;
/// * The discussion at [RendererBinding.drawFrame]. /// * The discussion at [RendererBinding.drawFrame].
bool debugProfilePaintsEnabled = false; 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) { void _debugDrawDoubleRect(Canvas canvas, Rect outerRect, Rect innerRect, Color color) {
final Path path = new Path() final Path path = new Path()
......
...@@ -10,6 +10,8 @@ import 'package:flutter/foundation.dart'; ...@@ -10,6 +10,8 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/painting.dart'; import 'package:flutter/painting.dart';
import 'package:vector_math/vector_math_64.dart'; import 'package:vector_math/vector_math_64.dart';
import 'debug.dart';
/// A composited layer. /// A composited layer.
/// ///
/// During painting, the render tree generates a tree of composited layers that /// During painting, the render tree generates a tree of composited layers that
...@@ -531,9 +533,11 @@ class ClipRectLayer extends ContainerLayer { ...@@ -531,9 +533,11 @@ class ClipRectLayer extends ContainerLayer {
@override @override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) { void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushClipRect(clipRect.shift(layerOffset)); if (!debugDisableClipLayers)
builder.pushClipRect(clipRect.shift(layerOffset));
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
builder.pop(); if (!debugDisableClipLayers)
builder.pop();
} }
@override @override
...@@ -559,9 +563,11 @@ class ClipRRectLayer extends ContainerLayer { ...@@ -559,9 +563,11 @@ class ClipRRectLayer extends ContainerLayer {
@override @override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) { void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushClipRRect(clipRRect.shift(layerOffset)); if (!debugDisableClipLayers)
builder.pushClipRRect(clipRRect.shift(layerOffset));
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
builder.pop(); if (!debugDisableClipLayers)
builder.pop();
} }
@override @override
...@@ -587,9 +593,11 @@ class ClipPathLayer extends ContainerLayer { ...@@ -587,9 +593,11 @@ class ClipPathLayer extends ContainerLayer {
@override @override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) { void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushClipPath(clipPath.shift(layerOffset)); if (!debugDisableClipLayers)
builder.pushClipPath(clipPath.shift(layerOffset));
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
builder.pop(); if (!debugDisableClipLayers)
builder.pop();
} }
} }
...@@ -664,9 +672,11 @@ class OpacityLayer extends ContainerLayer { ...@@ -664,9 +672,11 @@ class OpacityLayer extends ContainerLayer {
@override @override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) { void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushOpacity(alpha); if (!debugDisableOpacityLayers)
builder.pushOpacity(alpha);
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
builder.pop(); if (!debugDisableOpacityLayers)
builder.pop();
} }
@override @override
...@@ -778,13 +788,15 @@ class PhysicalModelLayer extends ContainerLayer { ...@@ -778,13 +788,15 @@ class PhysicalModelLayer extends ContainerLayer {
@override @override
void addToScene(ui.SceneBuilder builder, Offset layerOffset) { void addToScene(ui.SceneBuilder builder, Offset layerOffset) {
builder.pushPhysicalShape( if (!debugDisablePhysicalShapeLayers)
path: clipPath.shift(layerOffset), builder.pushPhysicalShape(
elevation: elevation, path: clipPath.shift(layerOffset),
color: color, elevation: elevation,
); color: color,
);
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
builder.pop(); if (!debugDisablePhysicalShapeLayers)
builder.pop();
} }
@override @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