You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.7 KiB
74 lines
2.7 KiB
/* |
|
* Copyright 2017 Google Inc. |
|
* |
|
* Use of this source code is governed by a BSD-style license that can be |
|
* found in the LICENSE file. |
|
*/ |
|
|
|
#ifndef SK_COMMON_FLAGS_PATH_RENDERER_H |
|
#define SK_COMMON_FLAGS_PATH_RENDERER_H |
|
|
|
#if SK_SUPPORT_GPU |
|
|
|
#include "GrContextOptions.h" |
|
#include "SkCommandLineFlags.h" |
|
#include "SkTypes.h" |
|
|
|
DECLARE_string(pr); |
|
|
|
#define DEFINE_pathrenderer_flag \ |
|
DEFINE_string(pr, "all", \ |
|
"Set of enabled gpu path renderers. Defined as a list of: " \ |
|
"[[~]all [~]dashline [~]nvpr [~]msaa [~]aahairline [~]aaconvex " \ |
|
"[~]aalinearizing [~]small [~]tess [~]grdefault]") |
|
|
|
inline GrContextOptions::GpuPathRenderers get_named_pathrenderers_flags(const char* name) { |
|
using GpuPathRenderers = GrContextOptions::GpuPathRenderers; |
|
if (!strcmp(name, "all")) { |
|
return GpuPathRenderers::kAll; |
|
} else if (!strcmp(name, "dashline")) { |
|
return GpuPathRenderers::kDashLine; |
|
} else if (!strcmp(name, "nvpr")) { |
|
return GpuPathRenderers::kStencilAndCover; |
|
} else if (!strcmp(name, "msaa")) { |
|
return GpuPathRenderers::kMSAA; |
|
} else if (!strcmp(name, "aahairline")) { |
|
return GpuPathRenderers::kAAHairline; |
|
} else if (!strcmp(name, "aaconvex")) { |
|
return GpuPathRenderers::kAAConvex; |
|
} else if (!strcmp(name, "aalinearizing")) { |
|
return GpuPathRenderers::kAALinearizing; |
|
} else if (!strcmp(name, "small")) { |
|
return GpuPathRenderers::kSmall; |
|
} else if (!strcmp(name, "ccpr")) { |
|
return GpuPathRenderers::kCoverageCounting; |
|
} else if (!strcmp(name, "tess")) { |
|
return GpuPathRenderers::kTessellating; |
|
} else if (!strcmp(name, "grdefault")) { |
|
return GpuPathRenderers::kDefault; |
|
} |
|
SK_ABORT(SkStringPrintf("error: unknown named path renderer \"%s\"\n", name).c_str()); |
|
return GpuPathRenderers::kNone; |
|
} |
|
|
|
inline GrContextOptions::GpuPathRenderers CollectGpuPathRenderersFromFlags() { |
|
using GpuPathRenderers = GrContextOptions::GpuPathRenderers; |
|
if (FLAGS_pr.isEmpty()) { |
|
return GpuPathRenderers::kAll; |
|
} |
|
GpuPathRenderers gpuPathRenderers = '~' == FLAGS_pr[0][0] ? |
|
GpuPathRenderers::kAll : GpuPathRenderers::kNone; |
|
for (int i = 0; i < FLAGS_pr.count(); ++i) { |
|
const char* name = FLAGS_pr[i]; |
|
if (name[0] == '~') { |
|
gpuPathRenderers &= ~get_named_pathrenderers_flags(&name[1]); |
|
} else { |
|
gpuPathRenderers |= get_named_pathrenderers_flags(name); |
|
} |
|
} |
|
return gpuPathRenderers; |
|
} |
|
|
|
#endif // SK_SUPPORT_GPU |
|
|
|
#endif
|
|
|