mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
gfx: Allow tile size to be set on the command line
This commit is contained in:
parent
4fd486970b
commit
54a71a7d0c
2 changed files with 17 additions and 9 deletions
|
@ -9,6 +9,7 @@ pub struct Opts {
|
|||
render_mode: RenderMode,
|
||||
render_backend: BackendType,
|
||||
n_render_threads: uint,
|
||||
tile_size: uint,
|
||||
}
|
||||
|
||||
pub enum RenderMode {
|
||||
|
@ -23,9 +24,10 @@ pub fn from_cmdline_args(args: &[~str]) -> Opts {
|
|||
let args = args.tail();
|
||||
|
||||
let opts = ~[
|
||||
getopts::optopt(~"o"),
|
||||
getopts::optopt(~"r"),
|
||||
getopts::optopt(~"t"),
|
||||
getopts::optopt(~"o"), // output file
|
||||
getopts::optopt(~"r"), // rendering backend
|
||||
getopts::optopt(~"s"), // size of tiles
|
||||
getopts::optopt(~"t"), // threads to render with
|
||||
];
|
||||
|
||||
let opt_match = match getopts::getopts(args, opts) {
|
||||
|
@ -63,6 +65,11 @@ pub fn from_cmdline_args(args: &[~str]) -> Opts {
|
|||
None => CairoBackend
|
||||
};
|
||||
|
||||
let tile_size: uint = match getopts::opt_maybe_str(copy opt_match, ~"s") {
|
||||
Some(move tile_size_str) => from_str::from_str(tile_size_str).get(),
|
||||
None => 512,
|
||||
};
|
||||
|
||||
let n_render_threads: uint = match getopts::opt_maybe_str(move opt_match, ~"t") {
|
||||
Some(move n_render_threads_str) => from_str::from_str(n_render_threads_str).get(),
|
||||
None => 1, // FIXME: Number of cores.
|
||||
|
@ -73,5 +80,6 @@ pub fn from_cmdline_args(args: &[~str]) -> Opts {
|
|||
render_mode: move render_mode,
|
||||
render_backend: move render_backend,
|
||||
n_render_threads: n_render_threads,
|
||||
tile_size: tile_size,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,8 +14,6 @@ use geom::size::Size2D;
|
|||
use std::arc::ARC;
|
||||
use std::arc;
|
||||
|
||||
const TILE_SIZE: uint = 512;
|
||||
|
||||
pub struct RenderLayer {
|
||||
display_list: DisplayList,
|
||||
size: Size2D<uint>
|
||||
|
@ -33,6 +31,8 @@ pub fn render_layers(layer_ref: *RenderLayer,
|
|||
buffer_set: LayerBufferSet,
|
||||
opts: &Opts,
|
||||
f: RenderFn) -> LayerBufferSet {
|
||||
let tile_size = opts.tile_size;
|
||||
|
||||
let mut buffers = match move buffer_set { LayerBufferSet { buffers: move b } => move b };
|
||||
|
||||
// FIXME: Try not to create a new array here.
|
||||
|
@ -46,8 +46,8 @@ pub fn render_layers(layer_ref: *RenderLayer,
|
|||
let mut x = 0;
|
||||
while x < layer.size.width {
|
||||
// Figure out the dimension of this tile.
|
||||
let right = uint::min(x + TILE_SIZE, layer.size.width);
|
||||
let bottom = uint::min(y + TILE_SIZE, layer.size.height);
|
||||
let right = uint::min(x + tile_size, layer.size.width);
|
||||
let bottom = uint::min(y + tile_size, layer.size.height);
|
||||
let width = right - x;
|
||||
let height = bottom - y;
|
||||
|
||||
|
@ -119,9 +119,9 @@ pub fn render_layers(layer_ref: *RenderLayer,
|
|||
// Enqueue the port.
|
||||
new_buffer_ports.push(move new_buffer_port);
|
||||
|
||||
x += TILE_SIZE;
|
||||
x += tile_size;
|
||||
}
|
||||
y += TILE_SIZE;
|
||||
y += tile_size;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue