1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2017 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SK_COMMON_FLAGS_GPU_H 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SK_COMMON_FLAGS_GPU_H 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#if SK_SUPPORT_GPU 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrTypesPriv.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCommandLineFlags.h" 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkTypes.h" 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDECLARE_int32(gpuThreads); 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDECLARE_bool(cachePathMasks); 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDECLARE_bool(noGS); 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDECLARE_string(pr); 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotinline GpuPathRenderers get_named_pathrenderers_flags(const char* name) { 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (!strcmp(name, "all")) { 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kAll; 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "default")) { 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kDefault; 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "dashline")) { 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kDashLine; 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "nvpr")) { 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kStencilAndCover; 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "msaa")) { 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kMSAA; 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "aaconvex")) { 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kAAConvex; 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "aalinearizing")) { 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kAALinearizing; 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "small")) { 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kSmall; 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "ccpr")) { 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kCoverageCounting; 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "tess")) { 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kTessellating; 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else if (!strcmp(name, "none")) { 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kNone; 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_ABORT(SkStringPrintf("error: unknown named path renderer \"%s\"\n", name).c_str()); 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kNone; 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotinline GpuPathRenderers CollectGpuPathRenderersFromFlags() { 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (FLAGS_pr.isEmpty()) { 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return GpuPathRenderers::kDefault; 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GpuPathRenderers gpuPathRenderers = '~' == FLAGS_pr[0][0] ? 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GpuPathRenderers::kDefault : GpuPathRenderers::kNone; 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int i = 0; i < FLAGS_pr.count(); ++i) { 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const char* name = FLAGS_pr[i]; 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (name[0] == '~') { 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot gpuPathRenderers &= ~get_named_pathrenderers_flags(&name[1]); 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else { 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot gpuPathRenderers |= get_named_pathrenderers_flags(name); 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return gpuPathRenderers; 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/** 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Helper to set GrContextOptions from common GPU flags. 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotvoid SetCtxOptionsFromCommonFlags(struct GrContextOptions*); 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif // SK_SUPPORT_GPU 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 75