Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add debug option to disable vsync for profiling. #8755

Merged
merged 1 commit into from Dec 1, 2015
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Add debug option to disable vsync for profiling.

  • Loading branch information
gw3583 committed Nov 30, 2015
commit 6c8905126f9e33be5466d69a78443a3fa6f33746
@@ -188,6 +188,9 @@ pub struct Opts {

/// Do not use native titlebar
pub no_native_titlebar: bool,

/// Enable vsync in the compositor
pub enable_vsync: bool,
}

fn print_usage(app: &str, opts: &Options) {
@@ -277,6 +280,9 @@ pub struct DebugOptions {

/// Load web fonts synchronously to avoid non-deterministic network-driven reflows.
pub load_webfonts_synchronously: bool,

/// Disable vsync in the compositor
pub disable_vsync: bool,
}


@@ -312,6 +318,7 @@ impl DebugOptions {
"replace-surrogates" => debug_options.replace_surrogates = true,
"gc-profile" => debug_options.gc_profile = true,
"load-webfonts-synchronously" => debug_options.load_webfonts_synchronously = true,
"disable-vsync" => debug_options.disable_vsync = true,
"" => {},
_ => return Err(option)
};
@@ -358,6 +365,8 @@ pub fn print_debug_usage(app: &str) -> ! {
print_option("gc-profile", "Log GC passes and their durations.");
print_option("load-webfonts-synchronously",
"Load web fonts synchronously to avoid non-deterministic network-driven reflows");
print_option("disable-vsync",
"Disable vsync mode in the compositor to allow profiling at more than monitor refresh rate");

println!("");

@@ -488,6 +497,7 @@ pub fn default_opts() -> Opts {
convert_mouse_to_touch: false,
exit_after_load: false,
no_native_titlebar: false,
enable_vsync: true,
}
}

@@ -722,6 +732,7 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
convert_mouse_to_touch: debug_options.convert_mouse_to_touch,
exit_after_load: opt_match.opt_present("x"),
no_native_titlebar: opt_match.opt_present("b"),
enable_vsync: !debug_options.disable_vsync,
};

set_defaults(opts);
@@ -86,17 +86,21 @@ impl Window {
pub fn new(is_foreground: bool,
window_size: TypedSize2D<DevicePixel, u32>,
parent: Option<glutin::WindowID>) -> Rc<Window> {
let mut glutin_window = glutin::WindowBuilder::new()
.with_title("Servo".to_string())
.with_decorations(!opts::get().no_native_titlebar)
.with_vsync()
.with_dimensions(window_size.to_untyped().width, window_size.to_untyped().height)
.with_gl(Window::gl_version())
.with_visibility(is_foreground)
.with_parent(parent)
.with_multitouch()
.build()
.unwrap();
let width = window_size.to_untyped().width;
let height = window_size.to_untyped().height;
let mut builder = glutin::WindowBuilder::new().with_title("Servo".to_string())
.with_decorations(!opts::get().no_native_titlebar)
.with_dimensions(width, height)
.with_gl(Window::gl_version())
.with_visibility(is_foreground)
.with_parent(parent)
.with_multitouch();

if opts::get().enable_vsync {
builder = builder.with_vsync();
}

let mut glutin_window = builder.build().unwrap();

unsafe { glutin_window.make_current().expect("Failed to make context current!") }

ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.