diff options
author | Jack Moffitt <jack@metajack.im> | 2013-04-24 15:53:48 -0600 |
---|---|---|
committer | Jack Moffitt <jack@metajack.im> | 2013-04-24 15:53:48 -0600 |
commit | af94ffb46d42289e5dbf770ce6a174ec52481d53 (patch) | |
tree | e5258e1cb40f4fd6d28049530c55970c108bd368 /src/servo-gfx/render_layers.rs | |
parent | 8931d17a6f3e647e0a32a3afc38e59cea28b8921 (diff) | |
parent | da505b367297a66eba6a9324fbf3e4f9cd654599 (diff) | |
download | servo-af94ffb46d42289e5dbf770ce6a174ec52481d53.tar.gz servo-af94ffb46d42289e5dbf770ce6a174ec52481d53.zip |
Merge branch 'ILyoan-stride'
Diffstat (limited to 'src/servo-gfx/render_layers.rs')
-rw-r--r-- | src/servo-gfx/render_layers.rs | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/servo-gfx/render_layers.rs b/src/servo-gfx/render_layers.rs index b409215366a..09972d9cfb4 100644 --- a/src/servo-gfx/render_layers.rs +++ b/src/servo-gfx/render_layers.rs @@ -50,17 +50,18 @@ pub fn render_layers(layer_ref: *RenderLayer, let width = right - x; let height = bottom - y; - // Round the width up the nearest 32 pixels for DMA on the Mac. - let mut stride = width; - if stride % 32 != 0 { - stride = (stride & !(32 - 1)) + 32; - } - assert!(stride % 32 == 0); - assert!(stride >= width); + let tile_rect = Rect(Point2D(x, y), Size2D(width, height)); - debug!("tile stride %u", stride); + // Round the width up the nearest 32 pixels for DMA on the Mac. + let aligned_width = if width % 32 == 0 { + width + } else { + (width & !(32 - 1)) + 32 + }; + assert!(aligned_width % 32 == 0); + assert!(aligned_width >= width); - let tile_rect = Rect(Point2D(x, y), Size2D(width, height)); + debug!("tile aligned_width %u", aligned_width); let buffer; // FIXME: Try harder to search for a matching tile. @@ -72,7 +73,9 @@ pub fn render_layers(layer_ref: *RenderLayer, // Create a new buffer. debug!("creating tile, (%u, %u)", x, y); - let size = Size2D(stride as i32, height as i32); + let size = Size2D(aligned_width as i32, height as i32); + // FIXME: This may not be always true. + let stride = size.width * 4; let mut data: ~[u8] = ~[0]; let offset; @@ -82,7 +85,7 @@ pub fn render_layers(layer_ref: *RenderLayer, let align = 256; - let len = ((size.width * size.height * 4) as uint) + align; + let len = ((stride * size.height) as uint) + align; vec::reserve(&mut data, len); vec::raw::set_len(&mut data, len); @@ -102,10 +105,10 @@ pub fn render_layers(layer_ref: *RenderLayer, data, offset, size, - size.width * 4, + stride, B8G8R8A8), rect: tile_rect, - stride: stride + stride: stride as uint }; //} |