| Index: cc/layers/picture_layer.cc
 | 
| diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
 | 
| index 55241d0a16f4c43125e3cdb09c95a104f23b6f2f..48f3f7349453f7dd859bab4af70b8a635413ff84 100644
 | 
| --- a/cc/layers/picture_layer.cc
 | 
| +++ b/cc/layers/picture_layer.cc
 | 
| @@ -24,7 +24,8 @@ PictureLayer::PictureLayer(ContentLayerClient* client)
 | 
|        instrumentation_object_tracker_(id()),
 | 
|        update_source_frame_number_(-1),
 | 
|        can_use_lcd_text_for_update_(true),
 | 
| -      is_mask_(false) {
 | 
| +      is_mask_(false),
 | 
| +      nearest_neighbor_(false) {
 | 
|  }
 | 
|  
 | 
|  PictureLayer::PictureLayer(ContentLayerClient* client,
 | 
| @@ -37,12 +38,14 @@ PictureLayer::~PictureLayer() {
 | 
|  }
 | 
|  
 | 
|  scoped_ptr<LayerImpl> PictureLayer::CreateLayerImpl(LayerTreeImpl* tree_impl) {
 | 
| -  return PictureLayerImpl::Create(tree_impl, id());
 | 
| +  return PictureLayerImpl::Create(tree_impl, id(), is_mask_);
 | 
|  }
 | 
|  
 | 
|  void PictureLayer::PushPropertiesTo(LayerImpl* base_layer) {
 | 
|    Layer::PushPropertiesTo(base_layer);
 | 
|    PictureLayerImpl* layer_impl = static_cast<PictureLayerImpl*>(base_layer);
 | 
| +  // TODO(danakj): Make is_mask_ a constructor parameter for PictureLayer.
 | 
| +  DCHECK_EQ(layer_impl->is_mask_, is_mask_);
 | 
|  
 | 
|    int source_frame_number = layer_tree_host()->source_frame_number();
 | 
|    gfx::Size impl_bounds = layer_impl->bounds();
 | 
| @@ -63,17 +66,16 @@ void PictureLayer::PushPropertiesTo(LayerImpl* base_layer) {
 | 
|      recording_source_->SetEmptyBounds();
 | 
|    }
 | 
|  
 | 
| -  // Unlike other properties, invalidation must always be set on layer_impl.
 | 
| -  // See PictureLayerImpl::PushPropertiesTo for more details.
 | 
| -  layer_impl->invalidation_.Clear();
 | 
| -  layer_impl->invalidation_.Swap(&recording_invalidation_);
 | 
| -  layer_impl->set_is_mask(is_mask_);
 | 
| +  layer_impl->SetNearestNeighbor(nearest_neighbor_);
 | 
| +
 | 
|    scoped_refptr<RasterSource> raster_source =
 | 
|        recording_source_->CreateRasterSource();
 | 
|    raster_source->SetBackgoundColor(SafeOpaqueBackgroundColor());
 | 
|    raster_source->SetRequiresClear(!contents_opaque() &&
 | 
|                                    !client_->FillsBoundsCompletely());
 | 
| -  layer_impl->UpdateRasterSource(raster_source);
 | 
| +  layer_impl->UpdateRasterSource(raster_source, &recording_invalidation_,
 | 
| +                                 nullptr);
 | 
| +  DCHECK(recording_invalidation_.IsEmpty());
 | 
|  }
 | 
|  
 | 
|  void PictureLayer::SetLayerTreeHost(LayerTreeHost* host) {
 | 
| @@ -206,6 +208,14 @@ void PictureLayer::ClearClient() {
 | 
|    UpdateDrawsContent(HasDrawableContent());
 | 
|  }
 | 
|  
 | 
| +void PictureLayer::SetNearestNeighbor(bool nearest_neighbor) {
 | 
| +  if (nearest_neighbor_ == nearest_neighbor)
 | 
| +    return;
 | 
| +
 | 
| +  nearest_neighbor_ = nearest_neighbor;
 | 
| +  SetNeedsCommit();
 | 
| +}
 | 
| +
 | 
|  bool PictureLayer::HasDrawableContent() const {
 | 
|    return client_ && Layer::HasDrawableContent();
 | 
|  }
 | 
| 
 |