// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/viz/common/switches.h" #include "base/command_line.h" #include "base/strings/string_number_conversions.h" #include "components/viz/common/constants.h" namespace switches { // The default number of the BeginFrames to wait to activate a surface with // dependencies. const char kDeadlineToSynchronizeSurfaces[] = "deadline-to-synchronize-surfaces"; // Enables multi-client Surface synchronization. In practice, this indicates // that LayerTreeHost expects to be given a valid viz::LocalSurfaceId provided // by the parent compositor. const char kEnableSurfaceSynchronization[] = "enable-surface-synchronization"; // Enables inspecting Viz Display Compositor objects. Default port is 9229. // For local inspection use chrome://inspect#other const char kEnableVizDevTools[] = "enable-viz-devtools"; // Enables hit-test debug logging. const char kEnableVizHitTestDebug[] = "enable-viz-hit-test-debug"; // Effectively disables pipelining of compositor frame production stages by // waiting for each stage to finish before completing a frame. const char kRunAllCompositorStagesBeforeDraw[] = "run-all-compositor-stages-before-draw"; // Enables the viz hit-test logic (HitTestAggregator and HitTestQuery), with // hit-test data coming from surface layer. const char kUseVizHitTestSurfaceLayer[] = "use-viz-hit-test-surface-layer"; // Disables begin frame limiting in both cc scheduler and display scheduler. // Also implies --disable-gpu-vsync (see //ui/gl/gl_switches.h). const char kDisableFrameRateLimit[] = "disable-frame-rate-limit"; base::Optional GetDeadlineToSynchronizeSurfaces() { base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); if (command_line->HasSwitch(switches::kRunAllCompositorStagesBeforeDraw)) { // In full-pipeline mode, surface deadlines should always be unlimited. return base::nullopt; } std::string deadline_to_synchronize_surfaces_string = command_line->GetSwitchValueASCII( switches::kDeadlineToSynchronizeSurfaces); if (deadline_to_synchronize_surfaces_string.empty()) return viz::kDefaultActivationDeadlineInFrames; uint32_t activation_deadline_in_frames; if (!base::StringToUint(deadline_to_synchronize_surfaces_string, &activation_deadline_in_frames)) { return base::nullopt; } return activation_deadline_in_frames; } } // namespace switches