Remove "nvpr" configs

The majority of our gm testing has been disabling nvpr, which doesn't
match our real-world behavior where we use nvpr whenever available.
This CL fixes the issue by completely removing the explicit nvpr
configs. Now if we have nvpr, you get it.

This CL also lowers the nvpr priority in the path renderer chain and
adds a "NonNVPR" job on Quadro where we can continue to test our
non-nvpr codepaths on NVIDIA.

Bug: skia:
Change-Id: I6a36f1101c8218adcaaf10cab25d2c28e70371f0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223828
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This commit is contained in:
Chris Dalton 2019-06-25 20:07:56 -06:00 committed by Skia Commit-Bot
parent 9dbbf887ce
commit b3c9745911
21 changed files with 701 additions and 122 deletions

View File

@ -52,8 +52,7 @@ void RunWithGPUTestContexts(GrContextTestFn* test, GrContextTypeFilterFn* contex
// also tracks which of its contexts is current above that API and gets tripped up if the
// native windowing API is used directly outside of the command buffer code.
GrContextFactory factory(options);
ContextInfo ctxInfo = factory.getContextInfo(
contextType, GrContextFactory::ContextOverrides::kDisableNVPR);
ContextInfo ctxInfo = factory.getContextInfo(contextType);
if (contextTypeFilter && !(*contextTypeFilter)(contextType)) {
continue;
}
@ -63,12 +62,6 @@ void RunWithGPUTestContexts(GrContextTestFn* test, GrContextTypeFilterFn* contex
(*test)(reporter, ctxInfo);
ctxInfo.grContext()->flush();
}
ctxInfo = factory.getContextInfo(contextType,
GrContextFactory::ContextOverrides::kRequireNVPRSupport);
if (ctxInfo.grContext()) {
(*test)(reporter, ctxInfo);
ctxInfo.grContext()->flush();
}
}
}
} // namespace skiatest

View File

