2c4b64e92a
After several different strategies, this one appears to work well. The basic test: 1) For a variety of drawing techniques, we render fixed size rectangles. (Solid colors via paint color, bitmap, etc...) 2) For each method in #1, we render to both an sRGB and WideGamutRGB offscreen surface. (AdobeRGB isn't wide enough to clearly demonstrate if things are working or not). 3) Use readPixels to fetch the raw (still in wide gamut) pixel data, then draw that directly to the final canvas. So, for each pair of squares, they should look clearly different. Currently, with the GPU backend, only the bicubic bitmap paths have that behavior. Adding more test cases (and fixing the ones that are already incorrect) will be the long tail of gamut transformation. Current output (with my other patchset, which fixes all bitmap draws): https://screenshot.googleplex.com/wsL3x7eCtWE.png BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2293173002 Review-Url: https://codereview.chromium.org/2293173002
469 lines
13 KiB
JSON
469 lines
13 KiB
JSON
[
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
|
|
"[SLAVE_BUILD]/skia/infra/bots/assets/skp/VERSION",
|
|
"/path/to/tmp/"
|
|
],
|
|
"name": "Get downloaded SKP VERSION"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
|
|
"42",
|
|
"[SLAVE_BUILD]/tmp/SKP_VERSION"
|
|
],
|
|
"name": "write SKP_VERSION"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
|
|
"[SLAVE_BUILD]/skia/infra/bots/assets/skimage/VERSION",
|
|
"/path/to/tmp/"
|
|
],
|
|
"name": "Get downloaded skimage VERSION"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
|
|
"42",
|
|
"[SLAVE_BUILD]/tmp/SK_IMAGE_VERSION"
|
|
],
|
|
"name": "write SK_IMAGE_VERSION"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
|
|
"[SLAVE_BUILD]/skia/infra/bots/assets/svg/VERSION",
|
|
"/path/to/tmp/"
|
|
],
|
|
"name": "Get downloaded SVG VERSION"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
|
|
"42",
|
|
"[SLAVE_BUILD]/tmp/SVG_VERSION"
|
|
],
|
|
"name": "write SVG_VERSION"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport os, sys\nfrom common import chromium_utils # Error? See https://crbug.com/584783.\n\n\nif os.path.exists(sys.argv[1]):\n chromium_utils.RemoveDirectory(sys.argv[1])\n",
|
|
"[CUSTOM_[SWARM_OUT_DIR]]/dm"
|
|
],
|
|
"env": {
|
|
"PYTHONPATH": "[SLAVE_BUILD]/skia/infra/bots/.recipe_deps/build/scripts"
|
|
},
|
|
"name": "rmtree dm",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import os, sys@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@from common import chromium_utils # Error? See https://crbug.com/584783.@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@if os.path.exists(sys.argv[1]):@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ chromium_utils.RemoveDirectory(sys.argv[1])@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
|
|
"[CUSTOM_[SWARM_OUT_DIR]]/dm",
|
|
"511"
|
|
],
|
|
"name": "makedirs dm",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
|
|
"[SLAVE_BUILD]/tmp",
|
|
"511"
|
|
],
|
|
"name": "makedirs tmp_dir",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = 'https://gold.skia.org/_/hashes'\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n try:\n with contextlib.closing(\n urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n hashes = w.read()\n with open(sys.argv[1], 'w') as f:\n f.write(hashes)\n break\n except Exception as e:\n print 'Failed to get uninteresting hashes from %s:' % HASHES_URL\n print e\n if retry == RETRIES:\n raise\n waittime = WAIT_BASE * math.pow(2, retry)\n print 'Retry in %d seconds.' % waittime\n time.sleep(waittime)\n",
|
|
"[SLAVE_BUILD]/tmp/uninteresting_hashes.txt"
|
|
],
|
|
"cwd": "[SLAVE_BUILD]/skia",
|
|
"env": {
|
|
"BUILDTYPE": "Debug",
|
|
"CHROME_HEADLESS": "1",
|
|
"SKIA_OUT": "[SLAVE_BUILD]/out"
|
|
},
|
|
"name": "get uninteresting hashes",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import contextlib@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import math@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import socket@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import time@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import urllib2@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@HASHES_URL = 'https://gold.skia.org/_/hashes'@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@RETRIES = 5@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@TIMEOUT = 60@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@WAIT_BASE = 15@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@socket.setdefaulttimeout(TIMEOUT)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@for retry in range(RETRIES):@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ try:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ with contextlib.closing(@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ hashes = w.read()@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ with open(sys.argv[1], 'w') as f:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ f.write(hashes)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ break@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ except Exception as e:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ print e@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ if retry == RETRIES:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ waittime = WAIT_BASE * math.pow(2, retry)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ print 'Retry in %d seconds.' % waittime@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ time.sleep(waittime)@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"catchsegv",
|
|
"[SLAVE_BUILD]/out/Debug/dm",
|
|
"--undefok",
|
|
"--resourcePath",
|
|
"[SLAVE_BUILD]/skia/resources",
|
|
"--skps",
|
|
"[SLAVE_BUILD]/skp",
|
|
"--images",
|
|
"[SLAVE_BUILD]/skimage/dm",
|
|
"--colorImages",
|
|
"[SLAVE_BUILD]/skimage/colorspace",
|
|
"--nameByHash",
|
|
"--properties",
|
|
"gitHash",
|
|
"abc123",
|
|
"master",
|
|
"client.skia",
|
|
"builder",
|
|
"Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug",
|
|
"build_number",
|
|
"6",
|
|
"--svgs",
|
|
"[SLAVE_BUILD]/svg",
|
|
"--key",
|
|
"arch",
|
|
"x86_64",
|
|
"compiler",
|
|
"GCC",
|
|
"configuration",
|
|
"Debug",
|
|
"cpu_or_gpu",
|
|
"CPU",
|
|
"cpu_or_gpu_value",
|
|
"AVX2",
|
|
"model",
|
|
"GCE",
|
|
"os",
|
|
"Ubuntu",
|
|
"--uninterestingHashesFile",
|
|
"[SLAVE_BUILD]/tmp/uninteresting_hashes.txt",
|
|
"--writePath",
|
|
"[CUSTOM_[SWARM_OUT_DIR]]/dm",
|
|
"--nogpu",
|
|
"--config",
|
|
"565",
|
|
"8888",
|
|
"gpu",
|
|
"gpusrgb",
|
|
"pdf",
|
|
"msaa16",
|
|
"f16",
|
|
"srgb",
|
|
"sp-8888",
|
|
"2ndpic-8888",
|
|
"lite-8888",
|
|
"serialize-8888",
|
|
"tiles_rt-8888",
|
|
"pic-8888",
|
|
"--src",
|
|
"tests",
|
|
"gm",
|
|
"image",
|
|
"colorImage",
|
|
"svg",
|
|
"--blacklist",
|
|
"f16",
|
|
"_",
|
|
"_",
|
|
"dstreadshuffle",
|
|
"f16",
|
|
"image",
|
|
"_",
|
|
"_",
|
|
"srgb",
|
|
"image",
|
|
"_",
|
|
"_",
|
|
"gpusrgb",
|
|
"image",
|
|
"_",
|
|
"_",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"bleed_image",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"c_gms",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"colortype",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"colortype_xfermodes",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"drawfilter",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"fontmgr_bounds_0.75_0",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"fontmgr_bounds_1_-0.25",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"fontmgr_bounds",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"fontmgr_match",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"fontmgr_iter",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"imagemasksubset",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"bitmapfilters",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"bitmapshaders",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"bleed",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"bleed_alpha_bmp",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"bleed_alpha_bmp_shader",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"convex_poly_clip",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"extractalpha",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"filterbitmap_checkerboard_32_32_g8",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"filterbitmap_image_mandrill_64",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"shadows",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"simpleaaclip_aaclip",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"composeshader_bitmap",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"scaled_tilemodes_npot",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"scaled_tilemodes",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"bleed_alpha_image",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"bleed_alpha_image_shader",
|
|
"sp-8888",
|
|
"gm",
|
|
"_",
|
|
"drawfilter",
|
|
"pic-8888",
|
|
"gm",
|
|
"_",
|
|
"drawfilter",
|
|
"2ndpic-8888",
|
|
"gm",
|
|
"_",
|
|
"drawfilter",
|
|
"lite-8888",
|
|
"gm",
|
|
"_",
|
|
"drawfilter",
|
|
"sp-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-picture",
|
|
"pic-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-picture",
|
|
"2ndpic-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-picture",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-picture",
|
|
"sp-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-raster",
|
|
"pic-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-raster",
|
|
"2ndpic-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-raster",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-raster",
|
|
"sp-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-ctable",
|
|
"pic-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-ctable",
|
|
"2ndpic-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-ctable",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"image-cacherator-from-ctable",
|
|
"sp-8888",
|
|
"gm",
|
|
"_",
|
|
"gamut",
|
|
"pic-8888",
|
|
"gm",
|
|
"_",
|
|
"gamut",
|
|
"lite-8888",
|
|
"gm",
|
|
"_",
|
|
"gamut",
|
|
"2ndpic-8888",
|
|
"gm",
|
|
"_",
|
|
"gamut",
|
|
"serialize-8888",
|
|
"gm",
|
|
"_",
|
|
"gamut"
|
|
],
|
|
"env": {
|
|
"BUILDTYPE": "Debug",
|
|
"CHROME_HEADLESS": "1",
|
|
"SKIA_OUT": "[SLAVE_BUILD]/out"
|
|
},
|
|
"name": "dm",
|
|
"~followup_annotations": [
|
|
"step returned non-zero exit code: 1",
|
|
"@@@STEP_FAILURE@@@"
|
|
]
|
|
},
|
|
{
|
|
"name": "$result",
|
|
"reason": "Failed build steps: dm",
|
|
"recipe_result": null,
|
|
"status_code": 1
|
|
}
|
|
] |