5c612ade3b
This sample attempts to re-create an image's alpha channel by drawing it one pixel at a time and timing how long each pixel takes to draw. The "abc" text should appear twice normally, and the third and fourth versions are reconstructed from timing, one by timing 1:1 pixel draws, the other by timing 1x1:1024x1024 upscale into an offscreen. It's not meant to be an exact reconstruction, but you can easily see the shapes, particularly at -O0, -O1, and -Os. Auto-vectorization from -O2/-O3 do a good amount to cover up the problem. The legacy CPU backend is the main place to look. I haven't been able to reconstruct any images using SkRasterPipelineBlitter or SkVMBlitter, and while on the GPU I do see non-random patterns in the timing, it appears to be the same single pattern across devices, OSes, GPUs, GPU APIs and content... I assume it's something like our resource caching policy. This can't really be a GM, given how it draws non-deterministically. Bug: chromium:1088224 Change-Id: I2ec79c8dd407ecb104fd9bf0c8039cb6dd1fe436 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/313466 Commit-Queue: Mike Klein <mtklein@google.com> Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Mike Reed <reed@google.com> |
||
---|---|---|
.. | ||
DecodeFile.h | ||
PerlinPatch.cpp | ||
Sample2PtRadial.cpp | ||
Sample3D.cpp | ||
Sample.cpp | ||
Sample.h | ||
SampleAAClip.cpp | ||
SampleAAGeometry.cpp | ||
SampleAARectModes.cpp | ||
SampleAARects.cpp | ||
SampleAndroidShadows.cpp | ||
SampleAnimatedImage.cpp | ||
SampleAnimatedText.cpp | ||
SampleAnimBlur.cpp | ||
SampleArc.cpp | ||
SampleAtlas.cpp | ||
SampleAudio.cpp | ||
SampleBackdropBounds.cpp | ||
SampleBitmapRect.cpp | ||
SampleCamera.cpp | ||
SampleCCPRGeometry.cpp | ||
SampleChart.cpp | ||
SampleChineseFling.cpp | ||
SampleCircle.cpp | ||
SampleClip.cpp | ||
SampleClipDrawMatch.cpp | ||
SampleClock.cpp | ||
SampleColorFilter.cpp | ||
SampleComplexClip.cpp | ||
SampleCowboy.cpp | ||
SampleCusp.cpp | ||
SampleDegenerateQuads.cpp | ||
SampleDegenerateTwoPtRadials.cpp | ||
SampleEffects.cpp | ||
SampleEmboss.cpp | ||
SampleFatBits.cpp | ||
SampleFillType.cpp | ||
SampleFilter2.cpp | ||
SampleFilterQuality.cpp | ||
SampleFitCubicToCircle.cpp | ||
SampleFlutterAnimate.cpp | ||
SampleFontCache.cpp | ||
SampleGlyphTransform.cpp | ||
SampleGradients.cpp | ||
SampleHairCurves.cpp | ||
SampleHairline.cpp | ||
SampleHairModes.cpp | ||
SampleHT.cpp | ||
SampleIdentityScale.cpp | ||
SampleImageFilterDAG.cpp | ||
SampleLayerMask.cpp | ||
SampleLayers.cpp | ||
SampleLCD.cpp | ||
SampleLua.cpp | ||
SampleManyRects.cpp | ||
SampleMegaStroke.cpp | ||
SampleMixer.cpp | ||
SamplePatch.cpp | ||
SamplePath.cpp | ||
SamplePathClip.cpp | ||
SamplePathEffects.cpp | ||
SamplePathOverstroke.cpp | ||
SamplePathText.cpp | ||
SamplePolyToPoly.cpp | ||
SampleQuadStroker.cpp | ||
SampleRectanizer.cpp | ||
SampleRegion.cpp | ||
SampleRepeatTile.cpp | ||
SampleSG.cpp | ||
SampleShaders.cpp | ||
SampleShadowColor.cpp | ||
SampleShadowReference.cpp | ||
SampleShadowUtils.cpp | ||
SampleShip.cpp | ||
SampleSimpleStroker.cpp | ||
SampleSlides.cpp | ||
SampleStringArt.cpp | ||
SampleStrokePath.cpp | ||
SampleStrokeRect.cpp | ||
SampleSubpixelTranslate.cpp | ||
SampleSVGFile.cpp | ||
SampleTessellatedWedge.cpp | ||
SampleTextBox.cpp | ||
SampleTextEffects.cpp | ||
SampleTextureUpload.cpp | ||
SampleThinAA.cpp | ||
SampleTiming.cpp | ||
SampleUnpremul.cpp | ||
SampleVertices.cpp | ||
SampleWritePixels.cpp | ||
SampleXfer.cpp | ||
SampleXfermodesBlur.cpp | ||
vertexdump.cpp |