Revert of Explicit control in tools of ANGLE frontend and backend (patchset #6 id:90001 of https://codereview.chromium.org/2381033002/ )
Reason for revert: Broke bots Original issue's description: > 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 > > Committed: https://skia.googlesource.com/skia/+/50094fb489543655df026be4e4f99e09e57a1f49 TBR=brianosman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:5804 Review-Url: https://codereview.chromium.org/2384483003
This commit is contained in:
parent
50094fb489
commit
7c2213ba61
@ -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 --svgs /sdcard/revenge_of_the_skiabot/svgs --images /sdcard/revenge_of_the_skiabot/images/nanobench --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",
|
||||
"set -x; /data/local/tmp/nanobench --undefok -i /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --svgs /sdcard/revenge_of_the_skiabot/svgs --images /sdcard/revenge_of_the_skiabot/images/nanobench --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",
|
||||
"[SLAVE_BUILD]/tmp/nanobench.sh"
|
||||
],
|
||||
"name": "write nanobench.sh"
|
||||
|
@ -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 --svgs /sdcard/revenge_of_the_skiabot/svgs --images /sdcard/revenge_of_the_skiabot/images/nanobench --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_1337018001.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 --svgs /sdcard/revenge_of_the_skiabot/svgs --images /sdcard/revenge_of_the_skiabot/images/nanobench --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_1337018001.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"
|
||||
|
@ -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 --svgs /sdcard/revenge_of_the_skiabot/svgs --images /sdcard/revenge_of_the_skiabot/images/nanobench --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_1337018001.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 --svgs /sdcard/revenge_of_the_skiabot/svgs --images /sdcard/revenge_of_the_skiabot/images/nanobench --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_1337018001.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"
|
||||
|
@ -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 --svgs /sdcard/revenge_of_the_skiabot/svgs --images /sdcard/revenge_of_the_skiabot/images/nanobench --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_1337018001.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 --svgs /sdcard/revenge_of_the_skiabot/svgs --images /sdcard/revenge_of_the_skiabot/images/nanobench --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_1337018001.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"
|
||||
|
@ -124,6 +124,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -125,6 +125,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -134,6 +134,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
@ -230,6 +231,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -128,6 +128,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -80,6 +80,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -124,6 +124,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -1,130 +0,0 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"--svgs",
|
||||
"[SLAVE_BUILD]\\svg",
|
||||
"--images",
|
||||
"[SLAVE_BUILD]\\skimage\\nanobench",
|
||||
"--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
|
||||
}
|
||||
]
|
@ -127,6 +127,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -355,6 +355,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -127,6 +127,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -156,6 +156,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
@ -258,6 +259,7 @@
|
||||
"8888",
|
||||
"gpu",
|
||||
"nonrendering",
|
||||
"angle",
|
||||
"hwui",
|
||||
"f16",
|
||||
"srgb",
|
||||
|
@ -38,7 +38,6 @@ 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',
|
||||
],
|
||||
},
|
||||
@ -63,7 +62,7 @@ def nanobench_flags(bot):
|
||||
if 'iOS' in bot:
|
||||
args.extend(['--skps', 'ignore_skps'])
|
||||
|
||||
config = ['8888', 'gpu', 'nonrendering', 'hwui' ]
|
||||
config = ['8888', 'gpu', 'nonrendering', 'angle', 'hwui' ]
|
||||
if 'AndroidOne' not in bot:
|
||||
config += [ 'f16', 'srgb' ]
|
||||
if '-GCE-' in bot:
|
||||
@ -96,9 +95,6 @@ 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)
|
||||
|
||||
|
@ -225,8 +225,6 @@
|
||||
"gpusrgb",
|
||||
"pdf",
|
||||
"msaa16",
|
||||
"angle_gl_es2",
|
||||
"angle_d3d11_es2",
|
||||
"serialize-8888",
|
||||
"tiles_rt-8888",
|
||||
"pic-8888",
|
||||
|
@ -70,9 +70,6 @@ def dm_flags(bot):
|
||||
else:
|
||||
configs.append('msaa16')
|
||||
|
||||
if 'ANGLE' in bot:
|
||||
configs.extend(['angle_gl_es2', 'angle_d3d11_es2'])
|
||||
|
||||
# With msaa, the S4 crashes and the NP produces a long error stream when we
|
||||
# run with MSAA. The Tegra2 and Tegra3 just don't support it. No record of
|
||||
# why we're not running msaa on iOS, probably started with gpu config and just
|
||||
|
@ -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_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"
|
||||
"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"
|
||||
});
|
||||
|
||||
SkCommandLineConfigArray configs;
|
||||
@ -167,8 +167,18 @@ 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());
|
||||
@ -197,8 +207,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_d3d9_es2]",
|
||||
"gpu[api=angle_gl_es3]",
|
||||
"gpu[api=angle]",
|
||||
"gpu[api=angle-gl]",
|
||||
"gpu[api=mesa,samples=77]",
|
||||
"gpu[dit=true,api=commandbuffer]",
|
||||
"gpu[]",
|
||||
@ -219,12 +229,19 @@ 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_D3D9_ES2_ContextType);
|
||||
REPORTER_ASSERT(reporter, configs[1]->asConfigGpu());
|
||||
GrContextFactory::kANGLE_ContextType);
|
||||
#else
|
||||
REPORTER_ASSERT(reporter, !configs[1]->asConfigGpu());
|
||||
#endif
|
||||
REPORTER_ASSERT(reporter, configs[2]->asConfigGpu()->getContextType() ==
|
||||
GrContextFactory::kANGLE_GL_ES3_ContextType);
|
||||
REPORTER_ASSERT(reporter, configs[2]->asConfigGpu());
|
||||
GrContextFactory::kANGLE_GL_ContextType);
|
||||
#else
|
||||
REPORTER_ASSERT(reporter, !configs[1]->asConfigGpu());
|
||||
REPORTER_ASSERT(reporter, !configs[2]->asConfigGpu());
|
||||
#endif
|
||||
#if SK_MESA
|
||||
REPORTER_ASSERT(reporter, configs[3]->asConfigGpu()->getContextType() ==
|
||||
GrContextFactory::kMESA_ContextType);
|
||||
@ -263,7 +280,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.
|
||||
@ -312,7 +329,7 @@ DEF_TEST(ParseConfigs_ViaParsing, reporter) {
|
||||
SkCommandLineFlags::StringArray config1 = make_string_array({
|
||||
"a-b-c-8888",
|
||||
"zz-qq-gpu",
|
||||
"a-angle_gl_es2"
|
||||
"a-angle-gl"
|
||||
});
|
||||
|
||||
SkCommandLineConfigArray configs;
|
||||
@ -323,7 +340,12 @@ DEF_TEST(ParseConfigs_ViaParsing, reporter) {
|
||||
} expectedConfigs[] = {
|
||||
{"8888", {"a", "b", "c"}},
|
||||
{"gpu", {"zz", "qq", nullptr}},
|
||||
{"gpu", { "a", nullptr, 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
|
||||
};
|
||||
for (int i = 0; i < config1.count(); ++i) {
|
||||
REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i]));
|
||||
@ -342,9 +364,8 @@ 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_es2[samples=1]",
|
||||
"abc-def-angle-gl[samples=1]",
|
||||
});
|
||||
|
||||
SkCommandLineConfigArray configs;
|
||||
@ -355,16 +376,13 @@ 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}}, // 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.
|
||||
{"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.
|
||||
};
|
||||
for (int i = 0; i < config1.count(); ++i) {
|
||||
REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i]));
|
||||
@ -381,8 +399,7 @@ 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
|
||||
}
|
||||
|
@ -16,8 +16,10 @@ using sk_gpu_test::GrContextFactory;
|
||||
|
||||
static const char defaultConfigs[] =
|
||||
"8888 gpu nonrendering"
|
||||
#if defined(SK_BUILD_FOR_WIN)
|
||||
" angle_d3d11_es2"
|
||||
#if SK_ANGLE
|
||||
#ifdef SK_BUILD_FOR_WIN
|
||||
" angle"
|
||||
#endif
|
||||
#endif
|
||||
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
|
||||
" hwui"
|
||||
@ -30,46 +32,50 @@ 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" },
|
||||
{ "angle_d3d11_es2", "gpu", "api=angle_d3d11_es2" },
|
||||
{ "angle_gl_es2", "gpu", "api=angle_gl_es2" },
|
||||
{ "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" }
|
||||
#if SK_ANGLE
|
||||
#ifdef SK_BUILD_FOR_WIN
|
||||
,{ "angle", "gpu", "api=angle" }
|
||||
#endif
|
||||
,{ "angle-gl", "gpu", "api=angle-gl" }
|
||||
#endif
|
||||
,{ "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
|
||||
@ -108,11 +114,12 @@ 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"
|
||||
"\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"
|
||||
#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\tcommandbuffer\t\tUse command buffer.\n"
|
||||
#if SK_MESA
|
||||
"\t\tmesa\t\t\tUse MESA.\n"
|
||||
@ -226,26 +233,18 @@ static bool parse_option_gpu_api(const SkString& value,
|
||||
*outContextType = GrContextFactory::kNullGL_ContextType;
|
||||
return true;
|
||||
}
|
||||
if (value.equals("angle_d3d9_es2")) {
|
||||
*outContextType = GrContextFactory::kANGLE_D3D9_ES2_ContextType;
|
||||
#if SK_ANGLE
|
||||
#ifdef SK_BUILD_FOR_WIN
|
||||
if (value.equals("angle")) {
|
||||
*outContextType = GrContextFactory::kANGLE_ContextType;
|
||||
return true;
|
||||
}
|
||||
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;
|
||||
#endif
|
||||
if (value.equals("angle-gl")) {
|
||||
*outContextType = GrContextFactory::kANGLE_GL_ContextType;
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
if (value.equals("commandbuffer")) {
|
||||
*outContextType = GrContextFactory::kCommandBuffer_ContextType;
|
||||
return true;
|
||||
@ -407,6 +406,13 @@ 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;
|
||||
|
@ -24,7 +24,7 @@ class SkCommandLineConfigGpu;
|
||||
// The string has following form:
|
||||
// tag:
|
||||
// [via-]*backend
|
||||
// where 'backend' consists of chars excluding hyphen
|
||||
// where 'backend' consists of chars excluding hyphen or "angle-gl"
|
||||
// and each 'via' consists of chars excluding hyphen.
|
||||
class SkCommandLineConfig {
|
||||
public:
|
||||
|
@ -117,24 +117,13 @@ ContextInfo GrContextFactory::getContextInfo(ContextType type, ContextOptions op
|
||||
glCtx = CreatePlatformGLTestContext(kGLES_GrGLStandard);
|
||||
break;
|
||||
#if SK_ANGLE
|
||||
case kANGLE_D3D9_ES2_ContextType:
|
||||
glCtx = CreateANGLETestContext(ANGLEBackend::kD3D9, ANGLEContextVersion::kES2);
|
||||
# ifdef SK_BUILD_FOR_WIN
|
||||
case kANGLE_ContextType:
|
||||
glCtx = CreateANGLEDirect3DGLTestContext();
|
||||
break;
|
||||
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);
|
||||
# endif
|
||||
case kANGLE_GL_ContextType:
|
||||
glCtx = CreateANGLEOpenGLGLTestContext();
|
||||
break;
|
||||
#endif
|
||||
case kCommandBuffer_ContextType:
|
||||
|
@ -68,18 +68,15 @@ 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_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
|
||||
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
|
||||
kLastContextType = kVulkan_ContextType
|
||||
};
|
||||
|
||||
@ -130,6 +127,29 @@ 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();
|
||||
|
||||
|
@ -26,9 +26,6 @@
|
||||
#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;
|
||||
@ -48,7 +45,7 @@ static GrGLFuncPtr angle_get_gl_proc(void* ctx, const char name[]) {
|
||||
return eglGetProcAddress(name);
|
||||
}
|
||||
|
||||
void* get_angle_egl_display(void* nativeDisplay, ANGLEBackend type) {
|
||||
void* get_angle_egl_display(void* nativeDisplay, bool useGLBackend) {
|
||||
PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT;
|
||||
eglGetPlatformDisplayEXT =
|
||||
(PFNEGLGETPLATFORMDISPLAYEXTPROC)eglGetProcAddress("eglGetPlatformDisplayEXT");
|
||||
@ -58,25 +55,38 @@ void* get_angle_egl_display(void* nativeDisplay, ANGLEBackend type) {
|
||||
return EGL_NO_DISPLAY;
|
||||
}
|
||||
|
||||
EGLint typeNum;
|
||||
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;
|
||||
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]);
|
||||
}
|
||||
}
|
||||
const EGLint attribs[] = { EGL_PLATFORM_ANGLE_TYPE_ANGLE, typeNum, EGL_NONE };
|
||||
return eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, nativeDisplay, attribs);
|
||||
return display;
|
||||
}
|
||||
|
||||
class ANGLEGLContext : public sk_gpu_test::GLTestContext {
|
||||
public:
|
||||
ANGLEGLContext(ANGLEBackend, ANGLEContextVersion);
|
||||
ANGLEGLContext(bool preferGLBackend);
|
||||
~ANGLEGLContext() override;
|
||||
|
||||
GrEGLImage texture2DToEGLImage(GrGLuint texID) const override;
|
||||
@ -91,19 +101,16 @@ private:
|
||||
void onPlatformSwapBuffers() const override;
|
||||
GrGLFuncPtr onPlatformGetProcAddress(const char* name) const override;
|
||||
|
||||
void* fContext;
|
||||
void* fDisplay;
|
||||
void* fSurface;
|
||||
ANGLEBackend fType;
|
||||
ANGLEContextVersion fVersion;
|
||||
void* fContext;
|
||||
void* fDisplay;
|
||||
void* fSurface;
|
||||
bool fIsGLBackend;
|
||||
};
|
||||
|
||||
ANGLEGLContext::ANGLEGLContext(ANGLEBackend type, ANGLEContextVersion version)
|
||||
ANGLEGLContext::ANGLEGLContext(bool useGLBackend)
|
||||
: fContext(EGL_NO_CONTEXT)
|
||||
, fDisplay(EGL_NO_DISPLAY)
|
||||
, fSurface(EGL_NO_SURFACE)
|
||||
, fType(type)
|
||||
, fVersion(version) {
|
||||
, fSurface(EGL_NO_SURFACE) {
|
||||
|
||||
EGLint numConfigs;
|
||||
static const EGLint configAttribs[] = {
|
||||
@ -116,7 +123,8 @@ ANGLEGLContext::ANGLEGLContext(ANGLEBackend type, ANGLEContextVersion version)
|
||||
EGL_NONE
|
||||
};
|
||||
|
||||
fDisplay = get_angle_egl_display(EGL_DEFAULT_DISPLAY, type);
|
||||
fIsGLBackend = useGLBackend;
|
||||
fDisplay = get_angle_egl_display(EGL_DEFAULT_DISPLAY, useGLBackend);
|
||||
if (EGL_NO_DISPLAY == fDisplay) {
|
||||
SkDebugf("Could not create EGL display!");
|
||||
return;
|
||||
@ -129,9 +137,8 @@ ANGLEGLContext::ANGLEGLContext(ANGLEBackend type, ANGLEContextVersion version)
|
||||
EGLConfig surfaceConfig;
|
||||
eglChooseConfig(fDisplay, configAttribs, &surfaceConfig, 1, &numConfigs);
|
||||
|
||||
int versionNum = ANGLEContextVersion::kES2 == version ? 2 : 3;
|
||||
const EGLint contextAttribs[] = {
|
||||
EGL_CONTEXT_CLIENT_VERSION, versionNum,
|
||||
static const EGLint contextAttribs[] = {
|
||||
EGL_CONTEXT_CLIENT_VERSION, 2,
|
||||
EGL_NONE
|
||||
};
|
||||
fContext = eglCreateContext(fDisplay, surfaceConfig, nullptr, contextAttribs);
|
||||
@ -217,7 +224,13 @@ GrGLuint ANGLEGLContext::eglImageToExternalTexture(GrEGLImage image) const {
|
||||
}
|
||||
|
||||
sk_gpu_test::GLTestContext* ANGLEGLContext::createNew() const {
|
||||
sk_gpu_test::GLTestContext* ctx = sk_gpu_test::CreateANGLETestContext(fType, fVersion);
|
||||
#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
|
||||
if (ctx) {
|
||||
ctx->makeCurrent();
|
||||
}
|
||||
@ -286,9 +299,19 @@ const GrGLInterface* CreateANGLEGLInterface() {
|
||||
return GrGLAssembleGLESInterface(&gLibs, angle_get_gl_proc);
|
||||
}
|
||||
|
||||
GLTestContext* CreateANGLETestContext(ANGLEBackend type,
|
||||
ANGLEContextVersion version) {
|
||||
ANGLEGLContext* ctx = new ANGLEGLContext(type, version);
|
||||
#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);
|
||||
if (!ctx->isValid()) {
|
||||
delete ctx;
|
||||
return NULL;
|
||||
|
@ -13,24 +13,18 @@
|
||||
namespace sk_gpu_test {
|
||||
|
||||
/**
|
||||
* Creates a GrGLInterface for the current ANGLE GLES Context. Here current means bound in ANGLE's
|
||||
* implementation of EGL.
|
||||
* Creates a GrGLInterface for the currently ANGLE GL context currently bound in ANGLE's EGL
|
||||
* implementation.
|
||||
*/
|
||||
const GrGLInterface* CreateANGLEGLInterface();
|
||||
|
||||
enum class ANGLEBackend {
|
||||
kD3D9,
|
||||
kD3D11,
|
||||
kOpenGL
|
||||
};
|
||||
#ifdef SK_BUILD_FOR_WIN
|
||||
/** Creates a GLTestContext backed by ANGLE's Direct3D backend. */
|
||||
GLTestContext* CreateANGLEDirect3DGLTestContext();
|
||||
#endif
|
||||
|
||||
enum class ANGLEContextVersion {
|
||||
kES2,
|
||||
kES3
|
||||
};
|
||||
|
||||
/** Creates a GLTestContext backed by ANGLE. */
|
||||
GLTestContext* CreateANGLETestContext(ANGLEBackend, ANGLEContextVersion);
|
||||
/** Creates a GLTestContext backed by ANGLE's OpenGL backend. */
|
||||
GLTestContext* CreateANGLEOpenGLGLTestContext();
|
||||
|
||||
} // namespace sk_gpu_test
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user