skia2/bench
Mike Klein 04e10da836 clamp to premul when reading premul sRGB
It's pretty easy to start with sound premultiplied linear floats, pack those to sRGB encoded bytes, then read them back to linear floats and find them not quite premultiplied, with a color channel just a smidge greater than the alpha channel.  This can happen basically any time we have different transfer functions for alpha and colors... sRGB being the only one we draw into.

This is an annoying problem with no known good solution.  So apply the clamp hammer.

These new calls on SkRasterPipeline should make it impossible to get wrong.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I4c974f4a7b151f3f684946f1e83d06b1b288fd01
Reviewed-on: https://skia-review.googlesource.com/5945
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-12-13 22:09:57 +00:00
..
AAClipBench.cpp change SkClipOp to a class enum 2016-12-12 15:38:31 +00:00
AlternatingColorPatternBench.cpp Reland of "Finish conversion to sk_sp<SkShader> (patchset #2 id:20001 of https://codereview.chromium.org/1803763002/ )" 2016-03-14 12:22:10 -07:00
AndroidCodecBench.cpp Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
AndroidCodecBench.h Convert SkAutoTUnref<SkData> to sk_sp<SkData>. 2016-08-03 13:32:32 -07:00
BenchLogger.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
BenchLogger.h Remove Sk prefix from some bench classes. 2014-06-19 12:32:29 -07:00
Benchmark.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
Benchmark.h Began logging more gpu stats from nanobench 2015-12-02 09:05:38 -08:00
BezierBench.cpp chmod -x *.cpp *.h 2016-10-27 16:41:14 +00:00
BigPathBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
BitmapBench.cpp Factor code to rotate a canvas about a point. 2016-07-12 15:01:19 -07:00
BitmapRectBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
BitmapRegionDecoderBench.cpp change SkStreams to work with sk_sp<SkData> instead of SkData* 2016-09-12 12:01:44 -07:00
BitmapRegionDecoderBench.h Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
BitmapScaleBench.cpp Valgrind is not a fan of uninitialized Src pixels. 2016-01-19 12:42:49 -08:00
BlurBench.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
BlurImageFilterBench.cpp Update SkBlurImageFilter to sk_sp 2016-04-04 04:31:25 -07:00
BlurOccludedRRectBench.cpp Implement GPU occluded blur mask filter 2016-08-10 16:25:25 -07:00
BlurRectBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
BlurRectsBench.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
BlurRoundRectBench.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
ChartBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
check_bench_regressions.py Adds dashboard link for one-line plot on each alert item. 2014-05-13 17:38:17 +00:00
ChecksumBench.cpp Use sse4.2 CRC32 instructions to hash when available. 2016-08-08 09:06:28 -07:00
ChromeBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
CmapBench.cpp Move SkTypeface to sk_sp. 2016-05-12 10:09:31 -07:00
CodecBench.cpp Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
CodecBench.h Convert SkAutoTUnref<SkData> to sk_sp<SkData>. 2016-08-03 13:32:32 -07:00
CodecBenchPriv.h Make CodecBench test kPremul and kUnpremul 2016-01-07 14:20:20 -08:00
ColorCodecBench.cpp Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
ColorCodecBench.h Delete qcms 2016-11-01 16:45:40 +00:00
ColorCubeBench.cpp Reland of [2] of "switch colorfilters to sk_sp (patchset #11 id:200001 of https://codereview.chromium.o… (patchset #1 id:1 of https://codereview.chromium.org/1821103004/ ) 2016-03-22 10:17:23 -07:00
ColorFilterBench.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
ColorPrivBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
ControlBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
CoverageBench.cpp remove 'deprecated' region from SkDraw 2016-04-27 07:49:17 -07:00
DashBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
DisplacementBench.cpp Update DisplacementMapEffect to sk_sp 2016-04-15 07:17:36 -07:00
DrawBitmapAABench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
DrawLatticeBench.cpp Fix nanobench crashes 2016-09-30 13:09:01 -07:00
EncoderBench.cpp SkImageEncoder: simplify API 2016-11-23 16:40:32 +00:00
FontCacheBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
FontScalerBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
FSRectBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
GameBench.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
GeometryBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
GLBench.cpp re-land of added sk_FragCoord support to skslc 2016-12-13 14:28:53 +00:00
GLBench.h Turned on SkSL->GLSL compiler 2016-10-12 06:39:56 -07:00
GLInstancedArraysBench.cpp Rename vars and functions from 'glslcaps'->'shadercaps' 2016-11-29 20:17:48 +00:00
GLVec4ScalarBench.cpp Rename vars and functions from 'glslcaps'->'shadercaps' 2016-11-29 20:17:48 +00:00
GLVertexAttributesBench.cpp Rename vars and functions from 'glslcaps'->'shadercaps' 2016-11-29 20:17:48 +00:00
GMBench.cpp Run GM benchs in bench mode 2016-05-16 09:09:18 -07:00
GMBench.h Remove const from const int loops. 2015-10-01 09:43:39 -07:00
GradientBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
GrMemoryPoolBench.cpp Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
GrMipMapBench.cpp Rename all color space factories from New* to Make* 2016-10-24 14:02:27 +00:00
GrResourceCacheBench.cpp bench, samples, etc: s/SkAutoTUnref/sk_sp/ 2016-11-07 15:17:32 +00:00
gUniqueGlyphIDs.h switch array to uint16_t to fix overflows 2013-06-11 19:53:19 +00:00
HairlinePathBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
HardStopGradientBench_ScaleNumColors.cpp Add HardStopGradientBench_ScaleNumHardStops.cpp 2016-07-28 10:59:49 -07:00
HardStopGradientBench_ScaleNumHardStops.cpp Add HardStopGradientBench_ScaleNumHardStops.cpp 2016-07-28 10:59:49 -07:00
HardStopGradientBench_SpecialHardStops.cpp Add new benchmark for testing special hard stop gradient cases 2016-08-03 12:12:19 -07:00
ImageBench.cpp switch surface to sk_sp 2016-03-23 18:59:25 -07:00
ImageCacheBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
ImageCacheBudgetBench.cpp Remove SkAutoTDeleteArray 2016-11-02 21:30:38 +00:00
ImageFilterCollapse.cpp Update SkColorFilterImageFilter to sk_sp 2016-04-05 11:50:42 -07:00
ImageFilterDAGBench.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
InterpBench.cpp Reverse dependency between SkScalar.h and SkFixed.h. 2016-04-07 08:49:31 -07:00
LightingBench.cpp Rein in the use of SkDevice.h 2016-04-20 05:29:51 -07:00
LineBench.cpp Revert of Modify LineBench for drawing straight line (patchset #3 id:40001 of https://codereview.chromium.org/1936153002/ ) 2016-05-05 14:02:36 -07:00
MagnifierBench.cpp Update MagnifierImageFilter to sk_sp 2016-04-07 07:34:15 -07:00
MathBench.cpp *SkTCast<int*>(float*) -> memcpy 2016-09-29 15:48:04 +00:00
Matrix44Bench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
MatrixBench.cpp Revert of Change mapRectScaleTranslate to pass args/ret by value (patchset #2 id:20001 of https://codereview.chromium.org/2138943002/ ) 2016-08-10 07:13:21 -07:00
MatrixConvolutionBench.cpp distinguish distinct matrixconvolution benchmarks 2016-04-12 15:52:52 -07:00
MeasureBench.cpp Add time return argument to SkCurveMeasure's getPosTan, rename to getPosTanTime 2016-08-10 07:45:31 -07:00
MemoryBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
MemsetBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
MergeBench.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
microbench.json Fix the other microbench schema 2014-07-25 08:30:11 -07:00
MipMapBench.cpp Rename SkSourceGammaTreatment to SkDestinationSurfaceColorMode 2016-11-09 01:05:07 +00:00
MorphologyBench.cpp Update SkMorphology ImageFilters to sk_sp 2016-04-05 09:09:37 -07:00
MutexBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
nanobench.cpp nanobench: Add per-run time reporting. 2016-12-06 21:48:42 +00:00
nanobench.h Lots of progress on switching to SkColorSpace rather than SkColorProfileType 2016-06-16 13:03:24 -07:00
nanobenchAndroid.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
nanobenchAndroid.h Simplify linkages to Android framework internals 2015-10-26 07:21:32 -07:00
pack_int_uint16_t_Bench.cpp Add a bench to measure the best way to pack from int to uint16_t with SSE. 2016-07-15 07:45:53 -07:00
PatchBench.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
PatchGridBench.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
PathBench.cpp Add GMs and benchs for concave Analytic AA 2016-12-12 22:08:38 +00:00
PathIterBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
PDFBench.cpp Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
PerlinNoiseBench.cpp move setshader to sk_sp, re-using SK_SUPPORT_LEGACY_CREATESHADER_PTR 2016-03-25 09:08:00 -07:00
PictureNestingBench.cpp return pictures as sk_sp 2016-03-18 07:25:55 -07:00
PictureOverheadBench.cpp No \n in bench names. 2016-09-13 13:27:13 -07:00
PicturePlaybackBench.cpp Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
PremulAndUnpremulAlphaOpsBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
QuickRejectBench.cpp Optimized implementation of quickReject() 2016-08-12 08:29:08 -07:00
ReadPixBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
RecordingBench.cpp add pipe to nanobench 2016-10-21 15:02:45 +00:00
RecordingBench.h add pipe to nanobench 2016-10-21 15:02:45 +00:00
RectanizerBench.cpp Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
RectBench.cpp Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" 2016-10-05 17:33:03 -07:00
RectoriBench.cpp remove unused code around SK_SUPPORT_LEGACY_XFERMODE_PARAM 2016-11-03 19:54:08 +00:00
RefCntBench.cpp Clean up some unused atomic routines. 2016-07-27 08:40:45 -07:00
RegionBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
RegionContainBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
RepeatTileBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
ResultsWriter.h nanobench: Add per-run time reporting. 2016-12-06 21:48:42 +00:00
RotatedRectBench.cpp make SkXfermode.h go away 2016-11-16 15:38:11 +00:00
RTreeBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
ScalarBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
ShaderMaskBench.cpp move setshader to sk_sp, re-using SK_SUPPORT_LEGACY_CREATESHADER_PTR 2016-03-25 09:08:00 -07:00
ShapesBench.cpp Begin instanced rendering for simple shapes 2016-07-07 08:49:11 -07:00
Sk4fBench.cpp Sk4f: add floor() 2016-02-09 15:41:36 -08:00
SkBlend_optsBench.cpp Plumb dst color space in many places, rather than "mode" 2016-12-09 20:31:23 +00:00
SkGlyphCacheBench.cpp SkTypeface::MakeFromName to take SkFontStyle. 2016-05-31 11:42:37 -07:00
SkLinearBitmapPipelineBench.cpp Add destination color space to shader ContextRec 2016-12-05 21:48:59 +00:00
SKPAnimationBench.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
SKPAnimationBench.h bench, samples, etc: s/SkAutoTUnref/sk_sp/ 2016-11-07 15:17:32 +00:00
SKPBench.cpp bench, samples, etc: s/SkAutoTUnref/sk_sp/ 2016-11-07 15:17:32 +00:00
SKPBench.h bench, samples, etc: s/SkAutoTUnref/sk_sp/ 2016-11-07 15:17:32 +00:00
skpbench.json Fix scale type in JSON format 2014-06-26 15:39:31 -07:00
SkRasterPipelineBench.cpp clamp to premul when reading premul sRGB 2016-12-13 22:09:57 +00:00
SortBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
StrokeBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
SwizzleBench.cpp Optimize CMYK->RGBA (BGRA) transform for jpeg decodes 2016-02-08 13:26:25 -08:00
TableBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
TextBench.cpp Move SkTypeface to sk_sp. 2016-05-12 10:09:31 -07:00
TextBlobBench.cpp Use sk_sp text blob APIs 2016-09-13 10:00:23 -07:00
TileBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
TileImageFilterBench.cpp Update TileImageFilter to sk_sp 2016-04-15 07:57:40 -07:00
TopoSortBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
VertBench.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
WritePixelsBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
WriterBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
Xfer4fBench.cpp make SkXfermode.h go away 2016-11-16 15:38:11 +00:00
XferF16Bench.cpp make SkXfermode.h go away 2016-11-16 15:38:11 +00:00
XfermodeBench.cpp make SkXfermode.h go away 2016-11-16 15:38:11 +00:00