OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
87 int y; | 87 int y; |
88 SkColor oldPixel; | 88 SkColor oldPixel; |
89 SkColor newPixel; | 89 SkColor newPixel; |
90 }; | 90 }; |
91 #endif | 91 #endif |
92 | 92 |
93 struct PaintInvalidationTracking { | 93 struct PaintInvalidationTracking { |
94 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); | 94 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); |
95 Vector<PaintInvalidationInfo> trackedPaintInvalidations; | 95 Vector<PaintInvalidationInfo> trackedPaintInvalidations; |
96 #if DCHECK_IS_ON() | 96 #if DCHECK_IS_ON() |
97 RefPtr<SkPicture> lastPaintedPicture; | 97 sk_sp<SkPicture> lastPaintedPicture; |
98 Region paintInvalidationRegionSinceLastPaint; | 98 Region paintInvalidationRegionSinceLastPaint; |
99 Vector<UnderPaintInvalidation> underPaintInvalidations; | 99 Vector<UnderPaintInvalidation> underPaintInvalidations; |
100 #endif | 100 #endif |
101 }; | 101 }; |
102 | 102 |
103 typedef HashMap<const GraphicsLayer*, PaintInvalidationTracking> PaintInvalidati onTrackingMap; | 103 typedef HashMap<const GraphicsLayer*, PaintInvalidationTracking> PaintInvalidati onTrackingMap; |
104 static PaintInvalidationTrackingMap& paintInvalidationTrackingMap() | 104 static PaintInvalidationTrackingMap& paintInvalidationTrackingMap() |
105 { | 105 { |
106 DEFINE_STATIC_LOCAL(PaintInvalidationTrackingMap, map, ()); | 106 DEFINE_STATIC_LOCAL(PaintInvalidationTrackingMap, map, ()); |
107 return map; | 107 return map; |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
331 { | 331 { |
332 return m_previousInterestRect; | 332 return m_previousInterestRect; |
333 } | 333 } |
334 | 334 |
335 void GraphicsLayer::paint(const IntRect* interestRect, GraphicsContext::Disabled Mode disabledMode) | 335 void GraphicsLayer::paint(const IntRect* interestRect, GraphicsContext::Disabled Mode disabledMode) |
336 { | 336 { |
337 if (paintWithoutCommit(interestRect, disabledMode)) { | 337 if (paintWithoutCommit(interestRect, disabledMode)) { |
338 getPaintController().commitNewDisplayItems(offsetFromLayoutObjectWithSub pixelAccumulation()); | 338 getPaintController().commitNewDisplayItems(offsetFromLayoutObjectWithSub pixelAccumulation()); |
339 #if DCHECK_IS_ON() | 339 #if DCHECK_IS_ON() |
340 if (RuntimeEnabledFeatures::slimmingPaintUnderInvalidationCheckingEnable d()) { | 340 if (RuntimeEnabledFeatures::slimmingPaintUnderInvalidationCheckingEnable d()) { |
341 RefPtr<SkPicture> newPicture = capturePicture(); | 341 sk_sp<SkPicture> newPicture = capturePicture(); |
342 checkPaintUnderInvalidations(*newPicture); | 342 checkPaintUnderInvalidations(*newPicture); |
343 PaintInvalidationTracking& tracking = paintInvalidationTrackingMap() .add(this, PaintInvalidationTracking()).storedValue->value; | 343 PaintInvalidationTracking& tracking = paintInvalidationTrackingMap() .add(this, PaintInvalidationTracking()).storedValue->value; |
344 tracking.lastPaintedPicture = newPicture; | 344 tracking.lastPaintedPicture = newPicture; |
f(malita)
2016/09/01 03:55:38
Not new to this CL (and prolly not very important
Łukasz Anforowicz
2016/09/01 20:50:58
Done.
| |
345 tracking.paintInvalidationRegionSinceLastPaint = Region(); | 345 tracking.paintInvalidationRegionSinceLastPaint = Region(); |
346 } | 346 } |
347 #endif | 347 #endif |
348 } | 348 } |
349 } | 349 } |
350 | 350 |
351 bool GraphicsLayer::paintWithoutCommit(const IntRect* interestRect, GraphicsCont ext::DisabledMode disabledMode) | 351 bool GraphicsLayer::paintWithoutCommit(const IntRect* interestRect, GraphicsCont ext::DisabledMode disabledMode) |
352 { | 352 { |
353 ASSERT(drawsContent()); | 353 ASSERT(drawsContent()); |
354 | 354 |
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1113 { | 1113 { |
1114 if (rect == m_contentsRect) | 1114 if (rect == m_contentsRect) |
1115 return; | 1115 return; |
1116 | 1116 |
1117 m_contentsRect = rect; | 1117 m_contentsRect = rect; |
1118 updateContentsRect(); | 1118 updateContentsRect(); |
1119 } | 1119 } |
1120 | 1120 |
1121 void GraphicsLayer::setContentsToImage(Image* image, RespectImageOrientationEnum respectImageOrientation) | 1121 void GraphicsLayer::setContentsToImage(Image* image, RespectImageOrientationEnum respectImageOrientation) |
1122 { | 1122 { |
1123 RefPtr<SkImage> skImage = image ? image->imageForCurrentFrame() : nullptr; | 1123 sk_sp<SkImage> skImage = image ? image->imageForCurrentFrame() : nullptr; |
1124 | 1124 |
1125 if (image && skImage && image->isBitmapImage()) { | 1125 if (image && skImage && image->isBitmapImage()) { |
1126 if (respectImageOrientation == RespectImageOrientation) { | 1126 if (respectImageOrientation == RespectImageOrientation) { |
1127 ImageOrientation imageOrientation = toBitmapImage(image)->currentFra meOrientation(); | 1127 ImageOrientation imageOrientation = toBitmapImage(image)->currentFra meOrientation(); |
1128 skImage = DragImage::resizeAndOrientImage(skImage.release(), imageOr ientation); | 1128 skImage = DragImage::resizeAndOrientImage(std::move(skImage), imageO rientation); |
1129 } | 1129 } |
1130 } | 1130 } |
1131 | 1131 |
1132 if (image && skImage) { | 1132 if (image && skImage) { |
1133 if (!m_imageLayer) { | 1133 if (!m_imageLayer) { |
1134 m_imageLayer = wrapUnique(Platform::current()->compositorSupport()-> createImageLayer()); | 1134 m_imageLayer = wrapUnique(Platform::current()->compositorSupport()-> createImageLayer()); |
1135 registerContentsLayer(m_imageLayer->layer()); | 1135 registerContentsLayer(m_imageLayer->layer()); |
1136 } | 1136 } |
1137 m_imageLayer->setImage(skImage.get()); | 1137 m_imageLayer->setImage(skImage.get()); |
1138 m_imageLayer->layer()->setOpaque(image->currentFrameKnownToBeOpaque()); | 1138 m_imageLayer->layer()->setOpaque(image->currentFrameKnownToBeOpaque()); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1248 } | 1248 } |
1249 | 1249 |
1250 void GraphicsLayer::setCompositorMutableProperties(uint32_t properties) | 1250 void GraphicsLayer::setCompositorMutableProperties(uint32_t properties) |
1251 { | 1251 { |
1252 if (WebLayer* layer = platformLayer()) | 1252 if (WebLayer* layer = platformLayer()) |
1253 layer->setCompositorMutableProperties(properties); | 1253 layer->setCompositorMutableProperties(properties); |
1254 } | 1254 } |
1255 | 1255 |
1256 #if DCHECK_IS_ON() | 1256 #if DCHECK_IS_ON() |
1257 | 1257 |
1258 PassRefPtr<SkPicture> GraphicsLayer::capturePicture() | 1258 sk_sp<SkPicture> GraphicsLayer::capturePicture() |
1259 { | 1259 { |
1260 if (!drawsContent()) | 1260 if (!drawsContent()) |
1261 return nullptr; | 1261 return nullptr; |
1262 | 1262 |
1263 IntSize intSize = expandedIntSize(size()); | 1263 IntSize intSize = expandedIntSize(size()); |
1264 GraphicsContext graphicsContext(getPaintController()); | 1264 GraphicsContext graphicsContext(getPaintController()); |
1265 graphicsContext.beginRecording(IntRect(IntPoint(0, 0), intSize)); | 1265 graphicsContext.beginRecording(IntRect(IntPoint(0, 0), intSize)); |
1266 getPaintController().paintArtifact().replay(graphicsContext); | 1266 getPaintController().paintArtifact().replay(graphicsContext); |
1267 return graphicsContext.endRecording(); | 1267 return graphicsContext.endRecording(); |
1268 } | 1268 } |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1331 } | 1331 } |
1332 | 1332 |
1333 oldBitmap.unlockPixels(); | 1333 oldBitmap.unlockPixels(); |
1334 newBitmap.unlockPixels(); | 1334 newBitmap.unlockPixels(); |
1335 | 1335 |
1336 // Visualize under-invalidations by overlaying the new bitmap (containing re d pixels indicating under-invalidations, | 1336 // Visualize under-invalidations by overlaying the new bitmap (containing re d pixels indicating under-invalidations, |
1337 // and transparent pixels otherwise) onto the painting. | 1337 // and transparent pixels otherwise) onto the painting. |
1338 SkPictureRecorder recorder; | 1338 SkPictureRecorder recorder; |
1339 recorder.beginRecording(width, height); | 1339 recorder.beginRecording(width, height); |
1340 recorder.getRecordingCanvas()->drawBitmap(newBitmap, 0, 0); | 1340 recorder.getRecordingCanvas()->drawBitmap(newBitmap, 0, 0); |
1341 RefPtr<SkPicture> picture = fromSkSp(recorder.finishRecordingAsPicture()); | 1341 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); |
1342 getPaintController().appendDebugDrawingAfterCommit(*this, picture, offsetFro mLayoutObjectWithSubpixelAccumulation()); | 1342 getPaintController().appendDebugDrawingAfterCommit(*this, picture, offsetFro mLayoutObjectWithSubpixelAccumulation()); |
1343 } | 1343 } |
1344 | 1344 |
1345 #endif // DCHECK_IS_ON() | 1345 #endif // DCHECK_IS_ON() |
1346 | 1346 |
1347 } // namespace blink | 1347 } // namespace blink |
1348 | 1348 |
1349 #ifndef NDEBUG | 1349 #ifndef NDEBUG |
1350 void showGraphicsLayerTree(const blink::GraphicsLayer* layer) | 1350 void showGraphicsLayerTree(const blink::GraphicsLayer* layer) |
1351 { | 1351 { |
1352 if (!layer) { | 1352 if (!layer) { |
1353 fprintf(stderr, "Cannot showGraphicsLayerTree for (nil).\n"); | 1353 fprintf(stderr, "Cannot showGraphicsLayerTree for (nil).\n"); |
1354 return; | 1354 return; |
1355 } | 1355 } |
1356 | 1356 |
1357 String output = layer->layerTreeAsText(blink::LayerTreeIncludesDebugInfo); | 1357 String output = layer->layerTreeAsText(blink::LayerTreeIncludesDebugInfo); |
1358 fprintf(stderr, "%s\n", output.utf8().data()); | 1358 fprintf(stderr, "%s\n", output.utf8().data()); |
1359 } | 1359 } |
1360 #endif | 1360 #endif |
OLD | NEW |