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 8#ifndef SK_COMMON_FLAGS_GPU_H 9#define SK_COMMON_FLAGS_GPU_H 10 11#if SK_SUPPORT_GPU 12 13#include "GrTypesPriv.h" 14#include "SkCommandLineFlags.h" 15#include "SkTypes.h" 16 17DECLARE_int32(gpuThreads); 18DECLARE_bool(cachePathMasks); 19DECLARE_bool(noGS); 20DECLARE_string(pr); 21 22inline GpuPathRenderers get_named_pathrenderers_flags(const char* name) { 23 if (!strcmp(name, "all")) { 24 return GpuPathRenderers::kAll; 25 } else if (!strcmp(name, "default")) { 26 return GpuPathRenderers::kDefault; 27 } else if (!strcmp(name, "dashline")) { 28 return GpuPathRenderers::kDashLine; 29 } else if (!strcmp(name, "nvpr")) { 30 return GpuPathRenderers::kStencilAndCover; 31 } else if (!strcmp(name, "msaa")) { 32 return GpuPathRenderers::kMSAA; 33 } else if (!strcmp(name, "aaconvex")) { 34 return GpuPathRenderers::kAAConvex; 35 } else if (!strcmp(name, "aalinearizing")) { 36 return GpuPathRenderers::kAALinearizing; 37 } else if (!strcmp(name, "small")) { 38 return GpuPathRenderers::kSmall; 39 } else if (!strcmp(name, "ccpr")) { 40 return GpuPathRenderers::kCoverageCounting; 41 } else if (!strcmp(name, "tess")) { 42 return GpuPathRenderers::kTessellating; 43 } else if (!strcmp(name, "none")) { 44 return GpuPathRenderers::kNone; 45 } 46 SK_ABORT(SkStringPrintf("error: unknown named path renderer \"%s\"\n", name).c_str()); 47 return GpuPathRenderers::kNone; 48} 49 50inline GpuPathRenderers CollectGpuPathRenderersFromFlags() { 51 if (FLAGS_pr.isEmpty()) { 52 return GpuPathRenderers::kDefault; 53 } 54 GpuPathRenderers gpuPathRenderers = '~' == FLAGS_pr[0][0] ? 55 GpuPathRenderers::kDefault : GpuPathRenderers::kNone; 56 for (int i = 0; i < FLAGS_pr.count(); ++i) { 57 const char* name = FLAGS_pr[i]; 58 if (name[0] == '~') { 59 gpuPathRenderers &= ~get_named_pathrenderers_flags(&name[1]); 60 } else { 61 gpuPathRenderers |= get_named_pathrenderers_flags(name); 62 } 63 } 64 return gpuPathRenderers; 65} 66 67/** 68 * Helper to set GrContextOptions from common GPU flags. 69 */ 70void SetCtxOptionsFromCommonFlags(struct GrContextOptions*); 71 72#endif // SK_SUPPORT_GPU 73 74#endif 75