# Failures of any GM tests listed in this file will be ignored [1], as
# if they had been marked "ignore-failure": true in the per-builder
# expected-results.json files.
#
# The idea is that, if you modify a GM test in such a way that you know it will
# require rebaselines on multiple platforms, you should add that test's name to
# this list within the same CL that modifies the test.
# Then, AS SOON AS POSSIBLE, you should rebaseline the tests (they will show up
# as status "failure-ignored") and remove the line you added to this file.
# If there are any lingering failures that need to be suppressed (ignored), you
# MUST move those suppressions into the per-builder expected-results.json files.
#
# The test name must match exactly (no partial string matches).
# See http://skbug.com/2022
#
# Any lines starting with '#' are comments and will be ignored.
# Other than that, each line must either be whitespace or list just one test.
#
# For more information, see https://code.google.com/p/skia/issues/detail?id=1600
# ('GM expectations: create tool to suppress failures until new baselines are
# checked in')
#
#
# [1] Differences between renderModes (e.g., normal rendering path and
# "serialized") are NEVER ignored.  See
# https://code.google.com/p/skia/issues/detail?id=1748 ('gm: add new result
# type, RenderModeMismatch')

# EXAMPLES: (remove the first '#' on each line)
#
## Added as part of MADE-UP BUG
## http://skbug.com/123456 : ignoring failures on gradtext GM test
## epoger will rebaseline by 25 Dec 2013
#gradtext

# reed: bitmapfilters changed (labels) with hide_config CL, just need rebaselines
bitmapfilters

# egdaniel dashing4 gm will now correctly contain dotted lines for gpu (previous missing)
# /usr/lib/x86_64-linux-gnu/libfontconfig
dashing4

# humper:
# Needs rebaselining after faster GPU blur patch lands
megalooper_0x0
megalooper_1x4
megalooper_4x1
bleed
blurquickreject
blurrects
bigblurs

# senorblanco: 
# Needs rebaselining after improved perlin noise scaling
perlinnoise
perlinnoise_localmatrix
imagefiltersscaled

# jvanverth:
# A8 text gamma changes slightly
# https://codereview.chromium.org/348153002/
imageblurtiled
filterbitmap_text_3.00pt
filterbitmap_text_7.00pt
filterbitmap_text_10.00pt
texteffects
gammatext
fontscaler
imageblur_large
imageblur
convex_poly_clip
fontcache
varied_text_ignorable_clip_lcd
imageresizetiled
fontmgr_iter
varied_text_clipped_no_lcd
typefacestyles_kerning
downsamplebitmap_text_high_72.00pt
downsamplebitmap_text_medium_72.00pt
degeneratesegments
verttext2
varied_text_clipped_lcd
cubicclosepath
quadclosepath
lineclosepath
cubicpath
quadpath
linepath
imagefiltersgraph
gradtext
drawlooper
emptypath
lcdtext
matrixconvolution
typefacestyles
morphology
downsamplebitmap_text_low_72.00pt
fontmgr_match
lighting
imagemagnifier
xfermodes2
downsamplebitmap_text_none_72.00pt
displacement
xfermodes
shadertext
arithmode
verttext
bitmapsource
xfermodes3
typeface
twopointconical
stroketext
complexclip_aa
complexclip_bw
stroke-fill
tileimagefilter
getpostextpath
drawbitmaprect
simpleaaclip_aaclip
simpleaaclip_path
simpleaaclip_rect
shadertext2
blurs
complexclip_aa_layer
complexclip_bw_layer
scaled_tilemodes_npot
tilemodes
tilemodes_npot
scaled_tilemodes
bitmapfilters
imagefiltersbase
pictureimagefilter
srcmode
image-surface
scaled_tilemode_bitmap
scaled_tilemode_gradient
tilemode_bitmap
tilemode_gradient
xfermodeimagefilter
dropshadowimagefilter
internal_links
offsetimagefilter
bitmapcopy
samplerstress
imagefilterscropped
poly2poly
# senorblanco: 
# Needs rebaselining after improved perlin noise scaling
perlinnoise
perlinnoise_localmatrix
imagefiltersscaled
