| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkCommonFlagsConfig.h" | 8 #include "SkCommonFlagsConfig.h" |
| 9 #include "SkImageInfo.h" | 9 #include "SkImageInfo.h" |
| 10 | 10 |
| 11 #include <stdlib.h> | 11 #include <stdlib.h> |
| 12 | 12 |
| 13 #if SK_SUPPORT_GPU | 13 #if SK_SUPPORT_GPU |
| 14 using sk_gpu_test::GrContextFactory; | 14 using sk_gpu_test::GrContextFactory; |
| 15 #endif | 15 #endif |
| 16 | 16 |
| 17 static const char defaultConfigs[] = | 17 static const char defaultConfigs[] = |
| 18 "8888 gpu nonrendering" | 18 "8888 gpu nonrendering" |
| 19 #if SK_ANGLE | 19 #if SK_ANGLE |
| 20 #ifdef SK_BUILD_FOR_WIN | 20 #ifdef SK_BUILD_FOR_WIN |
| 21 " angle" | 21 " angle" |
| 22 #endif | 22 #endif |
| 23 #endif | 23 #endif |
| 24 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK | 24 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK |
| 25 " hwui" | 25 " hwui" |
| 26 #endif | 26 #endif |
| 27 ; | 27 ; |
| 28 | 28 |
| 29 static const char configHelp[] = | 29 static const struct { |
| 30 "Options: 565 8888 debug gpu gl gpudebug gpudft gpunull " | 30 const char* predefinedConfig; |
| 31 "msaa16 msaa4 glmsaa4 gpuf16 gpusrgb glsrgb glwide nonrendering null nullgpu
" | 31 const char* backend; |
| 32 "nvpr16 nvpr4 nvprdit16 nvprdit4 glnvpr4 glnvprdit4 pdf skp svg xps " | 32 const char* options; |
| 33 "glinst glinst4 glinstdit4 glinst16 glinstdit16 esinst esinst4 esinsdit4" | 33 } gPredefinedConfigs[] ={ |
| 34 #if SK_SUPPORT_GPU |
| 35 { "gpu", "gpu", "" }, |
| 36 { "gl", "gpu", "api=gl" }, |
| 37 { "msaa4", "gpu", "samples=4" }, |
| 38 { "glmsaa4", "gpu", "api=gl,samples=4" }, |
| 39 { "msaa16", "gpu", "samples=16" }, |
| 40 { "nvpr4", "gpu", "nvpr=true,samples=4" }, |
| 41 { "glnvpr4", "gpu", "api=gl,nvpr=true,samples=4" }, |
| 42 { "nvpr16", "gpu", "nvpr=true,samples=16" }, |
| 43 { "nvprdit4", "gpu", "nvpr=true,samples=4,dit=true" }, |
| 44 { "glnvprdit4", "gpu", "api=gl,nvpr=true,samples=4,dit=true" }, |
| 45 { "nvprdit16", "gpu", "nvpr=true,samples=16,dit=true" }, |
| 46 { "glinst", "gpu", "api=gl,inst=true" }, |
| 47 { "glinst4", "gpu", "api=gl,inst=true,samples=4" }, |
| 48 { "glinstdit4", "gpu", "api=gl,inst=true,samples=4,dit=true" }, |
| 49 { "glinst16", "gpu", "api=gl,inst=true,samples=16" }, |
| 50 { "glinstdit16", "gpu", "api=gl,inst=true,samples=16,dit=true" }, |
| 51 { "esinst", "gpu", "api=gles,inst=true" }, |
| 52 { "esinst4", "gpu", "api=gles,inst=true,samples=4" }, |
| 53 { "esinstdit4", "gpu", "api=gles,inst=true,samples=4,dit=true" }, |
| 54 { "gpuf16", "gpu", "color=f16" }, |
| 55 { "gpusrgb", "gpu", "color=srgb" }, |
| 56 { "glsrgb", "gpu", "api=gl,color=srgb" }, |
| 57 { "glwide", "gpu", "api=gl,color=f16_wide" }, |
| 58 { "gpudft", "gpu", "dit=true" }, |
| 59 { "gpudebug", "gpu", "api=debug" }, |
| 60 { "gpunull", "gpu", "api=null" }, |
| 61 { "debug", "gpu", "api=debug" }, |
| 62 { "nullgpu", "gpu", "api=null" } |
| 34 #if SK_ANGLE | 63 #if SK_ANGLE |
| 35 #ifdef SK_BUILD_FOR_WIN | 64 #ifdef SK_BUILD_FOR_WIN |
| 36 " angle" | 65 ,{ "angle", "gpu", "api=angle" } |
| 37 #endif | 66 #endif |
| 38 " angle-gl" | 67 ,{ "angle-gl", "gpu", "api=angle-gl" } |
| 39 #endif | 68 #endif |
| 40 #if SK_COMMAND_BUFFER | 69 #if SK_COMMAND_BUFFER |
| 41 " commandbuffer" | 70 ,{ "commandbuffer", "gpu", "api=commandbuffer" } |
| 42 #endif | 71 #endif |
| 43 #if SK_MESA | 72 #if SK_MESA |
| 44 " mesa" | 73 ,{ "mesa", "gpu", "api=mesa" } |
| 45 #endif | 74 #endif |
| 75 #ifdef SK_VULKAN |
| 76 ,{ "vk", "gpu", "api=vulkan" } |
| 77 ,{ "vksrgb", "gpu", "api=vulkan,color=srgb" } |
| 78 ,{ "vkwide", "gpu", "api=vulkan,color=f16_wide" } |
| 79 ,{ "vkmsaa4", "gpu", "api=vulkan,samples=4" } |
| 80 ,{ "vkmsaa16", "gpu", "api=vulkan,samples=16" } |
| 81 #endif |
| 82 |
| 83 #else |
| 84 { "", "", "" } |
| 85 #endif |
| 86 }; |
| 87 |
| 88 static const char configHelp[] = |
| 89 "Options: 565 8888 srgb f16 nonrendering null pdf pdfa skp pipe svg xps" |
| 46 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK | 90 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK |
| 47 " hwui" | 91 " hwui" |
| 48 #endif | 92 #endif |
| 49 #ifdef SK_VULKAN | 93 ; |
| 50 " vk vksrgb vkwide" | 94 |
| 51 #endif | 95 static const char* config_help_fn() { |
| 52 " or use extended form 'backend(option=value,...)'.\n"; | 96 static SkString helpString; |
| 97 helpString.set(configHelp); |
| 98 for (const auto& config : gPredefinedConfigs) { |
| 99 helpString.appendf(" %s", config.predefinedConfig); |
| 100 } |
| 101 helpString.append(" or use extended form 'backend(option=value,...)'.\n"); |
| 102 return helpString.c_str(); |
| 103 } |
| 53 | 104 |
| 54 static const char configExtendedHelp[] = | 105 static const char configExtendedHelp[] = |
| 55 "Extended form: 'backend(option=value,...)'\n\n" | 106 "Extended form: 'backend(option=value,...)'\n\n" |
| 56 "Possible backends and options:\n" | 107 "Possible backends and options:\n" |
| 57 #if SK_SUPPORT_GPU | 108 #if SK_SUPPORT_GPU |
| 58 "\n" | 109 "\n" |
| 59 "gpu(api=string,color=string,dit=bool,nvpr=bool,inst=bool,samples=int)\tGPU
backend\n" | 110 "gpu(api=string,color=string,dit=bool,nvpr=bool,inst=bool,samples=int)\n" |
| 60 "\tapi\ttype: string\tdefault: native.\n" | 111 "\tapi\ttype: string\tdefault: native.\n" |
| 61 "\t Select graphics API to use with gpu backend.\n" | 112 "\t Select graphics API to use with gpu backend.\n" |
| 62 "\t Options:\n" | 113 "\t Options:\n" |
| 63 "\t\tnative\t\t\tUse platform default OpenGL or OpenGL ES backend.\n" | 114 "\t\tnative\t\t\tUse platform default OpenGL or OpenGL ES backend.\n" |
| 64 "\t\tgl \t\t\tUse OpenGL.\n" | 115 "\t\tgl \t\t\tUse OpenGL.\n" |
| 65 "\t\tgles \t\t\tUse OpenGL ES.\n" | 116 "\t\tgles \t\t\tUse OpenGL ES.\n" |
| 66 "\t\tdebug \t\t\tUse debug OpenGL.\n" | 117 "\t\tdebug \t\t\tUse debug OpenGL.\n" |
| 67 "\t\tnull \t\t\tUse null OpenGL.\n" | 118 "\t\tnull \t\t\tUse null OpenGL.\n" |
| 68 #if SK_ANGLE | 119 #if SK_ANGLE |
| 69 #ifdef SK_BUILD_FOR_WIN | 120 #ifdef SK_BUILD_FOR_WIN |
| (...skipping 22 matching lines...) Expand all Loading... |
| 92 "\t\tsrgb\t\t\tsRGB gamut.\n" | 143 "\t\tsrgb\t\t\tsRGB gamut.\n" |
| 93 "\t\twide\t\t\tWide Gamut RGB.\n" | 144 "\t\twide\t\t\tWide Gamut RGB.\n" |
| 94 "\tdit\ttype: bool\tdefault: false.\n" | 145 "\tdit\ttype: bool\tdefault: false.\n" |
| 95 "\t Use device independent text.\n" | 146 "\t Use device independent text.\n" |
| 96 "\tnvpr\ttype: bool\tdefault: false.\n" | 147 "\tnvpr\ttype: bool\tdefault: false.\n" |
| 97 "\t Use NV_path_rendering OpenGL and OpenGL ES extension.\n" | 148 "\t Use NV_path_rendering OpenGL and OpenGL ES extension.\n" |
| 98 "\tsamples\ttype: int\tdefault: 0.\n" | 149 "\tsamples\ttype: int\tdefault: 0.\n" |
| 99 "\t Use multisampling with N samples.\n" | 150 "\t Use multisampling with N samples.\n" |
| 100 "\n" | 151 "\n" |
| 101 "Predefined configs:\n\n" | 152 "Predefined configs:\n\n" |
| 102 "\tgpu \t= gpu()\n" | 153 // Help text for pre-defined configs is auto-generated from gPredefinedConfi
gs |
| 103 "\tgl \t= gpu(api=gl)\n" | |
| 104 "\tmsaa4 \t= gpu(samples=4)\n" | |
| 105 "\tglmsaa4 \t= gpu(api=gl,samples=4)\n" | |
| 106 "\tmsaa16 \t= gpu(samples=16)\n" | |
| 107 "\tnvpr4 \t= gpu(nvpr=true,samples=4)\n" | |
| 108 "\tglnvpr4 \t= gpu(api=gl,nvpr=true,samples=4)\n" | |
| 109 "\tnvpr16 \t= gpu(nvpr=true,samples=16)\n" | |
| 110 "\tnvprdit4 \t= gpu(nvpr=true,samples=4,dit=true)\n" | |
| 111 "\tglnvprdit4\t= gpu(api=gl,nvpr=true,samples=4,dit=true)\n" | |
| 112 "\tnvprdit16 \t= gpu(nvpr=true,samples=16,dit=true)\n" | |
| 113 "\tgpuf16 \t= gpu(color=f16)\n" | |
| 114 "\tgpusrgb \t= gpu(color=srgb)\n" | |
| 115 "\tglsrgb \t= gpu(api=gl,color=srgb)\n" | |
| 116 "\tglwide \t= gpu(api=gl,color=f16_wide)\n" | |
| 117 "\tgpudft \t= gpu(dit=true)\n" | |
| 118 "\tgpudebug \t= gpu(api=debug)\n" | |
| 119 "\tgpunull \t= gpu(api=null)\n" | |
| 120 "\tdebug \t= gpu(api=debug)\n" | |
| 121 "\tnullgpu \t= gpu(api=null)\n" | |
| 122 #if SK_ANGLE | |
| 123 #ifdef SK_BUILD_FOR_WIN | |
| 124 "\tangle \t= gpu(api=angle)\n" | |
| 125 #endif | |
| 126 "\tangle-gl \t= gpu(api=angle-gl)\n" | |
| 127 #endif | |
| 128 #if SK_COMMAND_BUFFER | |
| 129 "\tcommandbuffer\t= gpu(api=commandbuffer)\n" | |
| 130 #endif | |
| 131 #if SK_MESA | |
| 132 "\tmesa \t= gpu(api=mesa)\n" | |
| 133 #endif | |
| 134 #ifdef SK_VULKAN | |
| 135 "\tvk \t= gpu(api=vulkan)\n" | |
| 136 "\tvksrgb \t= gpu(api=vulkan,color=srgb)\n" | |
| 137 "\tvkwide \t= gpu(api=vulkan,color=f16_wide)\n" | |
| 138 "\tvkmsaa4 \t= gpu(api=gl,samples=4)\n" | |
| 139 "\tvkmsaa16 \t= gpu(api=gl,samples=16)\n" | |
| 140 #endif | |
| 141 #endif | 154 #endif |
| 142 ; | 155 ; |
| 143 | 156 |
| 144 DEFINE_extended_string(config, defaultConfigs, configHelp, configExtendedHelp); | 157 static const char* config_extended_help_fn() { |
| 158 static SkString helpString; |
| 159 helpString.set(configExtendedHelp); |
| 160 for (const auto& config : gPredefinedConfigs) { |
| 161 helpString.appendf("\t%-10s\t= gpu(%s)\n", config.predefinedConfig, conf
ig.options); |
| 162 } |
| 163 return helpString.c_str(); |
| 164 } |
| 145 | 165 |
| 146 static const struct { | 166 DEFINE_extended_string(config, defaultConfigs, config_help_fn(), config_extended
_help_fn()); |
| 147 const char* predefinedConfig; | |
| 148 const char* backend; | |
| 149 const char* options; | |
| 150 } gPredefinedConfigs[] = { | |
| 151 #if SK_SUPPORT_GPU | |
| 152 { "gpu", "gpu", "" }, | |
| 153 { "gl", "gpu", "api=gl" }, | |
| 154 { "msaa4", "gpu", "samples=4" }, | |
| 155 { "glmsaa4", "gpu", "api=gl,samples=4" }, | |
| 156 { "msaa16", "gpu", "samples=16" }, | |
| 157 { "nvpr4", "gpu", "nvpr=true,samples=4" }, | |
| 158 { "glnvpr4", "gpu", "api=gl,nvpr=true,samples=4" }, | |
| 159 { "nvpr16", "gpu", "nvpr=true,samples=16" }, | |
| 160 { "nvprdit4", "gpu", "nvpr=true,samples=4,dit=true" }, | |
| 161 { "glnvprdit4", "gpu", "api=gl,nvpr=true,samples=4,dit=true" }, | |
| 162 { "nvprdit16", "gpu", "nvpr=true,samples=16,dit=true" }, | |
| 163 { "glinst", "gpu", "api=gl,inst=true" }, | |
| 164 { "glinst4", "gpu", "api=gl,inst=true,samples=4" }, | |
| 165 { "glinstdit4", "gpu", "api=gl,inst=true,samples=4,dit=true" }, | |
| 166 { "glinst16", "gpu", "api=gl,inst=true,samples=16" }, | |
| 167 { "glinstdit16", "gpu", "api=gl,inst=true,samples=16,dit=true" }, | |
| 168 { "esinst", "gpu", "api=gles,inst=true" }, | |
| 169 { "esinst4", "gpu", "api=gles,inst=true,samples=4" }, | |
| 170 { "esinstdit4", "gpu", "api=gles,inst=true,samples=4,dit=true" }, | |
| 171 { "gpuf16", "gpu", "color=f16" }, | |
| 172 { "gpusrgb", "gpu", "color=srgb" }, | |
| 173 { "glsrgb", "gpu", "api=gl,color=srgb" }, | |
| 174 { "glwide", "gpu", "api=gl,color=f16_wide" }, | |
| 175 { "gpudft", "gpu", "dit=true" }, | |
| 176 { "gpudebug", "gpu", "api=debug" }, | |
| 177 { "gpunull", "gpu", "api=null" }, | |
| 178 { "debug", "gpu", "api=debug" }, | |
| 179 { "nullgpu", "gpu", "api=null" } | |
| 180 #if SK_ANGLE | |
| 181 #ifdef SK_BUILD_FOR_WIN | |
| 182 , { "angle", "gpu", "api=angle" } | |
| 183 #endif | |
| 184 , { "angle-gl", "gpu", "api=angle-gl" } | |
| 185 #endif | |
| 186 #if SK_COMMAND_BUFFER | |
| 187 , { "commandbuffer", "gpu", "api=commandbuffer" } | |
| 188 #endif | |
| 189 #if SK_MESA | |
| 190 , { "mesa", "gpu", "api=mesa" } | |
| 191 #endif | |
| 192 #ifdef SK_VULKAN | |
| 193 , { "vk", "gpu", "api=vulkan" } | |
| 194 , { "vksrgb", "gpu", "api=vulkan,color=srgb" } | |
| 195 , { "vkwide", "gpu", "api=vulkan,color=f16_wide" } | |
| 196 , { "vkmsaa4", "gpu", "api=vulkan,samples=4" } | |
| 197 , { "vkmsaa16", "gpu", "api=vulkan,samples=16" } | |
| 198 #endif | |
| 199 | |
| 200 #else | |
| 201 { "", "", "" } | |
| 202 #endif | |
| 203 }; | |
| 204 | 167 |
| 205 SkCommandLineConfig::SkCommandLineConfig(const SkString& tag, const SkString& ba
ckend, | 168 SkCommandLineConfig::SkCommandLineConfig(const SkString& tag, const SkString& ba
ckend, |
| 206 const SkTArray<SkString>& viaParts) | 169 const SkTArray<SkString>& viaParts) |
| 207 : fTag(tag) | 170 : fTag(tag) |
| 208 , fBackend(backend) | 171 , fBackend(backend) |
| 209 , fViaParts(viaParts) { | 172 , fViaParts(viaParts) { |
| 210 } | 173 } |
| 211 SkCommandLineConfig::~SkCommandLineConfig() { | 174 SkCommandLineConfig::~SkCommandLineConfig() { |
| 212 } | 175 } |
| 213 | 176 |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 if (extendedBackend.equals("gpu")) { | 432 if (extendedBackend.equals("gpu")) { |
| 470 parsedConfig = parse_command_line_config_gpu(tag, vias, extendedOpti
ons); | 433 parsedConfig = parse_command_line_config_gpu(tag, vias, extendedOpti
ons); |
| 471 } | 434 } |
| 472 #endif | 435 #endif |
| 473 if (!parsedConfig) { | 436 if (!parsedConfig) { |
| 474 parsedConfig = new SkCommandLineConfig(tag, simpleBackend, vias); | 437 parsedConfig = new SkCommandLineConfig(tag, simpleBackend, vias); |
| 475 } | 438 } |
| 476 outResult->emplace_back(parsedConfig); | 439 outResult->emplace_back(parsedConfig); |
| 477 } | 440 } |
| 478 } | 441 } |
| OLD | NEW |