csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright 2017 Google Inc. |
| 3 | * |
| 4 | * Use of this source code is governed by a BSD-style license that can be |
| 5 | * found in the LICENSE file. |
| 6 | */ |
| 7 | |
Chris Dalton | 040238b | 2017-12-18 14:22:34 -0700 | [diff] [blame] | 8 | #ifndef SK_COMMON_FLAGS_GPU_H |
| 9 | #define SK_COMMON_FLAGS_GPU_H |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 10 | |
Brian Osman | 195c05b | 2017-08-30 15:14:04 -0400 | [diff] [blame] | 11 | #include "GrTypesPriv.h" |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 12 | #include "SkCommandLineFlags.h" |
| 13 | #include "SkTypes.h" |
| 14 | |
Chris Dalton | 040238b | 2017-12-18 14:22:34 -0700 | [diff] [blame] | 15 | DECLARE_int32(gpuThreads); |
| 16 | DECLARE_bool(cachePathMasks); |
| 17 | DECLARE_bool(noGS); |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 18 | DECLARE_string(pr); |
Robert Phillips | cb2275b | 2018-08-07 08:34:38 -0400 | [diff] [blame] | 19 | DECLARE_bool(disableExplicitAlloc); |
Robert Phillips | b7a98ef | 2018-10-10 09:26:00 -0400 | [diff] [blame] | 20 | DECLARE_bool(reduceOpListSplitting); |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 21 | |
Brian Osman | 195c05b | 2017-08-30 15:14:04 -0400 | [diff] [blame] | 22 | inline GpuPathRenderers get_named_pathrenderers_flags(const char* name) { |
Chris Dalton | 9acfc6c | 2018-07-26 12:34:49 -0600 | [diff] [blame] | 23 | if (!strcmp(name, "none")) { |
| 24 | return GpuPathRenderers::kNone; |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 25 | } else if (!strcmp(name, "dashline")) { |
| 26 | return GpuPathRenderers::kDashLine; |
| 27 | } else if (!strcmp(name, "nvpr")) { |
| 28 | return GpuPathRenderers::kStencilAndCover; |
Chris Dalton | 9acfc6c | 2018-07-26 12:34:49 -0600 | [diff] [blame] | 29 | } else if (!strcmp(name, "ccpr")) { |
| 30 | return GpuPathRenderers::kCoverageCounting; |
| 31 | } else if (!strcmp(name, "aahairline")) { |
| 32 | return GpuPathRenderers::kAAHairline; |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 33 | } else if (!strcmp(name, "aaconvex")) { |
| 34 | return GpuPathRenderers::kAAConvex; |
| 35 | } else if (!strcmp(name, "aalinearizing")) { |
| 36 | return GpuPathRenderers::kAALinearizing; |
Jim Van Verth | 8301046 | 2017-03-16 08:45:39 -0400 | [diff] [blame] | 37 | } else if (!strcmp(name, "small")) { |
| 38 | return GpuPathRenderers::kSmall; |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 39 | } else if (!strcmp(name, "tess")) { |
Brian Osman | 8a9de3d | 2017-03-01 14:59:05 -0500 | [diff] [blame] | 40 | return GpuPathRenderers::kTessellating; |
Chris Dalton | 9acfc6c | 2018-07-26 12:34:49 -0600 | [diff] [blame] | 41 | } else if (!strcmp(name, "all")) { |
| 42 | return GpuPathRenderers::kAll; |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 43 | } |
| 44 | SK_ABORT(SkStringPrintf("error: unknown named path renderer \"%s\"\n", name).c_str()); |
| 45 | return GpuPathRenderers::kNone; |
| 46 | } |
| 47 | |
Brian Osman | 195c05b | 2017-08-30 15:14:04 -0400 | [diff] [blame] | 48 | inline GpuPathRenderers CollectGpuPathRenderersFromFlags() { |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 49 | if (FLAGS_pr.isEmpty()) { |
Chris Dalton | 9acfc6c | 2018-07-26 12:34:49 -0600 | [diff] [blame] | 50 | return GpuPathRenderers::kAll; |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 51 | } |
Chris Dalton | 9acfc6c | 2018-07-26 12:34:49 -0600 | [diff] [blame] | 52 | GpuPathRenderers gpuPathRenderers = '~' == FLAGS_pr[0][0] |
| 53 | ? GpuPathRenderers::kAll : GpuPathRenderers::kNone; |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 54 | for (int i = 0; i < FLAGS_pr.count(); ++i) { |
| 55 | const char* name = FLAGS_pr[i]; |
| 56 | if (name[0] == '~') { |
| 57 | gpuPathRenderers &= ~get_named_pathrenderers_flags(&name[1]); |
| 58 | } else { |
| 59 | gpuPathRenderers |= get_named_pathrenderers_flags(name); |
| 60 | } |
| 61 | } |
| 62 | return gpuPathRenderers; |
| 63 | } |
| 64 | |
Chris Dalton | 040238b | 2017-12-18 14:22:34 -0700 | [diff] [blame] | 65 | /** |
| 66 | * Helper to set GrContextOptions from common GPU flags. |
| 67 | */ |
| 68 | void SetCtxOptionsFromCommonFlags(struct GrContextOptions*); |
| 69 | |
csmartdalton | 008b9d8 | 2017-02-22 12:00:42 -0700 | [diff] [blame] | 70 | #endif |