@ -219,11 +219,6 @@ struct SK_API GrContextOptions {
*/
bool fSuppressDualSourceBlending = false;
/**
* If true, the caps will never report driver support for path rendering.
*/
bool fSuppressPathRendering = false;
/**
* If true, the caps will never support geometry shaders.
*/

View File

@ -370,7 +370,7 @@ func deriveCompileTaskName(jobName string, parts map[string]string) string {
ec := []string{}
if val := parts["extra_config"]; val != "" {
ec = strings.Split(val, "_")
ignore := []string{"Skpbench", "AbandonGpuContext", "PreAbandonGpuContext", "Valgrind", "ReleaseAndAbandonGpuContext", "CCPR", "FSAA", "FAAA", "FDAA", "NativeFonts", "GDI", "NoGPUThreads", "ProcDump", "DDL1", "DDL3", "T8888", "DDLTotal", "DDLRecord", "9x9", "BonusConfigs", "SkottieTracing", "SkottieWASM"}
ignore := []string{"Skpbench", "AbandonGpuContext", "PreAbandonGpuContext", "Valgrind", "ReleaseAndAbandonGpuContext", "CCPR", "FSAA", "FAAA", "FDAA", "NativeFonts", "GDI", "NoGPUThreads", "ProcDump", "DDL1", "DDL3", "T8888", "DDLTotal", "DDLRecord", "9x9", "BonusConfigs", "SkottieTracing", "SkottieWASM", "NonNVPR"}
keep := make([]string, 0, len(ec))
for _, part := range ec {
if !util.In(part, ignore) {

View File

@ -596,6 +596,7 @@
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All",
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE",
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-BonusConfigs",
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR",
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan",
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan_ProcDump",
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All",

View File

@ -592,7 +592,7 @@
"--json-output",
"/path/to/tmp/json",
"copy",
"set -x; /data/local/tmp/nanobench -i /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/nanobench --svgs /sdcard/revenge_of_the_skiabot/svgs --pre_log --images --gpuStatsDump true --scales 1.0 1.1 --nocpu --config gl glsrgb glmsaa4 glnvpr4 --dontReduceOpListSplitting --match ~blurroundrect ~patch_grid ~desk_carsvg ~inc0.gif ~inc1.gif ~incInterlaced.gif ~inc0.jpg ~incGray.jpg ~inc0.wbmp ~inc1.wbmp ~inc0.webp ~inc1.webp ~inc0.ico ~inc1.ico ~inc0.png ~inc1.png ~inc2.png ~inc12.png ~inc13.png ~inc14.png ~inc0.webp ~inc1.webp --outResultsFile /sdcard/revenge_of_the_skiabot/perf/nanobench_abc123_1337000001.json --properties gitHash abc123 swarming_bot_id skia-bot-123 swarming_task_id 123456 --key arch arm64 compiler Clang cpu_or_gpu GPU cpu_or_gpu_value TegraX1 extra_config Android model NVIDIA_Shield os Android; echo $? >/data/local/tmp/rc",
"set -x; /data/local/tmp/nanobench -i /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/nanobench --svgs /sdcard/revenge_of_the_skiabot/svgs --pre_log --images --gpuStatsDump true --scales 1.0 1.1 --nocpu --config gl glsrgb glmsaa4 --dontReduceOpListSplitting --match ~blurroundrect ~patch_grid ~desk_carsvg ~inc0.gif ~inc1.gif ~incInterlaced.gif ~inc0.jpg ~incGray.jpg ~inc0.wbmp ~inc1.wbmp ~inc0.webp ~inc1.webp ~inc0.ico ~inc1.ico ~inc0.png ~inc1.png ~inc2.png ~inc12.png ~inc13.png ~inc14.png ~inc0.webp ~inc1.webp --outResultsFile /sdcard/revenge_of_the_skiabot/perf/nanobench_abc123_1337000001.json --properties gitHash abc123 swarming_bot_id skia-bot-123 swarming_task_id 123456 --key arch arm64 compiler Clang cpu_or_gpu GPU cpu_or_gpu_value TegraX1 extra_config Android model NVIDIA_Shield os Android; echo $? >/data/local/tmp/rc",
"[START_DIR]/tmp/nanobench.sh"
],
"env": {
@ -602,7 +602,7 @@
"infra_step": true,
"name": "write nanobench.sh",
"~followup_annotations": [
"@@@STEP_LOG_LINE@nanobench.sh@set -x; /data/local/tmp/nanobench -i /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/nanobench --svgs /sdcard/revenge_of_the_skiabot/svgs --pre_log --images --gpuStatsDump true --scales 1.0 1.1 --nocpu --config gl glsrgb glmsaa4 glnvpr4 --dontReduceOpListSplitting --match ~blurroundrect ~patch_grid ~desk_carsvg ~inc0.gif ~inc1.gif ~incInterlaced.gif ~inc0.jpg ~incGray.jpg ~inc0.wbmp ~inc1.wbmp ~inc0.webp ~inc1.webp ~inc0.ico ~inc1.ico ~inc0.png ~inc1.png ~inc2.png ~inc12.png ~inc13.png ~inc14.png ~inc0.webp ~inc1.webp --outResultsFile /sdcard/revenge_of_the_skiabot/perf/nanobench_abc123_1337000001.json --properties gitHash abc123 swarming_bot_id skia-bot-123 swarming_task_id 123456 --key arch arm64 compiler Clang cpu_or_gpu GPU cpu_or_gpu_value TegraX1 extra_config Android model NVIDIA_Shield os Android; echo $? >/data/local/tmp/rc@@@",
"@@@STEP_LOG_LINE@nanobench.sh@set -x; /data/local/tmp/nanobench -i /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/nanobench --svgs /sdcard/revenge_of_the_skiabot/svgs --pre_log --images --gpuStatsDump true --scales 1.0 1.1 --nocpu --config gl glsrgb glmsaa4 --dontReduceOpListSplitting --match ~blurroundrect ~patch_grid ~desk_carsvg ~inc0.gif ~inc1.gif ~incInterlaced.gif ~inc0.jpg ~incGray.jpg ~inc0.wbmp ~inc1.wbmp ~inc0.webp ~inc1.webp ~inc0.ico ~inc1.ico ~inc0.png ~inc1.png ~inc2.png ~inc12.png ~inc13.png ~inc14.png ~inc0.webp ~inc1.webp --outResultsFile /sdcard/revenge_of_the_skiabot/perf/nanobench_abc123_1337000001.json --properties gitHash abc123 swarming_bot_id skia-bot-123 swarming_task_id 123456 --key arch arm64 compiler Clang cpu_or_gpu GPU cpu_or_gpu_value TegraX1 extra_config Android model NVIDIA_Shield os Android; echo $? >/data/local/tmp/rc@@@",
"@@@STEP_LOG_END@nanobench.sh@@@"
]
},

View File

@ -164,7 +164,6 @@
"gl",
"glsrgb",
"glmsaa8",
"glnvpr8",
"--loops",
"1",
"--samples",

View File

@ -96,11 +96,6 @@ def nanobench_flags(api, bot):
configs.extend([gl_prefix, gl_prefix + 'srgb'])
if sample_count:
configs.append(gl_prefix + 'msaa' + sample_count)
if ('TegraX1' in bot or
'Quadro' in bot or
'GTX' in bot or
('GT610' in bot and 'Ubuntu17' not in bot)):
configs.extend([gl_prefix + 'nvpr' + sample_count])
# We want to test both the OpenGL config and the GLES config on Linux Intel:
# GL is used by Chrome, GLES is used by ChromeOS.

View File

@ -0,0 +1,446 @@
[
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0777",
"[START_DIR]\\tmp"
],
"infra_step": true,
"name": "makedirs tmp_dir"
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[START_DIR]\\skia\\infra\\bots\\assets\\skp\\VERSION",
"/path/to/tmp/"
],
"infra_step": true,
"name": "Get skp VERSION"
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"42",
"[START_DIR]\\tmp\\SKP_VERSION"
],
"infra_step": true,
"name": "write SKP_VERSION",
"~followup_annotations": [
"@@@STEP_LOG_LINE@SKP_VERSION@42@@@",
"@@@STEP_LOG_END@SKP_VERSION@@@"
]
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[START_DIR]\\skia\\infra\\bots\\assets\\skimage\\VERSION",
"/path/to/tmp/"
],
"infra_step": true,
"name": "Get skimage VERSION"
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"42",
"[START_DIR]\\tmp\\SK_IMAGE_VERSION"
],
"infra_step": true,
"name": "write SK_IMAGE_VERSION",
"~followup_annotations": [
"@@@STEP_LOG_LINE@SK_IMAGE_VERSION@42@@@",
"@@@STEP_LOG_END@SK_IMAGE_VERSION@@@"
]
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[START_DIR]\\skia\\infra\\bots\\assets\\svg\\VERSION",
"/path/to/tmp/"
],
"infra_step": true,
"name": "Get svg VERSION"
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"42",
"[START_DIR]\\tmp\\SVG_VERSION"
],
"infra_step": true,
"name": "write SVG_VERSION",
"~followup_annotations": [
"@@@STEP_LOG_LINE@SVG_VERSION@42@@@",
"@@@STEP_LOG_END@SVG_VERSION@@@"
]
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"rmtree",
"[START_DIR]\\test"
],
"infra_step": true,
"name": "rmtree test"
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0777",
"[START_DIR]\\test"
],
"infra_step": true,
"name": "makedirs test"
},
{
"cmd": [
"python",
"-u",
"\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = sys.argv[1]\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[2], '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",
"https://example.com/hashes.txt",
"[START_DIR]\\tmp\\uninteresting_hashes.txt"
],
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>;RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"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 = sys.argv[1]@@@",
"@@@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[2], '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": [
"python",
"-u",
"import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
],
"name": "get swarming bot id",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@import os@@@",
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"python",
"-u",
"import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
],
"name": "get swarming task id",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@import os@@@",
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"powershell",
"-ExecutionPolicy",
"Unrestricted",
"-File",
"RECIPE_MODULE[skia::flavor]\\resources\\win_run_and_check_log.ps1",
"[START_DIR]\\build\\dm",
"--resourcePath",
"[START_DIR]\\skia\\resources",
"--skps",
"[START_DIR]\\skp",
"--images",
"[START_DIR]\\skimage\\dm",
"--colorImages",
"[START_DIR]\\skimage\\colorspace",
"--nameByHash",
"--properties",
"gitHash",
"abc123",
"builder",
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR",
"buildbucket_build_id",
"123454321",
"task_id",
"task_12345",
"swarming_bot_id",
"skia-bot-123",
"swarming_task_id",
"123456",
"--svgs",
"[START_DIR]\\svg",
"--key",
"arch",
"x86_64",
"compiler",
"Clang",
"configuration",
"Debug",
"cpu_or_gpu",
"GPU",
"cpu_or_gpu_value",
"QuadroP400",
"extra_config",
"NonNVPR",
"model",
"Golo",
"os",
"Win10",
"style",
"default",
"--uninterestingHashesFile",
"[START_DIR]\\tmp\\uninteresting_hashes.txt",
"--writePath",
"[START_DIR]\\[SWARM_OUT_DIR]",
"--dont_write",
"pdf",
"--randomProcessorTest",
"--nocpu",
"--pr",
"~nvpr",
"--config",
"gl",
"glmsaa4",
"--src",
"tests",
"gm",
"image",
"colorImage",
"svg",
"--blacklist",
"_",
"svg",
"_",
"svgparse_",
"_",
"image",
"gen_platf",
"pal8os2v2.bmp",
"_",
"image",
"gen_platf",
"pal8os2v2-16.bmp",
"_",
"image",
"gen_platf",
"rgba32abf.bmp",
"_",
"image",
"gen_platf",
"rgb24prof.bmp",
"_",
"image",
"gen_platf",
"rgb24lprof.bmp",
"_",
"image",
"gen_platf",
"8bpp-pixeldata-cropped.bmp",
"_",
"image",
"gen_platf",
"4bpp-pixeldata-cropped.bmp",
"_",
"image",
"gen_platf",
"32bpp-pixeldata-cropped.bmp",
"_",
"image",
"gen_platf",
"24bpp-pixeldata-cropped.bmp",
"_",
"image",
"gen_platf",
"testimgari.jpg",
"_",
"image",
"gen_platf",
"rle8-height-negative.bmp",
"_",
"image",
"gen_platf",
"rle4-height-negative.bmp",
"_",
"image",
"gen_platf",
"error",
"_",
"image",
"_",
"interlaced1.png",
"_",
"image",
"_",
"interlaced2.png",
"_",
"image",
"_",
"interlaced3.png",
"_",
"image",
"_",
".arw",
"_",
"image",
"_",
".cr2",
"_",
"image",
"_",
".dng",
"_",
"image",
"_",
".nef",
"_",
"image",
"_",
".nrw",
"_",
"image",
"_",
".orf",
"_",
"image",
"_",
".raf",
"_",
"image",
"_",
".rw2",
"_",
"image",
"_",
".pef",
"_",
"image",
"_",
".srw",
"_",
"image",
"_",
".ARW",
"_",
"image",
"_",
".CR2",
"_",
"image",
"_",
".DNG",
"_",
"image",
"_",
".NEF",
"_",
"image",
"_",
".NRW",
"_",
"image",
"_",
".ORF",
"_",
"image",
"_",
".RAF",
"_",
"image",
"_",
".RW2",
"_",
"image",
"_",
".PEF",
"_",
"image",
"_",
".SRW",
"--nonativeFonts",
"--verbose"
],
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>;RECIPE_REPO[depot_tools]"
},
"name": "dm"
},
{
"name": "$result"
}
]

