skia2/gn/gm.gni
Brian Osman b433c5691b Adjust GPU YUV -> RGB (JPG) conversion
All of the published coefficients assume math is being done on bytes, and
that 128 is the encoding of 0 (in the biased Cb and Cr values). When
sampling an A8 texture, though, GPUs typically decode as byte/255. Thus,
128 ends up slightly larger than 0.5. To fix this, just adjust the bias
terms to be scaled by 128/255, rather than 0.5.

I also changed some of the other coefficients to be higher precision,
based on the values in ITU-T T.871.

This originally surfaced as a Chromium bug where an all-black JPG decoded
to (1/255, 0, 1/255) on GPU. I've added a GM that encodes a color cube to
JPG, then draws from the encoded data. GPU and CPU (libjpeg) still
disagree in many cases, but the newer version performs much better
(diffing gl and 8888 configs):

Previously: 95.2% of pixels differ, max diff of 2, avg diff of 1
Now       : 65.4% of pixels differ, max diff of 1, avg diff of 0

Bug: skia:7038 chromium:763605
Change-Id: I4801db9f6e2fc4d4109eb5e27c9499f214084d38
Reviewed-on: https://skia-review.googlesource.com/45842
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2017-09-13 14:10:50 +00:00

330 lines
8.8 KiB
Plaintext

