Index: cc/picture_layer_tiling.cc |
diff --git a/cc/picture_layer_tiling.cc b/cc/picture_layer_tiling.cc |
index e0a254448afade895486e60bc841371ad03ac949..e760e4aa3a6a588c3a3420ca5c9ff432f062938a 100644 |
--- a/cc/picture_layer_tiling.cc |
+++ b/cc/picture_layer_tiling.cc |
@@ -190,8 +190,7 @@ PictureLayerTiling::Iterator::Iterator(const PictureLayerTiling* tiling, |
: tiling_(tiling), |
dest_rect_(dest_rect), |
current_tile_(NULL), |
- dest_to_content_scale_x_(0), |
- dest_to_content_scale_y_(0), |
+ dest_to_content_scale_(0), |
tile_i_(0), |
tile_j_(0), |
left_(0), |
@@ -202,42 +201,17 @@ PictureLayerTiling::Iterator::Iterator(const PictureLayerTiling* tiling, |
if (dest_rect_.IsEmpty()) |
return; |
- float dest_to_content_scale = tiling_->contents_scale_ / dest_scale; |
+ dest_to_content_scale_ = tiling_->contents_scale_ / dest_scale; |
// This is the maximum size that the dest rect can be, given the content size. |
gfx::Size dest_content_size = gfx::ToCeiledSize(gfx::ScaleSize( |
tiling_->ContentRect().size(), |
- 1 / dest_to_content_scale, |
- 1 / dest_to_content_scale)); |
- |
- // The last row/column of texels may not have full rasterization coverage, |
- // which can happen if the ceiled content size does not equal the floored |
- // content size. These texels will sample outside of the recording to |
- // generate their pixels. Use the floored size here to ignore them. |
- gfx::Size content_size_floor = gfx::ToFlooredSize(tiling->ContentSizeF()); |
- dest_to_content_scale_x_ = content_size_floor.width() / |
- static_cast<float>(dest_content_size.width()); |
- dest_to_content_scale_y_ = content_size_floor.height() / |
- static_cast<float>(dest_content_size.height()); |
- |
- // It's possible that when drawing a quad with texel:pixel ratio < 1 |
- // GL_LINEAR will cause us to blend in invalid texels. |
- // We stretch the content a little more to prevent sampling past the |
- // middle of the last texel. |
- if (layerDeviceAlignment == LayerAlignedToDevice){ |
- if (dest_to_content_scale_x_ < 1.0) |
- dest_to_content_scale_x_ -= 0.5f / dest_content_size.width(); |
- if (dest_to_content_scale_y_ < 1.0) |
- dest_to_content_scale_y_ -= 0.5f / dest_content_size.height(); |
- } |
- else if (layerDeviceAlignment == LayerNotAlignedToDevice) { |
- dest_to_content_scale_x_ -= 0.5f / dest_content_size.width(); |
- dest_to_content_scale_y_ -= 0.5f / dest_content_size.height(); |
- } |
+ 1 / dest_to_content_scale_, |
+ 1 / dest_to_content_scale_)); |
gfx::Rect content_rect = |
gfx::ToEnclosingRect(gfx::ScaleRect(dest_rect_, |
- dest_to_content_scale_x_, |
- dest_to_content_scale_y_)); |
+ dest_to_content_scale_, |
+ dest_to_content_scale_)); |
// IndexFromSrcCoord clamps to valid tile ranges, so it's necessary to |
// check for non-intersection first. |
content_rect.Intersect(gfx::Rect(tiling_->tiling_data_.total_size())); |
@@ -286,8 +260,8 @@ PictureLayerTiling::Iterator& PictureLayerTiling::Iterator::operator++() { |
gfx::Rect content_rect = tiling_->tiling_data_.TileBounds(tile_i_, tile_j_); |
current_geometry_rect_ = gfx::ToEnclosingRect( |
- gfx::ScaleRect(content_rect, 1 / dest_to_content_scale_x_, |
- 1 / dest_to_content_scale_y_)); |
+ gfx::ScaleRect(content_rect, 1 / dest_to_content_scale_, |
+ 1 / dest_to_content_scale_)); |
current_geometry_rect_.Intersect(dest_rect_); |
@@ -336,8 +310,8 @@ gfx::RectF PictureLayerTiling::Iterator::texture_rect() const { |
// Convert from dest space => content space => texture space. |
gfx::RectF texture_rect(current_geometry_rect_); |
- texture_rect.Scale(dest_to_content_scale_x_, |
- dest_to_content_scale_y_); |
+ texture_rect.Scale(dest_to_content_scale_, |
+ dest_to_content_scale_); |
texture_rect.Offset(-tex_origin.OffsetFromOrigin()); |
texture_rect.Intersect(tiling_->ContentRect()); |