Add de-jelly flags / settings and begin using them
Adds two command line flags to control the experimental de-jelly effect.
Also adds helper functions for accessing flags and other de-jelly
properties.
Finally updates two places in CC where we need to expand our clip when
de-jelly is enabled.
Bug: 995965
Change-Id: I9fc91b4aa767c0a723f8b8e677242e708c70bf8f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1810317
Commit-Queue: Eric Karl <[email protected]>
Reviewed-by: Jonathan Ross <[email protected]>
Cr-Commit-Position: refs/heads/master@{#698081}
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 20a7f24..a0740f4 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -33,6 +33,7 @@
#include "cc/trees/layer_tree_frame_sink.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/ukm_manager.h"
+#include "components/viz/common/display/de_jelly.h"
#include "components/viz/common/features.h"
#include "components/viz/common/frame_sinks/begin_frame_source.h"
#include "components/viz/common/frame_sinks/copy_output_request.h"
@@ -3208,6 +3209,15 @@
settings.send_compositor_frame_ack = false;
+ // Renderer can de-jelly, browser UI can not. We do not know whether we are
+ // going to apply de-jelly until we draw a frame in the Viz process. Because
+ // of this, all changes in the renderer are based on whether de-jelly may be
+ // active (viz::DeJellyEnabled) vs whether it is currently active
+ // (viz::DeJellyActive).
+ settings.allow_de_jelly_effect = viz::DeJellyEnabled();
+ // Disable occlusion if de-jelly effect is enabled.
+ settings.enable_occlusion &= !settings.allow_de_jelly_effect;
+
return settings;
}