aboutsummaryrefslogtreecommitdiffstats
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
parent8931d17a6f3e647e0a32a3afc38e59cea28b8921 (diff)
parentda505b367297a66eba6a9324fbf3e4f9cd654599 (diff)
downloadservo-af94ffb46d42289e5dbf770ce6a174ec52481d53.tar.gz
servo-af94ffb46d42289e5dbf770ce6a174ec52481d53.zip
Merge branch 'ILyoan-stride'
m---------src/rust-layers0
-rw-r--r--src/servo-gfx/render_layers.rs29
-rw-r--r--src/servo/platform/osmain.rs4
3 files changed, 18 insertions, 15 deletions
diff --git a/src/rust-layers b/src/rust-layers
-Subproject ab69046850bfb65b4ddc1c077d17a7f6a089f65
+Subproject 5b017bf55147ad4cf628da11bb7bdc084ea9c3a
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
};
//}
diff --git a/src/servo/platform/osmain.rs b/src/servo/platform/osmain.rs
index c9db90f068e..16485a8f0d0 100644
--- a/src/servo/platform/osmain.rs
+++ b/src/servo/platform/osmain.rs
@@ -83,7 +83,7 @@ struct AzureDrawTargetImageData {
impl layers::layers::ImageData for AzureDrawTargetImageData {
fn size(&self) -> Size2D<uint> { self.size }
- fn stride(&self) -> uint { self.data_source_surface.get_size().width as uint }
+ fn stride(&self) -> uint { self.data_source_surface.stride() as uint }
fn format(&self) -> layers::layers::Format {
// FIXME: This is not always correct. We should query the Azure draw target for the format.
layers::layers::ARGB32Format
@@ -341,7 +341,7 @@ fn Surface(backend: BackendType) -> Surface {
let layer_buffer = LayerBuffer {
draw_target: DrawTarget::new(backend, Size2D(800i32, 600i32), B8G8R8A8),
rect: Rect(Point2D(0u, 0u), Size2D(800u, 600u)),
- stride: 800
+ stride: 800 * 4
};
let layer_buffer_set = LayerBufferSet { buffers: ~[ layer_buffer ] };
Surface { layer_buffer_set: layer_buffer_set, have: true }