| 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 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 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 char configHelp[] = |
| 30 "Options: 565 8888 debug gpu gl gpudebug gpudft gpunull " | 30 "Options: 565 8888 debug gpu gl gpudebug gpudft gpunull " |
| 31 "msaa16 msaa4 glmsaa4 gpuf16 gpusrgb glsrgb nonrendering null nullgpu " | 31 "msaa16 msaa4 glmsaa4 gpuf16 gpusrgb glsrgb glwide nonrendering null nullgpu
" |
| 32 "nvpr16 nvpr4 nvprdit16 nvprdit4 glnvpr4 glnvprdit4 pdf skp svg xps" | 32 "nvpr16 nvpr4 nvprdit16 nvprdit4 glnvpr4 glnvprdit4 pdf skp svg xps " |
| 33 "glinst glinst4 glinstdit4 glinst16 glinstdit16 esinst esinst4 esinsdit4" | 33 "glinst glinst4 glinstdit4 glinst16 glinstdit16 esinst esinst4 esinsdit4" |
| 34 #if SK_ANGLE | 34 #if SK_ANGLE |
| 35 #ifdef SK_BUILD_FOR_WIN | 35 #ifdef SK_BUILD_FOR_WIN |
| 36 " angle" | 36 " angle" |
| 37 #endif | 37 #endif |
| 38 " angle-gl" | 38 " angle-gl" |
| 39 #endif | 39 #endif |
| 40 #if SK_COMMAND_BUFFER | 40 #if SK_COMMAND_BUFFER |
| 41 " commandbuffer" | 41 " commandbuffer" |
| 42 #endif | 42 #endif |
| 43 #if SK_MESA | 43 #if SK_MESA |
| 44 " mesa" | 44 " mesa" |
| 45 #endif | 45 #endif |
| 46 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK | 46 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK |
| 47 " hwui" | 47 " hwui" |
| 48 #endif | 48 #endif |
| 49 #ifdef SK_VULKAN | 49 #ifdef SK_VULKAN |
| 50 " vk vksrgb" | 50 " vk vksrgb vkwide" |
| 51 #endif | 51 #endif |
| 52 " or use extended form 'backend(option=value,...)'.\n"; | 52 " or use extended form 'backend(option=value,...)'.\n"; |
| 53 | 53 |
| 54 static const char configExtendedHelp[] = | 54 static const char configExtendedHelp[] = |
| 55 "Extended form: 'backend(option=value,...)'\n\n" | 55 "Extended form: 'backend(option=value,...)'\n\n" |
| 56 "Possible backends and options:\n" | 56 "Possible backends and options:\n" |
| 57 #if SK_SUPPORT_GPU | 57 #if SK_SUPPORT_GPU |
| 58 "\n" | 58 "\n" |
| 59 "gpu(api=string,color=string,dit=bool,nvpr=bool,inst=bool,samples=int)\tGPU
backend\n" | 59 "gpu(api=string,color=string,dit=bool,nvpr=bool,inst=bool,samples=int)\tGPU
backend\n" |
| 60 "\tapi\ttype: string\tdefault: native.\n" | 60 "\tapi\ttype: string\tdefault: native.\n" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 77 #if SK_MESA | 77 #if SK_MESA |
| 78 "\t\tmesa\t\t\tUse MESA.\n" | 78 "\t\tmesa\t\t\tUse MESA.\n" |
| 79 #endif | 79 #endif |
| 80 #ifdef SK_VULKAN | 80 #ifdef SK_VULKAN |
| 81 "\t\tvulkan\t\t\tUse Vulkan.\n" | 81 "\t\tvulkan\t\t\tUse Vulkan.\n" |
| 82 #endif | 82 #endif |
| 83 "\tcolor\ttype: string\tdefault: 8888.\n" | 83 "\tcolor\ttype: string\tdefault: 8888.\n" |
| 84 "\t Select framebuffer color format.\n" | 84 "\t Select framebuffer color format.\n" |
| 85 "\t Options:\n" | 85 "\t Options:\n" |
| 86 "\t\t8888\t\t\tLinear 8888.\n" | 86 "\t\t8888\t\t\tLinear 8888.\n" |
| 87 "\t\tf16 \t\t\tLinear 16-bit floating point.\n" | 87 "\t\tf16{_gamut}\t\tLinear 16-bit floating point.\n" |
| 88 "\t\tsrgb\t\t\tsRGB 8888.\n" | 88 "\t\tsrgb{_gamut}\t\tsRGB 8888.\n" |
| 89 "\t gamut\ttype: string\tdefault: srgb.\n" |
| 90 "\t Select color gamut for f16 or sRGB format buffers.\n" |
| 91 "\t Options:\n" |
| 92 "\t\tsrgb\t\t\tsRGB gamut.\n" |
| 93 "\t\twide\t\t\tWide Gamut RGB.\n" |
| 89 "\tdit\ttype: bool\tdefault: false.\n" | 94 "\tdit\ttype: bool\tdefault: false.\n" |
| 90 "\t Use device independent text.\n" | 95 "\t Use device independent text.\n" |
| 91 "\tnvpr\ttype: bool\tdefault: false.\n" | 96 "\tnvpr\ttype: bool\tdefault: false.\n" |
| 92 "\t Use NV_path_rendering OpenGL and OpenGL ES extension.\n" | 97 "\t Use NV_path_rendering OpenGL and OpenGL ES extension.\n" |
| 93 "\tsamples\ttype: int\tdefault: 0.\n" | 98 "\tsamples\ttype: int\tdefault: 0.\n" |
| 94 "\t Use multisampling with N samples.\n" | 99 "\t Use multisampling with N samples.\n" |
| 95 "\n" | 100 "\n" |
| 96 "Predefined configs:\n\n" | 101 "Predefined configs:\n\n" |
| 97 "\tgpu \t= gpu()\n" | 102 "\tgpu \t= gpu()\n" |
| 98 "\tgl \t= gpu(api=gl)\n" | 103 "\tgl \t= gpu(api=gl)\n" |
| 99 "\tmsaa4 \t= gpu(samples=4)\n" | 104 "\tmsaa4 \t= gpu(samples=4)\n" |
| 100 "\tglmsaa4 \t= gpu(api=gl,samples=4)\n" | 105 "\tglmsaa4 \t= gpu(api=gl,samples=4)\n" |
| 101 "\tmsaa16 \t= gpu(samples=16)\n" | 106 "\tmsaa16 \t= gpu(samples=16)\n" |
| 102 "\tnvpr4 \t= gpu(nvpr=true,samples=4)\n" | 107 "\tnvpr4 \t= gpu(nvpr=true,samples=4)\n" |
| 103 "\tglnvpr4 \t= gpu(api=gl,nvpr=true,samples=4)\n" | 108 "\tglnvpr4 \t= gpu(api=gl,nvpr=true,samples=4)\n" |
| 104 "\tnvpr16 \t= gpu(nvpr=true,samples=16)\n" | 109 "\tnvpr16 \t= gpu(nvpr=true,samples=16)\n" |
| 105 "\tnvprdit4 \t= gpu(nvpr=true,samples=4,dit=true)\n" | 110 "\tnvprdit4 \t= gpu(nvpr=true,samples=4,dit=true)\n" |
| 106 "\tglnvprdit4\t= gpu(api=gl,nvpr=true,samples=4,dit=true)\n" | 111 "\tglnvprdit4\t= gpu(api=gl,nvpr=true,samples=4,dit=true)\n" |
| 107 "\tnvprdit16 \t= gpu(nvpr=true,samples=16,dit=true)\n" | 112 "\tnvprdit16 \t= gpu(nvpr=true,samples=16,dit=true)\n" |
| 108 "\tgpuf16 \t= gpu(color=f16)\n" | 113 "\tgpuf16 \t= gpu(color=f16)\n" |
| 109 "\tgpusrgb \t= gpu(color=srgb)\n" | 114 "\tgpusrgb \t= gpu(color=srgb)\n" |
| 110 "\tglsrgb \t= gpu(api=gl,color=srgb)\n" | 115 "\tglsrgb \t= gpu(api=gl,color=srgb)\n" |
| 116 "\tglwide \t= gpu(api=gl,color=f16_wide)\n" |
| 111 "\tgpudft \t= gpu(dit=true)\n" | 117 "\tgpudft \t= gpu(dit=true)\n" |
| 112 "\tgpudebug \t= gpu(api=debug)\n" | 118 "\tgpudebug \t= gpu(api=debug)\n" |
| 113 "\tgpunull \t= gpu(api=null)\n" | 119 "\tgpunull \t= gpu(api=null)\n" |
| 114 "\tdebug \t= gpu(api=debug)\n" | 120 "\tdebug \t= gpu(api=debug)\n" |
| 115 "\tnullgpu \t= gpu(api=null)\n" | 121 "\tnullgpu \t= gpu(api=null)\n" |
| 116 #if SK_ANGLE | 122 #if SK_ANGLE |
| 117 #ifdef SK_BUILD_FOR_WIN | 123 #ifdef SK_BUILD_FOR_WIN |
| 118 "\tangle \t= gpu(api=angle)\n" | 124 "\tangle \t= gpu(api=angle)\n" |
| 119 #endif | 125 #endif |
| 120 "\tangle-gl \t= gpu(api=angle-gl)\n" | 126 "\tangle-gl \t= gpu(api=angle-gl)\n" |
| 121 #endif | 127 #endif |
| 122 #if SK_COMMAND_BUFFER | 128 #if SK_COMMAND_BUFFER |
| 123 "\tcommandbuffer\t= gpu(api=commandbuffer)\n" | 129 "\tcommandbuffer\t= gpu(api=commandbuffer)\n" |
| 124 #endif | 130 #endif |
| 125 #if SK_MESA | 131 #if SK_MESA |
| 126 "\tmesa \t= gpu(api=mesa)\n" | 132 "\tmesa \t= gpu(api=mesa)\n" |
| 127 #endif | 133 #endif |
| 128 #ifdef SK_VULKAN | 134 #ifdef SK_VULKAN |
| 129 "\tvk \t= gpu(api=vulkan)\n" | 135 "\tvk \t= gpu(api=vulkan)\n" |
| 130 "\tvksrgb \t= gpu(api=vulkan,color=srgb)\n" | 136 "\tvksrgb \t= gpu(api=vulkan,color=srgb)\n" |
| 137 "\tvkwide \t= gpu(api=vulkan,color=f16_wide)\n" |
| 131 "\tvkmsaa4 \t= gpu(api=gl,samples=4)\n" | 138 "\tvkmsaa4 \t= gpu(api=gl,samples=4)\n" |
| 132 "\tvkmsaa16 \t= gpu(api=gl,samples=16)\n" | 139 "\tvkmsaa16 \t= gpu(api=gl,samples=16)\n" |
| 133 #endif | 140 #endif |
| 134 #endif | 141 #endif |
| 135 ; | 142 ; |
| 136 | 143 |
| 137 DEFINE_extended_string(config, defaultConfigs, configHelp, configExtendedHelp); | 144 DEFINE_extended_string(config, defaultConfigs, configHelp, configExtendedHelp); |
| 138 | 145 |
| 139 static const struct { | 146 static const struct { |
| 140 const char* predefinedConfig; | 147 const char* predefinedConfig; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 157 { "glinst4", "gpu", "api=gl,inst=true,samples=4" }, | 164 { "glinst4", "gpu", "api=gl,inst=true,samples=4" }, |
| 158 { "glinstdit4", "gpu", "api=gl,inst=true,samples=4,dit=true" }, | 165 { "glinstdit4", "gpu", "api=gl,inst=true,samples=4,dit=true" }, |
| 159 { "glinst16", "gpu", "api=gl,inst=true,samples=16" }, | 166 { "glinst16", "gpu", "api=gl,inst=true,samples=16" }, |
| 160 { "glinstdit16", "gpu", "api=gl,inst=true,samples=16,dit=true" }, | 167 { "glinstdit16", "gpu", "api=gl,inst=true,samples=16,dit=true" }, |
| 161 { "esinst", "gpu", "api=gles,inst=true" }, | 168 { "esinst", "gpu", "api=gles,inst=true" }, |
| 162 { "esinst4", "gpu", "api=gles,inst=true,samples=4" }, | 169 { "esinst4", "gpu", "api=gles,inst=true,samples=4" }, |
| 163 { "esinstdit4", "gpu", "api=gles,inst=true,samples=4,dit=true" }, | 170 { "esinstdit4", "gpu", "api=gles,inst=true,samples=4,dit=true" }, |
| 164 { "gpuf16", "gpu", "color=f16" }, | 171 { "gpuf16", "gpu", "color=f16" }, |
| 165 { "gpusrgb", "gpu", "color=srgb" }, | 172 { "gpusrgb", "gpu", "color=srgb" }, |
| 166 { "glsrgb", "gpu", "api=gl,color=srgb" }, | 173 { "glsrgb", "gpu", "api=gl,color=srgb" }, |
| 174 { "glwide", "gpu", "api=gl,color=f16_wide" }, |
| 167 { "gpudft", "gpu", "dit=true" }, | 175 { "gpudft", "gpu", "dit=true" }, |
| 168 { "gpudebug", "gpu", "api=debug" }, | 176 { "gpudebug", "gpu", "api=debug" }, |
| 169 { "gpunull", "gpu", "api=null" }, | 177 { "gpunull", "gpu", "api=null" }, |
| 170 { "debug", "gpu", "api=debug" }, | 178 { "debug", "gpu", "api=debug" }, |
| 171 { "nullgpu", "gpu", "api=null" } | 179 { "nullgpu", "gpu", "api=null" } |
| 172 #if SK_ANGLE | 180 #if SK_ANGLE |
| 173 #ifdef SK_BUILD_FOR_WIN | 181 #ifdef SK_BUILD_FOR_WIN |
| 174 , { "angle", "gpu", "api=angle" } | 182 , { "angle", "gpu", "api=angle" } |
| 175 #endif | 183 #endif |
| 176 , { "angle-gl", "gpu", "api=angle-gl" } | 184 , { "angle-gl", "gpu", "api=angle-gl" } |
| 177 #endif | 185 #endif |
| 178 #if SK_COMMAND_BUFFER | 186 #if SK_COMMAND_BUFFER |
| 179 , { "commandbuffer", "gpu", "api=commandbuffer" } | 187 , { "commandbuffer", "gpu", "api=commandbuffer" } |
| 180 #endif | 188 #endif |
| 181 #if SK_MESA | 189 #if SK_MESA |
| 182 , { "mesa", "gpu", "api=mesa" } | 190 , { "mesa", "gpu", "api=mesa" } |
| 183 #endif | 191 #endif |
| 184 #ifdef SK_VULKAN | 192 #ifdef SK_VULKAN |
| 185 , { "vk", "gpu", "api=vulkan" } | 193 , { "vk", "gpu", "api=vulkan" } |
| 186 , { "vksrgb", "gpu", "api=vulkan,color=srgb" } | 194 , { "vksrgb", "gpu", "api=vulkan,color=srgb" } |
| 195 , { "vkwide", "gpu", "api=vulkan,color=f16_wide" } |
| 187 , { "vkmsaa4", "gpu", "api=vulkan,samples=4" } | 196 , { "vkmsaa4", "gpu", "api=vulkan,samples=4" } |
| 188 , { "vkmsaa16", "gpu", "api=vulkan,samples=16" } | 197 , { "vkmsaa16", "gpu", "api=vulkan,samples=16" } |
| 189 #endif | 198 #endif |
| 190 | 199 |
| 191 #else | 200 #else |
| 192 { "", "", "" } | 201 { "", "", "" } |
| 193 #endif | 202 #endif |
| 194 }; | 203 }; |
| 195 | 204 |
| 196 SkCommandLineConfig::SkCommandLineConfig(const SkString& tag, const SkString& ba
ckend, | 205 SkCommandLineConfig::SkCommandLineConfig(const SkString& tag, const SkString& ba
ckend, |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 return false; | 307 return false; |
| 299 } | 308 } |
| 300 static bool parse_option_gpu_color(const SkString& value, | 309 static bool parse_option_gpu_color(const SkString& value, |
| 301 SkColorType* outColorType, | 310 SkColorType* outColorType, |
| 302 sk_sp<SkColorSpace>* outColorSpace) { | 311 sk_sp<SkColorSpace>* outColorSpace) { |
| 303 if (value.equals("8888")) { | 312 if (value.equals("8888")) { |
| 304 *outColorType = kN32_SkColorType; | 313 *outColorType = kN32_SkColorType; |
| 305 *outColorSpace = nullptr; | 314 *outColorSpace = nullptr; |
| 306 return true; | 315 return true; |
| 307 } | 316 } |
| 308 if (value.equals("f16")) { | 317 |
| 318 SkTArray<SkString> commands; |
| 319 SkStrSplit(value.c_str(), "_", &commands); |
| 320 if (commands.count() < 1 || commands.count() > 2) { |
| 321 return false; |
| 322 } |
| 323 |
| 324 // First, figure out color gamut that we'll work in (default to sRGB) |
| 325 sk_sp<SkColorSpace> colorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_
Named); |
| 326 if (commands.count() == 2) { |
| 327 if (commands[1].equals("srgb")) { |
| 328 // sRGB gamut (which is our default) |
| 329 } else if (commands[1].equals("wide")) { |
| 330 // WideGamut RGB |
| 331 const float gWideGamutRGB_toXYZD50[]{ |
| 332 0.7161046f, 0.1009296f, 0.1471858f, // -> X |
| 333 0.2581874f, 0.7249378f, 0.0168748f, // -> Y |
| 334 0.0000000f, 0.0517813f, 0.7734287f, // -> Z |
| 335 }; |
| 336 SkMatrix44 wideGamutRGBMatrix(SkMatrix44::kUninitialized_Constructor
); |
| 337 wideGamutRGBMatrix.set3x3RowMajorf(gWideGamutRGB_toXYZD50); |
| 338 colorSpace = SkColorSpace::NewRGB(SkColorSpace::kSRGB_RenderTargetGa
mma, |
| 339 wideGamutRGBMatrix); |
| 340 } else { |
| 341 // Unknown color gamut |
| 342 return false; |
| 343 } |
| 344 } |
| 345 |
| 346 // Now pick a color type |
| 347 if (commands[0].equals("f16")) { |
| 309 *outColorType = kRGBA_F16_SkColorType; | 348 *outColorType = kRGBA_F16_SkColorType; |
| 310 *outColorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named)->make
LinearGamma(); | 349 *outColorSpace = colorSpace->makeLinearGamma(); |
| 311 return true; | 350 return true; |
| 312 } | 351 } |
| 313 if (value.equals("srgb")) { | 352 if (commands[0].equals("srgb")) { |
| 314 *outColorType = kN32_SkColorType; | 353 *outColorType = kN32_SkColorType; |
| 315 *outColorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); | 354 *outColorSpace = colorSpace; |
| 316 return true; | 355 return true; |
| 317 } | 356 } |
| 318 return false; | 357 return false; |
| 319 } | 358 } |
| 320 | 359 |
| 321 SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& tag, | 360 SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& tag, |
| 322 const SkTArray<SkString>&
vias, | 361 const SkTArray<SkString>&
vias, |
| 323 const SkString& options) { | 362 const SkString& options) { |
| 324 // Defaults for GPU backend. | 363 // Defaults for GPU backend. |
| 325 bool seenAPI = false; | 364 bool seenAPI = false; |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 if (extendedBackend.equals("gpu")) { | 469 if (extendedBackend.equals("gpu")) { |
| 431 parsedConfig = parse_command_line_config_gpu(tag, vias, extendedOpti
ons); | 470 parsedConfig = parse_command_line_config_gpu(tag, vias, extendedOpti
ons); |
| 432 } | 471 } |
| 433 #endif | 472 #endif |
| 434 if (!parsedConfig) { | 473 if (!parsedConfig) { |
| 435 parsedConfig = new SkCommandLineConfig(tag, simpleBackend, vias); | 474 parsedConfig = new SkCommandLineConfig(tag, simpleBackend, vias); |
| 436 } | 475 } |
| 437 outResult->emplace_back(parsedConfig); | 476 outResult->emplace_back(parsedConfig); |
| 438 } | 477 } |
| 439 } | 478 } |
| OLD | NEW |