aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/flags/SkCommonFlagsGpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/flags/SkCommonFlagsGpu.h')
-rw-r--r--tools/flags/SkCommonFlagsGpu.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/tools/flags/SkCommonFlagsGpu.h b/tools/flags/SkCommonFlagsGpu.h
new file mode 100644
index 0000000000..780a737391
--- /dev/null
+++ b/tools/flags/SkCommonFlagsGpu.h
@@ -0,0 +1,76 @@
+/*
+ * 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_GPU_H
+#define SK_COMMON_FLAGS_GPU_H
+
+#if SK_SUPPORT_GPU
+
+#include "GrTypesPriv.h"
+#include "SkCommandLineFlags.h"
+#include "SkTypes.h"
+
+DECLARE_int32(gpuThreads);
+DECLARE_bool(cachePathMasks);
+DECLARE_bool(noGS);
+DECLARE_string(pr);
+
+inline GpuPathRenderers get_named_pathrenderers_flags(const char* name) {
+ if (!strcmp(name, "all")) {
+ return GpuPathRenderers::kAll;
+ } else if (!strcmp(name, "default")) {
+ return GpuPathRenderers::kDefault;
+ } 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, "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, "none")) {
+ return GpuPathRenderers::kNone;
+ }
+ SK_ABORT(SkStringPrintf("error: unknown named path renderer \"%s\"\n", name).c_str());
+ return GpuPathRenderers::kNone;
+}
+
+inline GpuPathRenderers CollectGpuPathRenderersFromFlags() {
+ if (FLAGS_pr.isEmpty()) {
+ return GpuPathRenderers::kDefault;
+ }
+ GpuPathRenderers gpuPathRenderers = '~' == FLAGS_pr[0][0] ?
+ GpuPathRenderers::kDefault : 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;
+}
+
+class SkExecutor* GpuExecutorForTools();
+
+/**
+ * Helper to set GrContextOptions from common GPU flags.
+ */
+void SetCtxOptionsFromCommonFlags(struct GrContextOptions*);
+
+#endif // SK_SUPPORT_GPU
+
+#endif