# Copyright 2016 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Things are easiest for everyone if these source paths are absolute.
_gm = get_path_info("../gm", "abspath")
gm_sources = [
"$_gm/aaa.cpp",
"$_gm/aaclip.cpp",
"$_gm/aarectmodes.cpp",
"$_gm/aaxfermodes.cpp",
"$_gm/addarc.cpp",
"$_gm/all_bitmap_configs.cpp",
"$_gm/alpha_image.cpp",
"$_gm/alphagradients.cpp",
"$_gm/animatedGif.cpp",
"$_gm/animatedimageblurs.cpp",
"$_gm/anisotropic.cpp",
"$_gm/annotated_text.cpp",
"$_gm/arcofzorro.cpp",
"$_gm/arcto.cpp",
"$_gm/arithmode.cpp",
"$_gm/badpaint.cpp",
"$_gm/beziereffects.cpp",
"$_gm/beziers.cpp",
"$_gm/bigblurs.cpp",
"$_gm/bigmatrix.cpp",
"$_gm/bigrect.cpp",
"$_gm/bigrrectaaeffect.cpp",
"$_gm/bigtext.cpp",
"$_gm/bigtileimagefilter.cpp",
"$_gm/bitmapcopy.cpp",
"$_gm/bitmapfilters.cpp",
"$_gm/bitmapimage.cpp",
"$_gm/bitmappremul.cpp",
"$_gm/bitmaprect.cpp",
"$_gm/bitmaprecttest.cpp",
"$_gm/bitmapshader.cpp",
"$_gm/bitmaptiled.cpp",
"$_gm/bleed.cpp",
"$_gm/blend.cpp",
"$_gm/blurcircles.cpp",
"$_gm/blurcircles2.cpp",
"$_gm/blurignorexform.cpp",
"$_gm/blurimagevmask.cpp",
"$_gm/blurquickreject.cpp",
"$_gm/blurrect.cpp",
"$_gm/blurredclippedcircle.cpp",
"$_gm/blurroundrect.cpp",
"$_gm/blurs.cpp",
"$_gm/blurtextsmallradii.cpp",
"$_gm/bmpfilterqualityrepeat.cpp",
"$_gm/bug5252.cpp",
"$_gm/bug6643.cpp",
"$_gm/bug6783.cpp",
"$_gm/bug530095.cpp",
"$_gm/bug615686.cpp",
"$_gm/cgm.c",
"$_gm/cgms.cpp",
"$_gm/circles.cpp",
"$_gm/circulararcs.cpp",
"$_gm/circularclips.cpp",
"$_gm/clip_error.cpp",
"$_gm/clip_strokerect.cpp",
"$_gm/clipdrawdraw.cpp",
"$_gm/clippedbitmapshaders.cpp",
"$_gm/color4f.cpp",
"$_gm/coloremoji.cpp",
"$_gm/coloremoji_blendmodes.cpp",
"$_gm/colorfilteralpha8.cpp",
"$_gm/colorfilterimagefilter.cpp",
"$_gm/colorfilters.cpp",
"$_gm/colormatrix.cpp",
"$_gm/colorspacexform.cpp",
"$_gm/colorwheel.cpp",
"$_gm/complexclip.cpp",
"$_gm/complexclip_blur_tiled.cpp",
"$_gm/complexclip2.cpp",
"$_gm/complexclip3.cpp",
"$_gm/complexclip4.cpp",
"$_gm/composeshader.cpp",
"$_gm/concavepaths.cpp",
"$_gm/conicpaths.cpp",
"$_gm/constcolorprocessor.cpp",
"$_gm/convex_all_line_paths.cpp",
"$_gm/convexpaths.cpp",
"$_gm/convexpolyclip.cpp",
"$_gm/convexpolyeffect.cpp",
"$_gm/copyTo4444.cpp",
"$_gm/crbug_691386.cpp",
"$_gm/croppedrects.cpp",
"$_gm/crosscontextimage.cpp",
"$_gm/cubicpaths.cpp",
"$_gm/dashcircle.cpp",
"$_gm/dashcubics.cpp",
"$_gm/dashing.cpp",
"$_gm/deferredtextureimage.cpp",
"$_gm/degeneratesegments.cpp",
"$_gm/dftext.cpp",
"$_gm/discard.cpp",
"$_gm/displacement.cpp",
"$_gm/distantclip.cpp",
"$_gm/downsamplebitmap.cpp",
"$_gm/draw_bitmap_rect_skbug4374.cpp",
"$_gm/drawable.cpp",
"$_gm/drawatlas.cpp",
"$_gm/drawatlascolor.cpp",
"$_gm/drawbitmaprect.cpp",
"$_gm/drawfilter.cpp",
"$_gm/drawlooper.cpp",
"$_gm/drawminibitmaprect.cpp",
"$_gm/drawregion.cpp",
"$_gm/drawregionmodes.cpp",
"$_gm/dropshadowimagefilter.cpp",
"$_gm/drrect.cpp",
"$_gm/dstreadshuffle.cpp",
"$_gm/emboss.cpp",
"$_gm/emptypath.cpp",
"$_gm/encode.cpp",
"$_gm/encode-alpha-jpeg.cpp",
"$_gm/encode-platform.cpp",
"$_gm/encode-srgb.cpp",
"$_gm/extractbitmap.cpp",
"$_gm/fadefilter.cpp",
"$_gm/fatpathfill.cpp",
"$_gm/filltypes.cpp",
"$_gm/filltypespersp.cpp",
"$_gm/filterbitmap.cpp",
"$_gm/filterbug.cpp",
"$_gm/filterfastbounds.cpp",
"$_gm/filterindiabox.cpp",
"$_gm/fontcache.cpp",
"$_gm/fontmgr.cpp",
"$_gm/fontscaler.cpp",
"$_gm/fontscalerdistortable.cpp",
"$_gm/gamma.cpp",
"$_gm/gammaencodedpremul.cpp",
"$_gm/gammatext.cpp",
"$_gm/gamut.cpp",
"$_gm/getpostextpath.cpp",
"$_gm/giantbitmap.cpp",
"$_gm/glyph_pos.cpp",
"$_gm/glyph_pos_align.cpp",
"$_gm/gm.cpp",
"$_gm/gradient_matrix.cpp",
"$_gm/gradientDirtyLaundry.cpp",
"$_gm/gradients.cpp",
"$_gm/gradients_2pt_conical.cpp",
"$_gm/gradients_no_texture.cpp",
"$_gm/gradtext.cpp",
"$_gm/grayscalejpg.cpp",
"$_gm/hairlines.cpp",
"$_gm/hairmodes.cpp",
"$_gm/hardstop_gradients.cpp",
"$_gm/highcontrastfilter.cpp",
"$_gm/hittestpath.cpp",
"$_gm/hsl.cpp",
"$_gm/image.cpp",
"$_gm/image_pict.cpp",
"$_gm/image_shader.cpp",
"$_gm/imagealphathreshold.cpp",
"$_gm/imageblur.cpp",
"$_gm/imageblur2.cpp",
"$_gm/imageblurclampmode.cpp",
"$_gm/imageblurrepeatmode.cpp",
"$_gm/imageblurtiled.cpp",
"$_gm/imagefilters.cpp",
"$_gm/imagefiltersbase.cpp",
"$_gm/imagefiltersclipped.cpp",
"$_gm/imagefilterscropexpand.cpp",
"$_gm/imagefilterscropped.cpp",
"$_gm/imagefiltersgraph.cpp",
"$_gm/imagefiltersscaled.cpp",
"$_gm/imagefiltersstroked.cpp",
"$_gm/imagefilterstransformed.cpp",
"$_gm/imagefromyuvtextures.cpp",
"$_gm/imagemagnifier.cpp",
"$_gm/imagemakewithfilter.cpp",
"$_gm/imagemasksubset.cpp",
"$_gm/imageresizetiled.cpp",
"$_gm/imagescalealigned.cpp",
"$_gm/imagesource.cpp",
"$_gm/imagesource2.cpp",
"$_gm/internal_links.cpp",
"$_gm/inversepaths.cpp",
"$_gm/jpg_color_cube.cpp",
"$_gm/largeglyphblur.cpp",
"$_gm/lattice.cpp",
"$_gm/lcdblendmodes.cpp",
"$_gm/lcdoverlap.cpp",
"$_gm/lcdtext.cpp",
"$_gm/lighting.cpp",
"$_gm/linepaths.cpp",
"$_gm/localmatriximagefilter.cpp",
"$_gm/localmatriximageshader.cpp",
"$_gm/lumafilter.cpp",
"$_gm/makecolorspace.cpp",
"$_gm/manypaths.cpp",
"$_gm/matrixconvolution.cpp",
"$_gm/matriximagefilter.cpp",
"$_gm/megalooper.cpp",
"$_gm/mipmap.cpp",
"$_gm/mixedtextblobs.cpp",
"$_gm/modecolorfilters.cpp",
"$_gm/morphology.cpp",
"$_gm/multipicturedraw.cpp",
"$_gm/nested.cpp",
"$_gm/ninepatchstretch.cpp",
"$_gm/nonclosedpaths.cpp",
"$_gm/occludedrrectblur.cpp",
"$_gm/offsetimagefilter.cpp",
"$_gm/ovals.cpp",
"$_gm/overdrawcolorfilter.cpp",
"$_gm/OverStroke.cpp",
"$_gm/patch.cpp",
"$_gm/path_stroke_with_zero_length.cpp",
"$_gm/pathcontourstart.cpp",
"$_gm/patheffects.cpp",
"$_gm/pathfill.cpp",
"$_gm/pathinterior.cpp",
"$_gm/pathmaskcache.cpp",
"$_gm/pathopsinverse.cpp",
"$_gm/pathopsskpclip.cpp",
"$_gm/pathreverse.cpp",
"$_gm/pdf_never_embed.cpp",
"$_gm/perlinnoise.cpp",
"$_gm/perspshaders.cpp",
"$_gm/picture.cpp",
"$_gm/pictureimagefilter.cpp",
"$_gm/pictureimagegenerator.cpp",
"$_gm/pictureshader.cpp",
"$_gm/pictureshadercache.cpp",
"$_gm/pictureshadertile.cpp",
"$_gm/pixelsnap.cpp",
"$_gm/plus.cpp",
"$_gm/points.cpp",
"$_gm/poly2poly.cpp",
"$_gm/polygons.cpp",
"$_gm/quadpaths.cpp",
"$_gm/radial_gradient_precision.cpp",
"$_gm/readpixels.cpp",
"$_gm/recordopts.cpp",
"$_gm/rectangletexture.cpp",
"$_gm/rects.cpp",
"$_gm/repeated_bitmap.cpp",
"$_gm/resizeimagefilter.cpp",
"$_gm/reveal.cpp",
"$_gm/roundrects.cpp",
"$_gm/rrect.cpp",
"$_gm/rrectclipdrawpaint.cpp",
"$_gm/rrects.cpp",
"$_gm/samplerstress.cpp",
"$_gm/savelayer.cpp",
"$_gm/scaledstrokes.cpp",
"$_gm/shadertext.cpp",
"$_gm/shadertext2.cpp",
"$_gm/shadertext3.cpp",
"$_gm/shadows.cpp",
"$_gm/shadowutils.cpp",
"$_gm/shallowgradient.cpp",
"$_gm/shapes.cpp",
"$_gm/shapes_as_paths.cpp",
"$_gm/showmiplevels.cpp",
"$_gm/simpleaaclip.cpp",
"$_gm/simple_magnification.cpp",
"$_gm/simplerect.cpp",
"$_gm/skbug_257.cpp",
"$_gm/skbug_4868.cpp",
"$_gm/skbug_5321.cpp",
"$_gm/skbug1719.cpp",
"$_gm/smallarc.cpp",
"$_gm/smallimage.cpp",
"$_gm/smallpaths.cpp",
"$_gm/spritebitmap.cpp",
"$_gm/srcmode.cpp",
"$_gm/srgb.cpp",
"$_gm/tosrgb_colorfilter.cpp",
"$_gm/stlouisarch.cpp",
"$_gm/stringart.cpp",
"$_gm/stroke_rect_shader.cpp",
"$_gm/strokedlines.cpp",
"$_gm/strokefill.cpp",
"$_gm/strokerect.cpp",
"$_gm/strokerects.cpp",
"$_gm/strokes.cpp",
"$_gm/stroketext.cpp",
"$_gm/subsetshader.cpp",
"$_gm/surface.cpp",
"$_gm/tablecolorfilter.cpp",
"$_gm/tallstretchedbitmaps.cpp",
"$_gm/testgradient.cpp",
"$_gm/texdata.cpp",
"$_gm/textblob.cpp",
"$_gm/textblobblockreordering.cpp",
"$_gm/textblobcolortrans.cpp",
"$_gm/textblobgeometrychange.cpp",
"$_gm/textbloblooper.cpp",
"$_gm/textblobmixedsizes.cpp",
"$_gm/textblobrandomfont.cpp",
"$_gm/textblobshader.cpp",
"$_gm/textblobtransforms.cpp",
"$_gm/textblobuseaftergpufree.cpp",
"$_gm/texteffects.cpp",
"$_gm/texturedomaineffect.cpp",
"$_gm/thinconcavepaths.cpp",
"$_gm/thinrects.cpp",
"$_gm/thinstrokedrects.cpp",
"$_gm/tiledscaledbitmap.cpp",
"$_gm/tileimagefilter.cpp",
"$_gm/tilemodes.cpp",
"$_gm/tilemodes_scaled.cpp",
"$_gm/tinybitmap.cpp",
"$_gm/transparency.cpp",
"$_gm/typeface.cpp",
"$_gm/variedtext.cpp",
"$_gm/vertices.cpp",
"$_gm/verttext.cpp",
"$_gm/verttext2.cpp",
"$_gm/verylargebitmap.cpp",
"$_gm/windowrectangles.cpp",
"$_gm/xfermodeimagefilter.cpp",
"$_gm/xfermodes.cpp",
"$_gm/xfermodes2.cpp",
"$_gm/xfermodes3.cpp",
"$_gm/xform_image_gen.cpp",
"$_gm/yuvtorgbeffect.cpp",
]