aboutsummaryrefslogtreecommitdiffstats
path: root/src/servo-gfx/render_layers.rs
diff options
context:
space:
mode:
authorJack Moffitt <jack@metajack.im>2013-04-24 15:53:48 -0600
committerJack Moffitt <jack@metajack.im>2013-04-24 15:53:48 -0600
commitaf94ffb46d42289e5dbf770ce6a174ec52481d53 (patch)
treee5258e1cb40f4fd6d28049530c55970c108bd368 /src/servo-gfx/render_layers.rs
parent8931d17a6f3e647e0a32a3afc38e59cea28b8921 (diff)
parentda505b367297a66eba6a9324fbf3e4f9cd654599 (diff)
downloadservo-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.rs29
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
};
//}