From 11abd8d6cb2887bf66711863fb2dfe47da86d979 Mon Sep 17 00:00:00 2001 From: bsalomon Date: Fri, 14 Oct 2016 08:13:48 -0700 Subject: [PATCH] Explicit control in tools of ANGLE frontend and backend Update the ANGLE test GL context, GrContextFactory, and config parsing to allow explicit control of ANGLE front/backend. This will allow us to explicitly test ES2 vs ES3 interfaces to ANGLE as well as D3D9, D3D11, and OpenGL backends. Also makes the angle api types valid in all builds (but will just fail when SK_ANGLE=1 or not on windows for the d3d backends). BUG=skia:5804 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2381033002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Win-MSVC-ShuttleC-GPU-GTX960-x86_64-Debug-ANGLE-Trybot Review-Url: https://codereview.chromium.org/2381033002 --- ...-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json | 2 +- ...exus6-GPU-Adreno420-arm-Release-GN_Android.json | 2 +- ...g-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json | 2 +- ...sPlayer-GPU-PowerVR-x86-Release-GN_Android.json | 2 +- ...Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json | 1 - ...buntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json | 1 - ...ttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json | 2 - ...eA-GPU-GTX550Ti-x86_64-Release-VisualBench.json | 1 - .../Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json | 1 - .../Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json | 1 - ...SVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json | 130 +++++++++++++++++++++ ...-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json | 1 - ...Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json | 1 - .../swarm_perf.expected/big_issue_number.json | 1 - .../recipe_with_gerrit_patch.json | 2 - infra/bots/recipes/swarm_perf.py | 6 +- ...SVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json | 2 +- infra/bots/recipes/swarm_test.py | 2 +- tests/FloatingPointTextureTest.cpp | 17 ++- tests/ResourceCacheTest.cpp | 12 +- tests/Test.h | 1 - tests/TestConfigParsing.cpp | 63 ++++------ tools/flags/SkCommonFlagsConfig.cpp | 126 ++++++++++---------- tools/flags/SkCommonFlagsConfig.h | 2 +- tools/gpu/GrContextFactory.cpp | 23 +++- tools/gpu/GrContextFactory.h | 44 ++----- tools/gpu/gl/angle/GLTestContext_angle.cpp | 93 ++++++--------- tools/gpu/gl/angle/GLTestContext_angle.h | 22 ++-- 28 files changed, 329 insertions(+), 234 deletions(-) create mode 100644 infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json b/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json index a202f25..a4231d1 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json @@ -363,7 +363,7 @@ "python", "-u", "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", - "set -x; /data/local/tmp/nanobench --undefok -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 --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 gpu nonrendering angle hwui f16 srgb msaa4 nvpr4 nvprdit4 --match ~blurroundrect ~patch_grid ~desk_carsvg ~keymobi_shop_mobileweb_ebay_com.skp ~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; echo $? >/data/local/tmp/rc", + "set -x; /data/local/tmp/nanobench --undefok -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 --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 gpu nonrendering hwui f16 srgb msaa4 nvpr4 nvprdit4 --match ~blurroundrect ~patch_grid ~desk_carsvg ~keymobi_shop_mobileweb_ebay_com.skp ~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; echo $? >/data/local/tmp/rc", "[SLAVE_BUILD]/tmp/nanobench.sh" ], "name": "write nanobench.sh" diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json b/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json index 2adaec6..6261e8a 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json @@ -385,7 +385,7 @@ "python", "-u", "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", - "set -x; /data/local/tmp/nanobench --undefok -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 --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 gpu nonrendering angle hwui f16 srgb msaa4 nvpr4 nvprdit4 esinst --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 build_number 5 --key arch arm compiler Clang cpu_or_gpu GPU cpu_or_gpu_value Adreno420 extra_config GN_Android model Nexus6 os Android; echo $? >/data/local/tmp/rc", + "set -x; /data/local/tmp/nanobench --undefok -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 --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 gpu nonrendering hwui f16 srgb msaa4 nvpr4 nvprdit4 esinst --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 build_number 5 --key arch arm compiler Clang cpu_or_gpu GPU cpu_or_gpu_value Adreno420 extra_config GN_Android model Nexus6 os Android; echo $? >/data/local/tmp/rc", "[SLAVE_BUILD]/tmp/nanobench.sh" ], "name": "write nanobench.sh" diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json b/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json index 10db41e..2bc3f73 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json @@ -385,7 +385,7 @@ "python", "-u", "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", - "set -x; /data/local/tmp/nanobench --undefok -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 --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 gpu nonrendering angle hwui f16 srgb msaa4 nvpr4 nvprdit4 --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 build_number 5 --key arch arm compiler Clang cpu_or_gpu GPU cpu_or_gpu_value Tegra3 extra_config GN_Android model Nexus7 os Android; echo $? >/data/local/tmp/rc", + "set -x; /data/local/tmp/nanobench --undefok -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 --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 gpu nonrendering hwui f16 srgb msaa4 nvpr4 nvprdit4 --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 build_number 5 --key arch arm compiler Clang cpu_or_gpu GPU cpu_or_gpu_value Tegra3 extra_config GN_Android model Nexus7 os Android; echo $? >/data/local/tmp/rc", "[SLAVE_BUILD]/tmp/nanobench.sh" ], "name": "write nanobench.sh" diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json b/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json index 7014fd8..dc78625 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json @@ -385,7 +385,7 @@ "python", "-u", "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", - "set -x; /data/local/tmp/nanobench --undefok -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 --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 gpu nonrendering angle hwui f16 srgb --match ~blurroundrect ~patch_grid ~desk_carsvg ~desk_unicodetable ~interlaced1.png ~interlaced2.png ~interlaced3.png ~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 build_number 5 --key arch x86 compiler Clang cpu_or_gpu GPU cpu_or_gpu_value PowerVR extra_config GN_Android model NexusPlayer os Android; echo $? >/data/local/tmp/rc", + "set -x; /data/local/tmp/nanobench --undefok -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 --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 gpu nonrendering hwui f16 srgb --match ~blurroundrect ~patch_grid ~desk_carsvg ~desk_unicodetable ~interlaced1.png ~interlaced2.png ~interlaced3.png ~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 build_number 5 --key arch x86 compiler Clang cpu_or_gpu GPU cpu_or_gpu_value PowerVR extra_config GN_Android model NexusPlayer os Android; echo $? >/data/local/tmp/rc", "[SLAVE_BUILD]/tmp/nanobench.sh" ], "name": "write nanobench.sh" diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json b/infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json index da5b703..57ce240 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json @@ -124,7 +124,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json b/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json index dacd2ee..389e9a2 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json @@ -125,7 +125,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json b/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json index 9528ea9..04e3c55 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json @@ -88,7 +88,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", @@ -161,7 +160,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-VisualBench.json b/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-VisualBench.json index 0f845c7..7c481a9 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-VisualBench.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-VisualBench.json @@ -128,7 +128,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json b/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json index ee149ce..c1cd2be 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json @@ -80,7 +80,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json b/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json index 4ebff1a..853ed89 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json @@ -124,7 +124,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json b/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json new file mode 100644 index 0000000..a460ca5 --- /dev/null +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json @@ -0,0 +1,130 @@ +[ + { + "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": [ + "[SLAVE_BUILD]\\out\\Debug_x64\\nanobench", + "--undefok", + "-i", + "[SLAVE_BUILD]\\skia\\resources", + "--skps", + "[SLAVE_BUILD]\\skp", + "--images", + "[SLAVE_BUILD]\\skimage\\nanobench", + "--svgs", + "[SLAVE_BUILD]\\svg", + "--nocpu", + "--pre_log", + "--images", + "--gpuStatsDump", + "true", + "--scales", + "1.0", + "1.1", + "--config", + "8888", + "gpu", + "nonrendering", + "hwui", + "f16", + "srgb", + "msaa16", + "nvpr16", + "nvprdit16", + "angle_gl_es2", + "angle_d3d11_es2", + "--match", + "~interlaced1.png", + "~interlaced2.png", + "~interlaced3.png", + "~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" + ], + "env": { + "BUILDTYPE": "Debug_x64", + "CHROME_HEADLESS": "1", + "SKIA_OUT": "[SLAVE_BUILD]\\out" + }, + "name": "nanobench" + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +] \ No newline at end of file diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json b/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json index 37ac968..ed47912 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json @@ -127,7 +127,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json b/infra/bots/recipes/swarm_perf.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json index f92bd87..a8ea9cb 100644 --- a/infra/bots/recipes/swarm_perf.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json +++ b/infra/bots/recipes/swarm_perf.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json @@ -355,7 +355,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/big_issue_number.json b/infra/bots/recipes/swarm_perf.expected/big_issue_number.json index ab68401..5efb99f 100644 --- a/infra/bots/recipes/swarm_perf.expected/big_issue_number.json +++ b/infra/bots/recipes/swarm_perf.expected/big_issue_number.json @@ -127,7 +127,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.expected/recipe_with_gerrit_patch.json b/infra/bots/recipes/swarm_perf.expected/recipe_with_gerrit_patch.json index b3f372e..62ab941 100644 --- a/infra/bots/recipes/swarm_perf.expected/recipe_with_gerrit_patch.json +++ b/infra/bots/recipes/swarm_perf.expected/recipe_with_gerrit_patch.json @@ -110,7 +110,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", @@ -183,7 +182,6 @@ "8888", "gpu", "nonrendering", - "angle", "hwui", "f16", "srgb", diff --git a/infra/bots/recipes/swarm_perf.py b/infra/bots/recipes/swarm_perf.py index b324917..8b4b704 100644 --- a/infra/bots/recipes/swarm_perf.py +++ b/infra/bots/recipes/swarm_perf.py @@ -38,6 +38,7 @@ TEST_BUILDERS = { 'Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug', 'Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release', 'Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot', + 'Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE', 'Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug', ], }, @@ -62,7 +63,7 @@ def nanobench_flags(bot): if 'iOS' in bot: args.extend(['--skps', 'ignore_skps']) - config = ['8888', 'gpu', 'nonrendering', 'angle', 'hwui' ] + config = ['8888', 'gpu', 'nonrendering', 'hwui' ] if 'AndroidOne' not in bot: config += [ 'f16', 'srgb' ] if '-GCE-' in bot: @@ -95,6 +96,9 @@ def nanobench_flags(bot): if 'Vulkan' in bot: config = ['vk'] + if 'ANGLE' in bot: + config.extend(['angle_gl_es2', 'angle_d3d11_es2']) + args.append('--config') args.extend(config) diff --git a/infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json b/infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json index cc82d1a..6fb2e1a 100644 --- a/infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json +++ b/infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json @@ -228,7 +228,7 @@ "serialize-8888", "tiles_rt-8888", "pic-8888", - "angle", + "angle_d3d11_es2", "--src", "tests", "gm", diff --git a/infra/bots/recipes/swarm_test.py b/infra/bots/recipes/swarm_test.py index 657c4eb..827f034 100644 --- a/infra/bots/recipes/swarm_test.py +++ b/infra/bots/recipes/swarm_test.py @@ -115,7 +115,7 @@ def dm_flags(bot): ['serialize', 'tiles_rt', 'pic']) if 'ANGLE' in bot: - configs.append('angle') + configs.append('angle_d3d11_es2') # We want to run gpudft on atleast the mali 400 if 'GalaxyS3' in bot: diff --git a/tests/FloatingPointTextureTest.cpp b/tests/FloatingPointTextureTest.cpp index 9f54366..2e79c35 100644 --- a/tests/FloatingPointTextureTest.cpp +++ b/tests/FloatingPointTextureTest.cpp @@ -69,7 +69,18 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(FloatingPointTextureTest, reporter, ctxInfo) static const int HALF_ALPHA_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 1 /*alpha-only*/; static const SkHalf kMaxIntegerRepresentableInHalfFloatingPoint = 0x6800; // 2 ^ 11 -DEF_GPUTEST_FOR_RENDERING_CONTEXTS(HalfFloatAlphaTextureTest, reporter, ctxInfo) { +// The half float tests currently fail on ES3 ANGLE. +static bool is_rendering_and_not_angle_es3(sk_gpu_test::GrContextFactory::ContextType type) { + if (type == sk_gpu_test::GrContextFactory::kANGLE_D3D11_ES3_ContextType || + type == sk_gpu_test::GrContextFactory::kANGLE_GL_ES3_ContextType) { + return false; + } + return sk_gpu_test::GrContextFactory::IsRenderingContext(type); +} + +DEF_GPUTEST_FOR_CONTEXTS(HalfFloatAlphaTextureTest, + &is_rendering_and_not_angle_es3, + reporter, ctxInfo) { runFPTest(reporter, ctxInfo.grContext(), SK_HalfMin, SK_HalfMax, SK_HalfEpsilon, kMaxIntegerRepresentableInHalfFloatingPoint, HALF_ALPHA_CONTROL_ARRAY_SIZE, kAlpha_half_GrPixelConfig); @@ -77,7 +88,9 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(HalfFloatAlphaTextureTest, reporter, ctxInfo) static const int HALF_RGBA_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 4 /*RGBA*/; -DEF_GPUTEST_FOR_RENDERING_CONTEXTS(HalfFloatRGBATextureTest, reporter, ctxInfo) { +DEF_GPUTEST_FOR_CONTEXTS(HalfFloatRGBATextureTest, + &is_rendering_and_not_angle_es3, + reporter, ctxInfo) { runFPTest(reporter, ctxInfo.grContext(), SK_HalfMin, SK_HalfMax, SK_HalfEpsilon, kMaxIntegerRepresentableInHalfFloatingPoint, HALF_RGBA_CONTROL_ARRAY_SIZE, kRGBA_half_GrPixelConfig); diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp index d73ad64..b6f13e6 100644 --- a/tests/ResourceCacheTest.cpp +++ b/tests/ResourceCacheTest.cpp @@ -80,7 +80,17 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ResourceCacheCache, reporter, ctxInfo) { context->setResourceCacheLimits(oldMaxNum, oldMaxBytes); } -DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ResourceCacheStencilBuffers, reporter, ctxInfo) { +static bool is_rendering_and_not_angle_es3(sk_gpu_test::GrContextFactory::ContextType type) { + if (type == sk_gpu_test::GrContextFactory::kANGLE_D3D11_ES3_ContextType || + type == sk_gpu_test::GrContextFactory::kANGLE_GL_ES3_ContextType) { + return false; + } + return sk_gpu_test::GrContextFactory::IsRenderingContext(type); +} + +// This currently fails on ES3 ANGLE contexts +DEF_GPUTEST_FOR_CONTEXTS(ResourceCacheStencilBuffers, &is_rendering_and_not_angle_es3, reporter, + ctxInfo) { GrContext* context = ctxInfo.grContext(); GrSurfaceDesc smallDesc; smallDesc.fFlags = kRenderTarget_GrSurfaceFlag; diff --git a/tests/Test.h b/tests/Test.h index 5a3339d..ea10cdf 100644 --- a/tests/Test.h +++ b/tests/Test.h @@ -92,7 +92,6 @@ extern bool IsGLContextType(GrContextFactoryContextType); extern bool IsVulkanContextType(GrContextFactoryContextType); extern bool IsRenderingGLContextType(GrContextFactoryContextType); extern bool IsNullGLContextType(GrContextFactoryContextType); - void RunWithGPUTestContexts(GrContextTestFn*, GrContextTypeFilterFn*, Reporter*, sk_gpu_test::GrContextFactory*); diff --git a/tests/TestConfigParsing.cpp b/tests/TestConfigParsing.cpp index 8435b99..4d7e5ca 100644 --- a/tests/TestConfigParsing.cpp +++ b/tests/TestConfigParsing.cpp @@ -77,9 +77,9 @@ DEF_TEST(ParseConfigs_DefaultConfigs, reporter) { SkCommandLineFlags::StringArray config1 = make_string_array({ "565", "8888", "debug", "gpu", "gpudebug", "gpudft", "gpunull", "msaa16", "msaa4", "nonrendering", "null", "nullgpu", "nvpr16", "nvpr4", "nvprdit16", "nvprdit4", "pdf", "skp", - "svg", "xps", "angle", "angle-gl", "commandbuffer", "mesa", "hwui", "gpuf16", "gpusrgb", - "gl", "glnvpr4", "glnvprdit4", "glsrgb", "glmsaa4", "vk", "glinst", "glinst4", "glinstdit4", - "glinst16", "glinstdit16", "esinst", "esinst4", "esinstdit4", "glwide" + "svg", "xps", "angle_d3d11_es2", "angle_gl_es2", "commandbuffer", "mesa", "hwui", "gpuf16", + "gpusrgb", "gl", "glnvpr4", "glnvprdit4", "glsrgb", "glmsaa4", "vk", "glinst", "glinst4", + "glinstdit4", "glinst16", "glinstdit16", "esinst", "esinst4", "esinstdit4", "glwide" }); SkCommandLineConfigArray configs; @@ -167,18 +167,8 @@ DEF_TEST(ParseConfigs_DefaultConfigs, reporter) { REPORTER_ASSERT(reporter, configs[40]->asConfigGpu()->getUseInstanced()); REPORTER_ASSERT(reporter, configs[40]->asConfigGpu()->getUseDIText()); REPORTER_ASSERT(reporter, configs[40]->asConfigGpu()->getSamples() == 4); - -#if SK_ANGLE -#ifdef SK_BUILD_FOR_WIN REPORTER_ASSERT(reporter, configs[20]->asConfigGpu()); -#else - REPORTER_ASSERT(reporter, !configs[20]->asConfigGpu()); -#endif REPORTER_ASSERT(reporter, configs[21]->asConfigGpu()); -#else - REPORTER_ASSERT(reporter, !configs[20]->asConfigGpu()); - REPORTER_ASSERT(reporter, !configs[21]->asConfigGpu()); -#endif REPORTER_ASSERT(reporter, configs[22]->asConfigGpu()); #if SK_MESA REPORTER_ASSERT(reporter, configs[23]->asConfigGpu()); @@ -207,8 +197,8 @@ DEF_TEST(ParseConfigs_DefaultConfigs, reporter) { DEF_TEST(ParseConfigs_ExtendedGpuConfigsCorrect, reporter) { SkCommandLineFlags::StringArray config1 = make_string_array({ "gpu[nvpr=true,dit=false]", - "gpu[api=angle]", - "gpu[api=angle-gl]", + "gpu[api=angle_d3d9_es2]", + "gpu[api=angle_gl_es3]", "gpu[api=mesa,samples=77]", "gpu[dit=true,api=commandbuffer]", "gpu[]", @@ -229,19 +219,12 @@ DEF_TEST(ParseConfigs_ExtendedGpuConfigsCorrect, reporter) { REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getUseNVPR()); REPORTER_ASSERT(reporter, !configs[0]->asConfigGpu()->getUseDIText()); REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getSamples() == 0); -#if SK_ANGLE -#ifdef SK_BUILD_FOR_WIN REPORTER_ASSERT(reporter, configs[1]->asConfigGpu()->getContextType() == - GrContextFactory::kANGLE_ContextType); -#else - REPORTER_ASSERT(reporter, !configs[1]->asConfigGpu()); -#endif + GrContextFactory::kANGLE_D3D9_ES2_ContextType); + REPORTER_ASSERT(reporter, configs[1]->asConfigGpu()); REPORTER_ASSERT(reporter, configs[2]->asConfigGpu()->getContextType() == - GrContextFactory::kANGLE_GL_ContextType); -#else - REPORTER_ASSERT(reporter, !configs[1]->asConfigGpu()); - REPORTER_ASSERT(reporter, !configs[2]->asConfigGpu()); -#endif + GrContextFactory::kANGLE_GL_ES3_ContextType); + REPORTER_ASSERT(reporter, configs[2]->asConfigGpu()); #if SK_MESA REPORTER_ASSERT(reporter, configs[3]->asConfigGpu()->getContextType() == GrContextFactory::kMESA_ContextType); @@ -280,7 +263,7 @@ DEF_TEST(ParseConfigs_ExtendedGpuConfigsIncorrect, reporter) { SkCommandLineFlags::StringArray config1 = make_string_array({ "gpu[nvpr=1]", // Number as bool. "gpu[api=gl,]", // Trailing in comma. - "gpu[api=angle-glu]", // Unknown api. + "gpu[api=angle_glu]", // Unknown api. "gpu[api=,samples=0]", // Empty api. "gpu[samples=true]", // Value true as a number. "gpu[samples=0,samples=0]", // Duplicate option key. @@ -329,7 +312,7 @@ DEF_TEST(ParseConfigs_ViaParsing, reporter) { SkCommandLineFlags::StringArray config1 = make_string_array({ "a-b-c-8888", "zz-qq-gpu", - "a-angle-gl" + "a-angle_gl_es2" }); SkCommandLineConfigArray configs; @@ -340,12 +323,7 @@ DEF_TEST(ParseConfigs_ViaParsing, reporter) { } expectedConfigs[] = { {"8888", {"a", "b", "c"}}, {"gpu", {"zz", "qq", nullptr}}, -#if SK_ANGLE - { "gpu",{ "a", nullptr, nullptr } } // With SK_ANGLE, angle-gl becomes gpu(api=angle-gl) -#else - { "angle-gl",{ "a", nullptr, nullptr } } // The angle-gl tag is only tag that contains - // hyphen. -#endif + {"gpu", { "a", nullptr, nullptr }} }; for (int i = 0; i < config1.count(); ++i) { REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i])); @@ -364,8 +342,9 @@ DEF_TEST(ParseConfigs_ViaParsing, reporter) { DEF_TEST(ParseConfigs_ViaParsingExtendedForm, reporter) { SkCommandLineFlags::StringArray config1 = make_string_array({ "zz-qq-gpu[api=gles]", + "abc-nbc-cbs-gpu[api=angle_d3d9_es2,samples=1]", "a-gpu[samples=1", - "abc-def-angle-gl[samples=1]", + "abc-def-angle_gl_es2[samples=1]", }); SkCommandLineConfigArray configs; @@ -376,13 +355,16 @@ DEF_TEST(ParseConfigs_ViaParsingExtendedForm, reporter) { } expectedConfigs[] = { #if SK_SUPPORT_GPU {"gpu", {"zz", "qq", nullptr}}, + {"gpu", {"abc", "nbc", "cbs"}}, #else {"gpu[api=gles]", {"zz", "qq", nullptr}}, + {"gpu[api=angle_d3d9_es2,samples=1]", {"abc", "nbc", "cbs"}}, #endif - {"gpu[samples=1", {"a", nullptr, nullptr}}, // This is not extended form, but via still - // works as expected. - {"gl[samples=1]", {"abc", "def", "angle"}} // This is not extended form. Also - // angle-gl is not a "backend" in this case. + {"gpu[samples=1", {"a", nullptr, nullptr}}, // Missing bracket makes this is not extended + // form but via still works as expected. + {"angle_gl_es2[samples=1]", {"abc", "def", nullptr}} // This is not extended form. + // angle_gl_es2 is an api type not a + // backend. }; for (int i = 0; i < config1.count(); ++i) { REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i])); @@ -399,7 +381,8 @@ DEF_TEST(ParseConfigs_ViaParsingExtendedForm, reporter) { } #if SK_SUPPORT_GPU REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()); - REPORTER_ASSERT(reporter, !configs[1]->asConfigGpu()); + REPORTER_ASSERT(reporter, configs[1]->asConfigGpu()); REPORTER_ASSERT(reporter, !configs[2]->asConfigGpu()); + REPORTER_ASSERT(reporter, !configs[3]->asConfigGpu()); #endif } diff --git a/tools/flags/SkCommonFlagsConfig.cpp b/tools/flags/SkCommonFlagsConfig.cpp index 3fd8a97..0e91140 100644 --- a/tools/flags/SkCommonFlagsConfig.cpp +++ b/tools/flags/SkCommonFlagsConfig.cpp @@ -17,10 +17,8 @@ using sk_gpu_test::GrContextFactory; static const char defaultConfigs[] = "8888 gpu nonrendering" -#if SK_ANGLE -#ifdef SK_BUILD_FOR_WIN - " angle" -#endif +#if defined(SK_BUILD_FOR_WIN) + " angle_d3d11_es2" #endif #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK " hwui" @@ -33,50 +31,46 @@ static const struct { const char* options; } gPredefinedConfigs[] ={ #if SK_SUPPORT_GPU - { "gpu", "gpu", "" }, - { "gl", "gpu", "api=gl" }, - { "msaa4", "gpu", "samples=4" }, - { "glmsaa4", "gpu", "api=gl,samples=4" }, - { "msaa16", "gpu", "samples=16" }, - { "nvpr4", "gpu", "nvpr=true,samples=4" }, - { "glnvpr4", "gpu", "api=gl,nvpr=true,samples=4" }, - { "nvpr16", "gpu", "nvpr=true,samples=16" }, - { "nvprdit4", "gpu", "nvpr=true,samples=4,dit=true" }, - { "glnvprdit4", "gpu", "api=gl,nvpr=true,samples=4,dit=true" }, - { "nvprdit16", "gpu", "nvpr=true,samples=16,dit=true" }, - { "glinst", "gpu", "api=gl,inst=true" }, - { "glinst4", "gpu", "api=gl,inst=true,samples=4" }, - { "glinstdit4", "gpu", "api=gl,inst=true,samples=4,dit=true" }, - { "glinst16", "gpu", "api=gl,inst=true,samples=16" }, - { "glinstdit16", "gpu", "api=gl,inst=true,samples=16,dit=true" }, - { "esinst", "gpu", "api=gles,inst=true" }, - { "esinst4", "gpu", "api=gles,inst=true,samples=4" }, - { "esinstdit4", "gpu", "api=gles,inst=true,samples=4,dit=true" }, - { "gpuf16", "gpu", "color=f16" }, - { "gpusrgb", "gpu", "color=srgb" }, - { "glsrgb", "gpu", "api=gl,color=srgb" }, - { "glwide", "gpu", "api=gl,color=f16_wide" }, - { "gpudft", "gpu", "dit=true" }, - { "gpudebug", "gpu", "api=debug" }, - { "gpunull", "gpu", "api=null" }, - { "debug", "gpu", "api=debug" }, - { "nullgpu", "gpu", "api=null" } -#if SK_ANGLE -#ifdef SK_BUILD_FOR_WIN - ,{ "angle", "gpu", "api=angle" } -#endif - ,{ "angle-gl", "gpu", "api=angle-gl" } -#endif - ,{ "commandbuffer", "gpu", "api=commandbuffer" } + { "gpu", "gpu", "" }, + { "gl", "gpu", "api=gl" }, + { "msaa4", "gpu", "samples=4" }, + { "glmsaa4", "gpu", "api=gl,samples=4" }, + { "msaa16", "gpu", "samples=16" }, + { "nvpr4", "gpu", "nvpr=true,samples=4" }, + { "glnvpr4", "gpu", "api=gl,nvpr=true,samples=4" }, + { "nvpr16", "gpu", "nvpr=true,samples=16" }, + { "nvprdit4", "gpu", "nvpr=true,samples=4,dit=true" }, + { "glnvprdit4", "gpu", "api=gl,nvpr=true,samples=4,dit=true" }, + { "nvprdit16", "gpu", "nvpr=true,samples=16,dit=true" }, + { "glinst", "gpu", "api=gl,inst=true" }, + { "glinst4", "gpu", "api=gl,inst=true,samples=4" }, + { "glinstdit4", "gpu", "api=gl,inst=true,samples=4,dit=true" }, + { "glinst16", "gpu", "api=gl,inst=true,samples=16" }, + { "glinstdit16", "gpu", "api=gl,inst=true,samples=16,dit=true" }, + { "esinst", "gpu", "api=gles,inst=true" }, + { "esinst4", "gpu", "api=gles,inst=true,samples=4" }, + { "esinstdit4", "gpu", "api=gles,inst=true,samples=4,dit=true" }, + { "gpuf16", "gpu", "color=f16" }, + { "gpusrgb", "gpu", "color=srgb" }, + { "glsrgb", "gpu", "api=gl,color=srgb" }, + { "glwide", "gpu", "api=gl,color=f16_wide" }, + { "gpudft", "gpu", "dit=true" }, + { "gpudebug", "gpu", "api=debug" }, + { "gpunull", "gpu", "api=null" }, + { "debug", "gpu", "api=debug" }, + { "nullgpu", "gpu", "api=null" }, + { "angle_d3d11_es2", "gpu", "api=angle_d3d11_es2" }, + { "angle_gl_es2", "gpu", "api=angle_gl_es2" }, + { "commandbuffer", "gpu", "api=commandbuffer" } #if SK_MESA - ,{ "mesa", "gpu", "api=mesa" } + ,{ "mesa", "gpu", "api=mesa" } #endif #ifdef SK_VULKAN - ,{ "vk", "gpu", "api=vulkan" } - ,{ "vksrgb", "gpu", "api=vulkan,color=srgb" } - ,{ "vkwide", "gpu", "api=vulkan,color=f16_wide" } - ,{ "vkmsaa4", "gpu", "api=vulkan,samples=4" } - ,{ "vkmsaa16", "gpu", "api=vulkan,samples=16" } + ,{ "vk", "gpu", "api=vulkan" } + ,{ "vksrgb", "gpu", "api=vulkan,color=srgb" } + ,{ "vkwide", "gpu", "api=vulkan,color=f16_wide" } + ,{ "vkmsaa4", "gpu", "api=vulkan,samples=4" } + ,{ "vkmsaa16", "gpu", "api=vulkan,samples=16" } #endif #else @@ -115,12 +109,11 @@ static const char configExtendedHelp[] = "\t\tgles \t\t\tUse OpenGL ES.\n" "\t\tdebug \t\t\tUse debug OpenGL.\n" "\t\tnull \t\t\tUse null OpenGL.\n" -#if SK_ANGLE -#ifdef SK_BUILD_FOR_WIN - "\t\tangle\t\t\tUse ANGLE DirectX.\n" -#endif - "\t\tangle-gl\t\t\tUse ANGLE OpenGL.\n" -#endif + "\t\tangle_d3d9_es2\t\t\tUse OpenGL ES2 on the ANGLE Direct3D9 backend.\n" + "\t\tangle_d3d11_es2\t\t\tUse OpenGL ES2 on the ANGLE Direct3D11 backend.\n" + "\t\tangle_d3d11_es3\t\t\tUse OpenGL ES3 on the ANGLE Direct3D11 backend.\n" + "\t\tangle_gl_es2\t\t\tUse OpenGL ES2 on the ANGLE OpenGL backend.\n" + "\t\tangle_gl_es3\t\t\tUse OpenGL ES3 on the ANGLE OpenGL backend.\n" "\t\tcommandbuffer\t\tUse command buffer.\n" #if SK_MESA "\t\tmesa\t\t\tUse MESA.\n" @@ -234,18 +227,26 @@ static bool parse_option_gpu_api(const SkString& value, *outContextType = GrContextFactory::kNullGL_ContextType; return true; } -#if SK_ANGLE -#ifdef SK_BUILD_FOR_WIN - if (value.equals("angle")) { - *outContextType = GrContextFactory::kANGLE_ContextType; + if (value.equals("angle_d3d9_es2")) { + *outContextType = GrContextFactory::kANGLE_D3D9_ES2_ContextType; return true; } -#endif - if (value.equals("angle-gl")) { - *outContextType = GrContextFactory::kANGLE_GL_ContextType; + if (value.equals("angle_d3d11_es2")) { + *outContextType = GrContextFactory::kANGLE_D3D11_ES2_ContextType; + return true; + } + if (value.equals("angle_d3d11_es3")) { + *outContextType = GrContextFactory::kANGLE_D3D11_ES3_ContextType; + return true; + } + if (value.equals("angle_gl_es2")) { + *outContextType = GrContextFactory::kANGLE_GL_ES2_ContextType; + return true; + } + if (value.equals("angle_gl_es3")) { + *outContextType = GrContextFactory::kANGLE_GL_ES3_ContextType; return true; } -#endif if (value.equals("commandbuffer")) { *outContextType = GrContextFactory::kCommandBuffer_ContextType; return true; @@ -407,13 +408,6 @@ void ParseConfigs(const SkCommandLineFlags::StringArray& configs, simpleBackend = vias[vias.count() - 1]; vias.pop_back(); } - // Note: no #if SK_ANGLE: this is a special rule in the via-tag grammar. - if (vias.count() && simpleBackend.equals("gl") && - vias[vias.count() - 1].equals("angle")) { - simpleBackend = "angle-gl"; - vias.pop_back(); - } - for (auto& predefinedConfig : gPredefinedConfigs) { if (simpleBackend.equals(predefinedConfig.predefinedConfig)) { extendedBackend = predefinedConfig.backend; diff --git a/tools/flags/SkCommonFlagsConfig.h b/tools/flags/SkCommonFlagsConfig.h index e817339..9abf4cb 100644 --- a/tools/flags/SkCommonFlagsConfig.h +++ b/tools/flags/SkCommonFlagsConfig.h @@ -24,7 +24,7 @@ class SkCommandLineConfigGpu; // The string has following form: // tag: // [via-]*backend -// where 'backend' consists of chars excluding hyphen or "angle-gl" +// where 'backend' consists of chars excluding hyphen // and each 'via' consists of chars excluding hyphen. class SkCommandLineConfig { public: diff --git a/tools/gpu/GrContextFactory.cpp b/tools/gpu/GrContextFactory.cpp index 5e6494f..4f18994 100644 --- a/tools/gpu/GrContextFactory.cpp +++ b/tools/gpu/GrContextFactory.cpp @@ -117,13 +117,24 @@ ContextInfo GrContextFactory::getContextInfo(ContextType type, ContextOptions op glCtx = CreatePlatformGLTestContext(kGLES_GrGLStandard); break; #if SK_ANGLE -# ifdef SK_BUILD_FOR_WIN - case kANGLE_ContextType: - glCtx = CreateANGLEDirect3DGLTestContext(); + case kANGLE_D3D9_ES2_ContextType: + glCtx = CreateANGLETestContext(ANGLEBackend::kD3D9, ANGLEContextVersion::kES2); break; -# endif - case kANGLE_GL_ContextType: - glCtx = CreateANGLEOpenGLGLTestContext(); + case kANGLE_D3D11_ES2_ContextType: + glCtx = CreateANGLETestContext(ANGLEBackend::kD3D11, + ANGLEContextVersion::kES2); + break; + case kANGLE_D3D11_ES3_ContextType: + glCtx = CreateANGLETestContext(ANGLEBackend::kD3D11, + ANGLEContextVersion::kES3); + break; + case kANGLE_GL_ES2_ContextType: + glCtx = CreateANGLETestContext(ANGLEBackend::kOpenGL, + ANGLEContextVersion::kES2); + break; + case kANGLE_GL_ES3_ContextType: + glCtx = CreateANGLETestContext(ANGLEBackend::kOpenGL, + ANGLEContextVersion::kES3); break; #endif case kCommandBuffer_ContextType: diff --git a/tools/gpu/GrContextFactory.h b/tools/gpu/GrContextFactory.h index a822ac7..d6baffc 100644 --- a/tools/gpu/GrContextFactory.h +++ b/tools/gpu/GrContextFactory.h @@ -68,15 +68,18 @@ public: // The availability of context types is subject to platform and build configuration // restrictions. enum ContextType { - kGL_ContextType, //! OpenGL context. - kGLES_ContextType, //! OpenGL ES context. - kANGLE_ContextType, //! ANGLE on DirectX OpenGL ES context. - kANGLE_GL_ContextType, //! ANGLE on OpenGL OpenGL ES context. - kCommandBuffer_ContextType, //! Chromium command buffer OpenGL ES context. - kMESA_ContextType, //! MESA OpenGL context - kNullGL_ContextType, //! Non-rendering OpenGL mock context. - kDebugGL_ContextType, //! Non-rendering, state verifying OpenGL context. - kVulkan_ContextType, //! Vulkan + kGL_ContextType, //! OpenGL context. + kGLES_ContextType, //! OpenGL ES context. + kANGLE_D3D9_ES2_ContextType, //! ANGLE on Direct3D9 OpenGL ES 2 context. + kANGLE_D3D11_ES2_ContextType,//! ANGLE on Direct3D11 OpenGL ES 2 context. + kANGLE_D3D11_ES3_ContextType,//! ANGLE on Direct3D11 OpenGL ES 3 context. + kANGLE_GL_ES2_ContextType, //! ANGLE on OpenGL OpenGL ES 2 context. + kANGLE_GL_ES3_ContextType, //! ANGLE on OpenGL OpenGL ES 3 context. + kCommandBuffer_ContextType, //! Chromium command buffer OpenGL ES context. + kMESA_ContextType, //! MESA OpenGL context + kNullGL_ContextType, //! Non-rendering OpenGL mock context. + kDebugGL_ContextType, //! Non-rendering, state verifying OpenGL context. + kVulkan_ContextType, //! Vulkan kLastContextType = kVulkan_ContextType }; @@ -127,29 +130,6 @@ public: } } - static const char* ContextTypeName(ContextType type) { - switch (type) { - case kGL_ContextType: - return "gl"; - case kGLES_ContextType: - return "gles"; - case kANGLE_ContextType: - return "angle"; - case kANGLE_GL_ContextType: - return "angle-gl"; - case kCommandBuffer_ContextType: - return "commandbuffer"; - case kMESA_ContextType: - return "mesa"; - case kNullGL_ContextType: - return "nullgl"; - case kDebugGL_ContextType: - return "debuggl"; - case kVulkan_ContextType: - return "vulkan"; - } - } - explicit GrContextFactory(const GrContextOptions& opts); GrContextFactory(); diff --git a/tools/gpu/gl/angle/GLTestContext_angle.cpp b/tools/gpu/gl/angle/GLTestContext_angle.cpp index 8cc6f99..449e14c 100644 --- a/tools/gpu/gl/angle/GLTestContext_angle.cpp +++ b/tools/gpu/gl/angle/GLTestContext_angle.cpp @@ -26,6 +26,9 @@ #define EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 0x3208 #define EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE 0x320D +using sk_gpu_test::ANGLEBackend; +using sk_gpu_test::ANGLEContextVersion; + namespace { struct Libs { void* fGLLib; @@ -45,7 +48,7 @@ static GrGLFuncPtr angle_get_gl_proc(void* ctx, const char name[]) { return eglGetProcAddress(name); } -void* get_angle_egl_display(void* nativeDisplay, bool useGLBackend) { +void* get_angle_egl_display(void* nativeDisplay, ANGLEBackend type) { PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT; eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC)eglGetProcAddress("eglGetPlatformDisplayEXT"); @@ -55,38 +58,25 @@ void* get_angle_egl_display(void* nativeDisplay, bool useGLBackend) { return EGL_NO_DISPLAY; } - EGLDisplay display = EGL_NO_DISPLAY; - if (useGLBackend) { - EGLint attribs[3] = { - EGL_PLATFORM_ANGLE_TYPE_ANGLE, - EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, - EGL_NONE - }; - display = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, nativeDisplay, attribs); - } else { - // Try for an ANGLE D3D11 context, fall back to D3D9. - EGLint attribs[3][3] = { - { - EGL_PLATFORM_ANGLE_TYPE_ANGLE, - EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, - EGL_NONE - }, - { - EGL_PLATFORM_ANGLE_TYPE_ANGLE, - EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, - EGL_NONE - }, - }; - for (int i = 0; i < 3 && display == EGL_NO_DISPLAY; ++i) { - display = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE,nativeDisplay, attribs[i]); - } + EGLint typeNum = 0; + switch (type) { + case ANGLEBackend::kD3D9: + typeNum = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE; + break; + case ANGLEBackend::kD3D11: + typeNum = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; + break; + case ANGLEBackend::kOpenGL: + typeNum = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; + break; } - return display; + const EGLint attribs[] = { EGL_PLATFORM_ANGLE_TYPE_ANGLE, typeNum, EGL_NONE }; + return eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, nativeDisplay, attribs); } class ANGLEGLContext : public sk_gpu_test::GLTestContext { public: - ANGLEGLContext(bool preferGLBackend); + ANGLEGLContext(ANGLEBackend, ANGLEContextVersion); ~ANGLEGLContext() override; GrEGLImage texture2DToEGLImage(GrGLuint texID) const override; @@ -101,16 +91,19 @@ private: void onPlatformSwapBuffers() const override; GrGLFuncPtr onPlatformGetProcAddress(const char* name) const override; - void* fContext; - void* fDisplay; - void* fSurface; - bool fIsGLBackend; + void* fContext; + void* fDisplay; + void* fSurface; + ANGLEBackend fType; + ANGLEContextVersion fVersion; }; -ANGLEGLContext::ANGLEGLContext(bool useGLBackend) +ANGLEGLContext::ANGLEGLContext(ANGLEBackend type, ANGLEContextVersion version) : fContext(EGL_NO_CONTEXT) , fDisplay(EGL_NO_DISPLAY) - , fSurface(EGL_NO_SURFACE) { + , fSurface(EGL_NO_SURFACE) + , fType(type) + , fVersion(version) { EGLint numConfigs; static const EGLint configAttribs[] = { @@ -123,8 +116,7 @@ ANGLEGLContext::ANGLEGLContext(bool useGLBackend) EGL_NONE }; - fIsGLBackend = useGLBackend; - fDisplay = get_angle_egl_display(EGL_DEFAULT_DISPLAY, useGLBackend); + fDisplay = get_angle_egl_display(EGL_DEFAULT_DISPLAY, type); if (EGL_NO_DISPLAY == fDisplay) { SkDebugf("Could not create EGL display!"); return; @@ -137,8 +129,9 @@ ANGLEGLContext::ANGLEGLContext(bool useGLBackend) EGLConfig surfaceConfig; eglChooseConfig(fDisplay, configAttribs, &surfaceConfig, 1, &numConfigs); - static const EGLint contextAttribs[] = { - EGL_CONTEXT_CLIENT_VERSION, 2, + int versionNum = ANGLEContextVersion::kES2 == version ? 2 : 3; + const EGLint contextAttribs[] = { + EGL_CONTEXT_CLIENT_VERSION, versionNum, EGL_NONE }; fContext = eglCreateContext(fDisplay, surfaceConfig, nullptr, contextAttribs); @@ -224,13 +217,7 @@ GrGLuint ANGLEGLContext::eglImageToExternalTexture(GrEGLImage image) const { } sk_gpu_test::GLTestContext* ANGLEGLContext::createNew() const { -#ifdef SK_BUILD_FOR_WIN - sk_gpu_test::GLTestContext* ctx = fIsGLBackend - ? sk_gpu_test::CreateANGLEOpenGLGLTestContext() - : sk_gpu_test::CreateANGLEDirect3DGLTestContext(); -#else - sk_gpu_test::GLTestContext* ctx = sk_gpu_test::CreateANGLEOpenGLGLTestContext(); -#endif + sk_gpu_test::GLTestContext* ctx = sk_gpu_test::CreateANGLETestContext(fType, fVersion); if (ctx) { ctx->makeCurrent(); } @@ -299,19 +286,9 @@ const GrGLInterface* CreateANGLEGLInterface() { return GrGLAssembleGLESInterface(&gLibs, angle_get_gl_proc); } -#ifdef SK_BUILD_FOR_WIN -GLTestContext* CreateANGLEDirect3DGLTestContext() { - ANGLEGLContext* ctx = new ANGLEGLContext(false); - if (!ctx->isValid()) { - delete ctx; - return NULL; - } - return ctx; - } -#endif - -GLTestContext* CreateANGLEOpenGLGLTestContext() { - ANGLEGLContext* ctx = new ANGLEGLContext(true); +GLTestContext* CreateANGLETestContext(ANGLEBackend type, + ANGLEContextVersion version) { + ANGLEGLContext* ctx = new ANGLEGLContext(type, version); if (!ctx->isValid()) { delete ctx; return NULL; diff --git a/tools/gpu/gl/angle/GLTestContext_angle.h b/tools/gpu/gl/angle/GLTestContext_angle.h index 0140477..0da747f 100644 --- a/tools/gpu/gl/angle/GLTestContext_angle.h +++ b/tools/gpu/gl/angle/GLTestContext_angle.h @@ -13,18 +13,24 @@ namespace sk_gpu_test { /** - * Creates a GrGLInterface for the currently ANGLE GL context currently bound in ANGLE's EGL - * implementation. + * Creates a GrGLInterface for the current ANGLE GLES Context. Here current means bound in ANGLE's + * implementation of EGL. */ const GrGLInterface* CreateANGLEGLInterface(); -#ifdef SK_BUILD_FOR_WIN -/** Creates a GLTestContext backed by ANGLE's Direct3D backend. */ -GLTestContext* CreateANGLEDirect3DGLTestContext(); -#endif +enum class ANGLEBackend { + kD3D9, + kD3D11, + kOpenGL +}; + +enum class ANGLEContextVersion { + kES2, + kES3 +}; -/** Creates a GLTestContext backed by ANGLE's OpenGL backend. */ -GLTestContext* CreateANGLEOpenGLGLTestContext(); +/** Creates a GLTestContext backed by ANGLE. */ +GLTestContext* CreateANGLETestContext(ANGLEBackend, ANGLEContextVersion); } // namespace sk_gpu_test #endif -- 2.7.4