| 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 | 9 |
| 10 #include <stdlib.h> | 10 #include <stdlib.h> |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 , fBackend(backend) | 185 , fBackend(backend) |
| 186 , fViaParts(viaParts) { | 186 , fViaParts(viaParts) { |
| 187 } | 187 } |
| 188 SkCommandLineConfig::~SkCommandLineConfig() { | 188 SkCommandLineConfig::~SkCommandLineConfig() { |
| 189 } | 189 } |
| 190 | 190 |
| 191 #if SK_SUPPORT_GPU | 191 #if SK_SUPPORT_GPU |
| 192 SkCommandLineConfigGpu::SkCommandLineConfigGpu( | 192 SkCommandLineConfigGpu::SkCommandLineConfigGpu( |
| 193 const SkString& tag, const SkTArray<SkString>& viaParts, | 193 const SkString& tag, const SkTArray<SkString>& viaParts, |
| 194 ContextType contextType, bool useNVPR, bool useDIText, int samples, | 194 ContextType contextType, bool useNVPR, bool useDIText, int samples, |
| 195 SkColorType colorType, sk_sp<SkColorSpace> colorSpace) | 195 SkColorType colorType, SkColorProfileType profileType) |
| 196 : SkCommandLineConfig(tag, SkString("gpu"), viaParts) | 196 : SkCommandLineConfig(tag, SkString("gpu"), viaParts) |
| 197 , fContextType(contextType) | 197 , fContextType(contextType) |
| 198 , fUseNVPR(useNVPR) | 198 , fUseNVPR(useNVPR) |
| 199 , fUseDIText(useDIText) | 199 , fUseDIText(useDIText) |
| 200 , fSamples(samples) | 200 , fSamples(samples) |
| 201 , fColorType(colorType) | 201 , fColorType(colorType) |
| 202 , fColorSpace(std::move(colorSpace)) { | 202 , fProfileType(profileType) { |
| 203 } | 203 } |
| 204 static bool parse_option_int(const SkString& value, int* outInt) { | 204 static bool parse_option_int(const SkString& value, int* outInt) { |
| 205 if (value.isEmpty()) { | 205 if (value.isEmpty()) { |
| 206 return false; | 206 return false; |
| 207 } | 207 } |
| 208 char* endptr = nullptr; | 208 char* endptr = nullptr; |
| 209 long intValue = strtol(value.c_str(), &endptr, 10); | 209 long intValue = strtol(value.c_str(), &endptr, 10); |
| 210 if (*endptr != '\0') { | 210 if (*endptr != '\0') { |
| 211 return false; | 211 return false; |
| 212 } | 212 } |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 #ifdef SK_VULKAN | 269 #ifdef SK_VULKAN |
| 270 if (value.equals("vulkan")) { | 270 if (value.equals("vulkan")) { |
| 271 *outContextType = GrContextFactory::kVulkan_ContextType; | 271 *outContextType = GrContextFactory::kVulkan_ContextType; |
| 272 return true; | 272 return true; |
| 273 } | 273 } |
| 274 #endif | 274 #endif |
| 275 return false; | 275 return false; |
| 276 } | 276 } |
| 277 static bool parse_option_gpu_color(const SkString& value, | 277 static bool parse_option_gpu_color(const SkString& value, |
| 278 SkColorType* outColorType, | 278 SkColorType* outColorType, |
| 279 sk_sp<SkColorSpace>* outColorSpace) { | 279 SkColorProfileType* outProfileType) { |
| 280 if (value.equals("8888")) { | 280 if (value.equals("8888")) { |
| 281 *outColorType = kN32_SkColorType; | 281 *outColorType = kN32_SkColorType; |
| 282 *outColorSpace = nullptr; | 282 *outProfileType = kLinear_SkColorProfileType; |
| 283 return true; | 283 return true; |
| 284 } | 284 } |
| 285 if (value.equals("f16")) { | 285 if (value.equals("f16")) { |
| 286 *outColorType = kRGBA_F16_SkColorType; | 286 *outColorType = kRGBA_F16_SkColorType; |
| 287 *outColorSpace = nullptr; | 287 *outProfileType = kLinear_SkColorProfileType; |
| 288 return true; | 288 return true; |
| 289 } | 289 } |
| 290 if (value.equals("srgb")) { | 290 if (value.equals("srgb")) { |
| 291 *outColorType = kN32_SkColorType; | 291 *outColorType = kN32_SkColorType; |
| 292 *outColorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); | 292 *outProfileType = kSRGB_SkColorProfileType; |
| 293 return true; | 293 return true; |
| 294 } | 294 } |
| 295 return false; | 295 return false; |
| 296 } | 296 } |
| 297 | 297 |
| 298 SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& tag, | 298 SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& tag, |
| 299 const SkTArray<SkString>&
vias, | 299 const SkTArray<SkString>&
vias, |
| 300 const SkString& options) { | 300 const SkString& options) { |
| 301 // Defaults for GPU backend. | 301 // Defaults for GPU backend. |
| 302 bool seenAPI = false; | 302 bool seenAPI = false; |
| 303 SkCommandLineConfigGpu::ContextType contextType = GrContextFactory::kNativeG
L_ContextType; | 303 SkCommandLineConfigGpu::ContextType contextType = GrContextFactory::kNativeG
L_ContextType; |
| 304 bool seenUseNVPR = false; | 304 bool seenUseNVPR = false; |
| 305 bool useNVPR = false; | 305 bool useNVPR = false; |
| 306 bool seenUseDIText =false; | 306 bool seenUseDIText =false; |
| 307 bool useDIText = false; | 307 bool useDIText = false; |
| 308 bool seenSamples = false; | 308 bool seenSamples = false; |
| 309 int samples = 0; | 309 int samples = 0; |
| 310 bool seenColor = false; | 310 bool seenColor = false; |
| 311 SkColorType colorType = kN32_SkColorType; | 311 SkColorType colorType = kN32_SkColorType; |
| 312 sk_sp<SkColorSpace> colorSpace = nullptr; | 312 SkColorProfileType profileType = kLinear_SkColorProfileType; |
| 313 | 313 |
| 314 SkTArray<SkString> optionParts; | 314 SkTArray<SkString> optionParts; |
| 315 SkStrSplit(options.c_str(), ",", kStrict_SkStrSplitMode, &optionParts); | 315 SkStrSplit(options.c_str(), ",", kStrict_SkStrSplitMode, &optionParts); |
| 316 for (int i = 0; i < optionParts.count(); ++i) { | 316 for (int i = 0; i < optionParts.count(); ++i) { |
| 317 SkTArray<SkString> keyValueParts; | 317 SkTArray<SkString> keyValueParts; |
| 318 SkStrSplit(optionParts[i].c_str(), "=", kStrict_SkStrSplitMode, &keyValu
eParts); | 318 SkStrSplit(optionParts[i].c_str(), "=", kStrict_SkStrSplitMode, &keyValu
eParts); |
| 319 if (keyValueParts.count() != 2) { | 319 if (keyValueParts.count() != 2) { |
| 320 return nullptr; | 320 return nullptr; |
| 321 } | 321 } |
| 322 const SkString& key = keyValueParts[0]; | 322 const SkString& key = keyValueParts[0]; |
| 323 const SkString& value = keyValueParts[1]; | 323 const SkString& value = keyValueParts[1]; |
| 324 bool valueOk = false; | 324 bool valueOk = false; |
| 325 if (key.equals("api") && !seenAPI) { | 325 if (key.equals("api") && !seenAPI) { |
| 326 valueOk = parse_option_gpu_api(value, &contextType); | 326 valueOk = parse_option_gpu_api(value, &contextType); |
| 327 seenAPI = true; | 327 seenAPI = true; |
| 328 } else if (key.equals("nvpr") && !seenUseNVPR) { | 328 } else if (key.equals("nvpr") && !seenUseNVPR) { |
| 329 valueOk = parse_option_bool(value, &useNVPR); | 329 valueOk = parse_option_bool(value, &useNVPR); |
| 330 seenUseNVPR = true; | 330 seenUseNVPR = true; |
| 331 } else if (key.equals("dit") && !seenUseDIText) { | 331 } else if (key.equals("dit") && !seenUseDIText) { |
| 332 valueOk = parse_option_bool(value, &useDIText); | 332 valueOk = parse_option_bool(value, &useDIText); |
| 333 seenUseDIText = true; | 333 seenUseDIText = true; |
| 334 } else if (key.equals("samples") && !seenSamples) { | 334 } else if (key.equals("samples") && !seenSamples) { |
| 335 valueOk = parse_option_int(value, &samples); | 335 valueOk = parse_option_int(value, &samples); |
| 336 seenSamples = true; | 336 seenSamples = true; |
| 337 } else if (key.equals("color") && !seenColor) { | 337 } else if (key.equals("color") && !seenColor) { |
| 338 valueOk = parse_option_gpu_color(value, &colorType, &colorSpace); | 338 valueOk = parse_option_gpu_color(value, &colorType, &profileType); |
| 339 seenColor = true; | 339 seenColor = true; |
| 340 } | 340 } |
| 341 if (!valueOk) { | 341 if (!valueOk) { |
| 342 return nullptr; | 342 return nullptr; |
| 343 } | 343 } |
| 344 } | 344 } |
| 345 return new SkCommandLineConfigGpu(tag, vias, contextType, useNVPR, useDIText
, samples, | 345 return new SkCommandLineConfigGpu(tag, vias, contextType, useNVPR, useDIText
, samples, |
| 346 colorType, colorSpace); | 346 colorType, profileType); |
| 347 } | 347 } |
| 348 #endif | 348 #endif |
| 349 | 349 |
| 350 void ParseConfigs(const SkCommandLineFlags::StringArray& configs, | 350 void ParseConfigs(const SkCommandLineFlags::StringArray& configs, |
| 351 SkCommandLineConfigArray* outResult) { | 351 SkCommandLineConfigArray* outResult) { |
| 352 outResult->reset(); | 352 outResult->reset(); |
| 353 for (int i = 0; i < configs.count(); ++i) { | 353 for (int i = 0; i < configs.count(); ++i) { |
| 354 SkString extendedBackend; | 354 SkString extendedBackend; |
| 355 SkString extendedOptions; | 355 SkString extendedOptions; |
| 356 SkString simpleBackend; | 356 SkString simpleBackend; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 if (extendedBackend.equals("gpu")) { | 402 if (extendedBackend.equals("gpu")) { |
| 403 parsedConfig = parse_command_line_config_gpu(tag, vias, extendedOpti
ons); | 403 parsedConfig = parse_command_line_config_gpu(tag, vias, extendedOpti
ons); |
| 404 } | 404 } |
| 405 #endif | 405 #endif |
| 406 if (!parsedConfig) { | 406 if (!parsedConfig) { |
| 407 parsedConfig = new SkCommandLineConfig(tag, simpleBackend, vias); | 407 parsedConfig = new SkCommandLineConfig(tag, simpleBackend, vias); |
| 408 } | 408 } |
| 409 outResult->emplace_back(parsedConfig); | 409 outResult->emplace_back(parsedConfig); |
| 410 } | 410 } |
| 411 } | 411 } |
| OLD | NEW |