View File

@ -288,6 +288,11 @@ def dm_flags(api, bot):
configs = [c for c in configs if c == 'gl' or c == 'gles']
args.extend(['--pr', 'ccpr', '--cc', 'true', '--cachePathMasks', 'false'])
# Test non-nvpr on NVIDIA.
if 'NonNVPR' in bot:
configs = ['gl', 'glmsaa4']
args.extend(['--pr', '~nvpr'])
# DDL is a GPU-only feature
if 'DDL1' in bot:
# This bot generates gl and vk comparison images for the large skps
@ -1034,6 +1039,7 @@ TEST_BUILDERS = [
'Test-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3',
'Test-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Lottie',
'Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-BonusConfigs',
'Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR',
('Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All'
'-ReleaseAndAbandonGpuContext'),
'Test-Win10-Clang-NUC5i7RYH-CPU-AVX2-x86_64-Debug-All-NativeFonts_GDI',

View File

@ -3009,6 +3009,11 @@
"Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-BonusConfigs"
]
},
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR": {
"tasks": [
"Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR"
]
},
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan": {
"tasks": [
"Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan"
@ -70975,6 +70980,122 @@
"test"
]
},
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR": {
"caches": [
{
"name": "vpython",
"path": "cache/vpython"
}
],
"cipd_packages": [
{
"name": "infra/tools/luci/kitchen/${platform}",
"path": ".",
"version": "git_revision:d8f38ca9494b5af249942631f9cee45927f6b4bc"
},
{
"name": "infra/tools/luci-auth/${platform}",
"path": "cipd_bin_packages",
"version": "git_revision:2c805f1c716f6c5ad2126b27ec88b8585a09481e"
},
{
"name": "infra/tools/luci/vpython/${platform}",
"path": "cipd_bin_packages",
"version": "git_revision:f96db4b66034c859090be3c47eb38227277f228b"
},
{
"name": "infra/python/cpython/${platform}",
"path": "cipd_bin_packages",
"version": "version:2.7.15.chromium14"
},
{
"name": "skia/bots/skimage",
"path": "skimage",
"version": "version:39"
},
{
"name": "skia/bots/skp",
"path": "skp",
"version": "version:192"
},
{
"name": "skia/bots/svg",
"path": "svg",
"version": "version:9"
}
],
"command": [
"./kitchen${EXECUTABLE_SUFFIX}",
"cook",
"-checkout-dir",
"recipe_bundle",
"-mode",
"swarming",
"-luci-system-account",
"system",
"-cache-dir",
"cache",
"-temp-dir",
"tmp",
"-known-gerrit-host",
"android.googlesource.com",
"-known-gerrit-host",
"boringssl.googlesource.com",
"-known-gerrit-host",
"chromium.googlesource.com",
"-known-gerrit-host",
"dart.googlesource.com",
"-known-gerrit-host",
"fuchsia.googlesource.com",
"-known-gerrit-host",
"go.googlesource.com",
"-known-gerrit-host",
"llvm.googlesource.com",
"-known-gerrit-host",
"skia.googlesource.com",
"-known-gerrit-host",
"webrtc.googlesource.com",
"-output-result-json",
"${ISOLATED_OUTDIR}/build_result_filename",
"-workdir",
".",
"-recipe",
"test",
"-properties",
"{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR\",\"gold_hashes_url\":\"https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt\",\"patch_issue\":\"<(ISSUE)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
"-logdog-annotation-url",
"logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
],
"dependencies": [
"Housekeeper-PerCommit-BundleRecipes",
"Build-Win-Clang-x86_64-Debug"
],
"dimensions": [
"gpu:10de:1cb3-25.21.14.1678",
"os:Windows-10-16299.309",
"pool:Skia"
],
"env_prefixes": {
"PATH": [
"cipd_bin_packages",
"cipd_bin_packages/bin"
],
"VPYTHON_VIRTUALENV_ROOT": [
"cache/vpython"
]
},
"execution_timeout_ns": 14400000000000,
"expiration_ns": 72000000000000,
"extra_tags": {
"log_location": "logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
},
"io_timeout_ns": 14400000000000,
"isolate": "test_skia_bundled.isolate",
"max_attempts": 2,
"outputs": [
"test"
]
},
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan": {
"caches": [
{
@ -112575,6 +112696,111 @@
"max_attempts": 2,
"service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com"
},
"Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR": {
"caches": [
{
"name": "vpython",
"path": "cache/vpython"
}
],
"cipd_packages": [
{
"name": "infra/tools/luci/kitchen/${platform}",
"path": ".",
"version": "git_revision:d8f38ca9494b5af249942631f9cee45927f6b4bc"
},
{
"name": "infra/tools/luci-auth/${platform}",
"path": "cipd_bin_packages",
"version": "git_revision:2c805f1c716f6c5ad2126b27ec88b8585a09481e"
},
{
"name": "infra/tools/luci/vpython/${platform}",
"path": "cipd_bin_packages",
"version": "git_revision:f96db4b66034c859090be3c47eb38227277f228b"
},
{
"name": "infra/python/cpython/${platform}",
"path": "cipd_bin_packages",
"version": "version:2.7.15.chromium14"
},
{
"name": "infra/gsutil",
"path": "cipd_bin_packages",
"version": "version:4.28"
}
],
"command": [
"./kitchen${EXECUTABLE_SUFFIX}",
"cook",
"-checkout-dir",
"recipe_bundle",
"-mode",
"swarming",
"-luci-system-account",
"system",
"-cache-dir",
"cache",
"-temp-dir",
"tmp",
"-known-gerrit-host",
"android.googlesource.com",
"-known-gerrit-host",
"boringssl.googlesource.com",
"-known-gerrit-host",
"chromium.googlesource.com",
"-known-gerrit-host",
"dart.googlesource.com",
"-known-gerrit-host",
"fuchsia.googlesource.com",
"-known-gerrit-host",
"go.googlesource.com",
"-known-gerrit-host",
"llvm.googlesource.com",
"-known-gerrit-host",
"skia.googlesource.com",
"-known-gerrit-host",
"webrtc.googlesource.com",
"-output-result-json",
"${ISOLATED_OUTDIR}/build_result_filename",
"-workdir",
".",
"-recipe",
"upload_dm_results",
"-properties",
"{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR\",\"gs_bucket\":\"skia-infra-gm\",\"patch_issue\":\"<(ISSUE)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"output_ignored\",\"task_id\":\"<(TASK_ID)\"}",
"-logdog-annotation-url",
"logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
],
"dependencies": [
"Housekeeper-PerCommit-BundleRecipes",
"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR"
],
"dimensions": [
"cpu:x86-64-Haswell_GCE",
"gpu:none",
"machine_type:n1-highmem-2",
"os:Debian-9.8",
"pool:Skia"
],
"env_prefixes": {
"PATH": [
"cipd_bin_packages",
"cipd_bin_packages/bin"
],
"VPYTHON_VIRTUALENV_ROOT": [
"cache/vpython"
]
},
"execution_timeout_ns": 3600000000000,
"extra_tags": {
"log_location": "logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
},
"io_timeout_ns": 3600000000000,
"isolate": "swarm_recipe.isolate",
"max_attempts": 2,
"service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com"
},
"Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan": {
"caches": [
{

View File

@ -30,18 +30,6 @@ GrPathRendererChain::GrPathRendererChain(GrRecordingContext* context, const Opti
if (options.fGpuPathRenderers & GpuPathRenderers::kDashLine) {
fChain.push_back(sk_make_sp<GrDashLinePathRenderer>());
}
if (options.fGpuPathRenderers & GpuPathRenderers::kStencilAndCover) {
auto direct = context->priv().asDirectContext();
if (direct) {
auto resourceProvider = direct->priv().resourceProvider();
sk_sp<GrPathRenderer> pr(
GrStencilAndCoverPathRenderer::Create(resourceProvider, caps));
if (pr) {
fChain.push_back(std::move(pr));
}
}
}
if (options.fGpuPathRenderers & GpuPathRenderers::kAAConvex) {
fChain.push_back(sk_make_sp<GrAAConvexPathRenderer>());
}
@ -66,6 +54,18 @@ GrPathRendererChain::GrPathRendererChain(GrRecordingContext* context, const Opti
context->priv().addOnFlushCallbackObject(spr.get());
fChain.push_back(std::move(spr));
}
if (options.fGpuPathRenderers & GpuPathRenderers::kStencilAndCover) {
auto direct = context->priv().asDirectContext();
if (direct) {
auto resourceProvider = direct->priv().resourceProvider();
sk_sp<GrPathRenderer> pr(
GrStencilAndCoverPathRenderer::Create(resourceProvider, caps));
if (pr) {
fChain.push_back(std::move(pr));
}
}
}
if (options.fGpuPathRenderers & GpuPathRenderers::kTessellating) {
fChain.push_back(sk_make_sp<GrTessellatingPathRenderer>());
}

View File

@ -333,11 +333,6 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
GrShaderCaps* shaderCaps = fShaderCaps.get();
shaderCaps->fPathRenderingSupport = this->hasPathRenderingSupport(ctxInfo, gli);
#if GR_TEST_UTILS
if (contextOptions.fSuppressPathRendering) {
shaderCaps->fPathRenderingSupport = false;
}
#endif
// Enable supported shader-related caps
if (GR_IS_GR_GL(standard)) {

View File

@ -15,38 +15,6 @@
using namespace sk_gpu_test;
DEF_GPUTEST(GrContextFactory_NVPRContextOptionHasPathRenderingSupport, reporter, options) {
// Test that if NVPR is requested, the context always has path rendering
// or the context creation fails.
for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) {
GrContextFactory testFactory(options);
// Test that if NVPR is possible, caps are in sync.
GrContextFactory::ContextType ctxType = static_cast<GrContextFactory::ContextType>(i);
GrContext* context = testFactory.get(ctxType,
GrContextFactory::ContextOverrides::kRequireNVPRSupport);
if (!context) {
continue;
}
REPORTER_ASSERT(reporter,
context->priv().caps()->shaderCaps()->pathRenderingSupport());
}
}
DEF_GPUTEST(GrContextFactory_NoPathRenderingIfNVPRDisabled, reporter, options) {
// Test that if NVPR is explicitly disabled, the context has no path rendering support.
for (int i = 0; i <= GrContextFactory::kLastContextType; ++i) {
GrContextFactory testFactory(options);
GrContextFactory::ContextType ctxType = (GrContextFactory::ContextType)i;
GrContext* context =
testFactory.get(ctxType, GrContextFactory::ContextOverrides::kDisableNVPR);
if (context) {
REPORTER_ASSERT(reporter,
!context->priv().caps()->shaderCaps()->pathRenderingSupport());
}
}
}
DEF_GPUTEST(GrContextFactory_abandon, reporter, options) {
for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) {
GrContextFactory testFactory(options);

View File

@ -203,8 +203,7 @@ DEF_GPUTEST(SurfaceSemaphores, reporter, options) {
}
}
sk_gpu_test::GrContextFactory factory(options);
sk_gpu_test::ContextInfo ctxInfo = factory.getContextInfo(
contextType, sk_gpu_test::GrContextFactory::ContextOverrides::kDisableNVPR);
sk_gpu_test::ContextInfo ctxInfo = factory.getContextInfo(contextType);
if (!sk_gpu_test::GrContextFactory::IsRenderingContext(contextType)) {
continue;
}

View File

@ -274,8 +274,7 @@ DEF_GPUTEST(VkDrawableImportTest, reporter, options) {
continue;
}
sk_gpu_test::GrContextFactory factory(options);
sk_gpu_test::ContextInfo ctxInfo = factory.getContextInfo(
contextType, sk_gpu_test::GrContextFactory::ContextOverrides::kDisableNVPR);
sk_gpu_test::ContextInfo ctxInfo = factory.getContextInfo(contextType);
skiatest::ReporterContext ctx(
reporter, SkString(sk_gpu_test::GrContextFactory::ContextTypeName(contextType)));
if (ctxInfo.grContext()) {

View File

@ -40,9 +40,6 @@ static const struct {
{ "glmsaa4", "gpu", "api=gl,samples=4" },
{ "glmsaa8" , "gpu", "api=gl,samples=8" },
{ "glesmsaa4", "gpu", "api=gles,samples=4" },
{ "glnvpr4", "gpu", "api=gl,nvpr=true,samples=4" },
{ "glnvpr8" , "gpu", "api=gl,nvpr=true,samples=8" },
{ "glesnvpr4", "gpu", "api=gles,nvpr=true,samples=4" },
{ "glbetex", "gpu", "api=gl,surf=betex" },
{ "glesbetex", "gpu", "api=gles,surf=betex" },
{ "glbert", "gpu", "api=gl,surf=bert" },
@ -126,7 +123,7 @@ static const char configExtendedHelp[] =
"Extended form: 'backend(option=value,...)'\n\n"
"Possible backends and options:\n"
"\n"
"gpu[api=string,color=string,dit=bool,nvpr=bool,inst=bool,samples=int]\n"
"gpu[api=string,color=string,dit=bool,samples=int]\n"
"\tapi\ttype: string\trequired\n"
"\t Select graphics API to use with gpu backend.\n"
"\t Options:\n"
@ -161,8 +158,6 @@ static const char configExtendedHelp[] =
"\t\tf16\t\t\tLinearly blended 16-bit floating point.\n"
"\tdit\ttype: bool\tdefault: false.\n"
"\t Use device independent text.\n"
"\tnvpr\ttype: bool\tdefault: false.\n"
"\t Use NV_path_rendering OpenGL and OpenGL ES extension.\n"
"\tsamples\ttype: int\tdefault: 0.\n"
"\t Use multisampling with N samples.\n"
"\tstencils\ttype: bool\tdefault: true.\n"
@ -431,7 +426,6 @@ private:
SkCommandLineConfigGpu::SkCommandLineConfigGpu(const SkString& tag,
const SkTArray<SkString>& viaParts,
ContextType contextType,
bool useNVPR,
bool useDIText,
int samples,
SkColorType colorType,
@ -452,13 +446,6 @@ SkCommandLineConfigGpu::SkCommandLineConfigGpu(const SkString& tag,
, fTestThreading(testThreading)
, fTestPersistentCache(testPersistentCache)
, fSurfType(surfType) {
if (useNVPR) {
fContextOverrides |= ContextOverrides::kRequireNVPRSupport;
} else {
// We don't disable NVPR for instanced configs. Otherwise the caps wouldn't use mixed
// samples and we couldn't test the mixed samples backend for simple shapes.
fContextOverrides |= ContextOverrides::kDisableNVPR;
}
if (!useStencilBuffers) {
fContextOverrides |= ContextOverrides::kAvoidStencilBuffers;
}
@ -469,7 +456,6 @@ SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString&
const SkString& options) {
// Defaults for GPU backend.
SkCommandLineConfigGpu::ContextType contextType = GrContextFactory::kGL_ContextType;
bool useNVPR = false;
bool useDIText = false;
int samples = 1;
SkColorType colorType = kRGBA_8888_SkColorType;
@ -488,7 +474,6 @@ SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString&
bool validOptions =
extendedOptions.get_option_gpu_api("api", &contextType, false) &&
extendedOptions.get_option_bool("nvpr", &useNVPR) &&
extendedOptions.get_option_bool("dit", &useDIText) &&
extendedOptions.get_option_int("samples", &samples) &&
extendedOptions.get_option_gpu_color("color", &colorType, &alphaType, &colorSpace) &&
@ -505,7 +490,6 @@ SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString&
return new SkCommandLineConfigGpu(tag,
vias,
contextType,
useNVPR,
useDIText,
samples,
colorType,

View File

@ -54,7 +54,6 @@ public:
SkCommandLineConfigGpu(const SkString& tag,
const SkTArray<SkString>& viaParts,
ContextType contextType,
bool useNVPR,
bool useDIText,
int samples,
SkColorType colorType,
@ -68,11 +67,6 @@ public:
const SkCommandLineConfigGpu* asConfigGpu() const override { return this; }
ContextType getContextType() const { return fContextType; }
ContextOverrides getContextOverrides() const { return fContextOverrides; }
bool getUseNVPR() const {
SkASSERT(!(fContextOverrides & ContextOverrides::kRequireNVPRSupport) ||
!(fContextOverrides & ContextOverrides::kDisableNVPR));
return fContextOverrides & ContextOverrides::kRequireNVPRSupport;
}
bool getUseDIText() const { return fUseDIText; }
int getSamples() const { return fSamples; }
SkColorType getColorType() const { return fColorType; }

View File

@ -48,7 +48,6 @@ static DEFINE_string(tf , "srgb", "The transfer function for any raster bac
static DEFINE_bool (legacy, false, "Use a null SkColorSpace instead of --gamut and --tf?");
static DEFINE_int (samples , 0, "Samples per pixel in GPU backends.");
static DEFINE_bool (nvpr , false, "Use NV_path_rendering in GPU backends?");
static DEFINE_bool (stencils, true, "If false, avoid stencil buffers in GPU backends.");
static DEFINE_bool (dit , false, "Use device-independent text in GPU backends.");
static DEFINE_string(surf , "default", "Backing store for GPU backend surfaces.");
@ -256,8 +255,7 @@ static sk_sp<SkImage> draw_with_gpu(std::function<bool(SkCanvas*)> draw,
return nullptr;
}
auto overrides = FLAGS_nvpr ? GrContextFactory::ContextOverrides::kRequireNVPRSupport
: GrContextFactory::ContextOverrides::kDisableNVPR;
auto overrides = GrContextFactory::ContextOverrides::kNone;
if (!FLAGS_stencils) { overrides |= GrContextFactory::ContextOverrides::kAvoidStencilBuffers; }
GrContext* context = factory->getContextInfo(api, overrides)

View File

@ -201,9 +201,6 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv
VkTestContext* vkSharedContext = masterContext
? static_cast<VkTestContext*>(masterContext->fTestContext) : nullptr;
SkASSERT(kVulkan_ContextType == type);
if (ContextOverrides::kRequireNVPRSupport & overrides) {
return ContextInfo();
}
testCtx.reset(CreatePlatformVkTestContext(vkSharedContext));
if (!testCtx) {
return ContextInfo();
@ -236,9 +233,6 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv
case GrBackendApi::kMock: {
TestContext* sharedContext = masterContext ? masterContext->fTestContext : nullptr;
SkASSERT(kMock_ContextType == type);
if (ContextOverrides::kRequireNVPRSupport & overrides) {
return ContextInfo();
}
testCtx.reset(CreateMockTestContext(sharedContext));
if (!testCtx) {
return ContextInfo();
@ -251,9 +245,6 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv
SkASSERT(testCtx && testCtx->backend() == backend);
GrContextOptions grOptions = fGlobalOptions;
if (ContextOverrides::kDisableNVPR & overrides) {
grOptions.fSuppressPathRendering = true;
}
if (ContextOverrides::kAvoidStencilBuffers & overrides) {
grOptions.fAvoidStencilBuffers = true;
}
@ -265,11 +256,6 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv
if (!grCtx.get()) {
return ContextInfo();
}
if (ContextOverrides::kRequireNVPRSupport & overrides) {
if (!grCtx->priv().caps()->shaderCaps()->pathRenderingSupport()) {
return ContextInfo();
}
}
// We must always add new contexts by pushing to the back so that when we delete them we delete
// them in reverse order in which they were made.

View File

@ -53,10 +53,7 @@ public:
*/
enum class ContextOverrides {
kNone = 0x0,
kDisableNVPR = 0x1,
kAvoidStencilBuffers = 0x2,
kRequireNVPRSupport = 0x4,
kAvoidStencilBuffers = 0x1,
};
static bool IsRenderingContext(ContextType type) {
@ -122,8 +119,7 @@ public:
/**
* Get a context initialized with a type of GL context. It also makes the GL context current.
*/
ContextInfo getContextInfo(ContextType type,
ContextOverrides overrides = ContextOverrides::kNone);
ContextInfo getContextInfo(ContextType type, ContextOverrides = ContextOverrides::kNone);
/**
* Get a context in the same share group as the passed in GrContext, with the same type and

View File

@ -152,7 +152,6 @@ static std::unique_ptr<sk_gpu_test::TestContext> make_test_context(SkQP::SkiaBac
static GrContextOptions context_options(skiagm::GM* gm = nullptr) {
GrContextOptions grContextOptions;
grContextOptions.fAllowPathMaskCaching = true;
grContextOptions.fSuppressPathRendering = true;
grContextOptions.fDisableDriverCorrectnessWorkarounds = true;
if (gm) {
gm->modifyGrContextOptions(&grContextOptions);