Path: blob/main_old/src/tests/perf_tests/ANGLEPerfTestArgs.cpp
1693 views
//1// Copyright 2019 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//5// ANGLEPerfTestArgs.cpp:6// Parse command line arguments for angle_perftests.7//89#include "ANGLEPerfTestArgs.h"10#include <string.h>11#include <sstream>1213namespace angle14{15bool gCalibration = false;16int gStepsPerTrial = 0;17int gMaxStepsPerformed = 0;18bool gEnableTrace = false;19const char *gTraceFile = "ANGLETrace.json";20const char *gScreenShotDir = nullptr;21int gScreenShotFrame = 1;22bool gVerboseLogging = false;23double gCalibrationTimeSeconds = 1.0;24double gMaxTrialTimeSeconds = 10.0;25int gTestTrials = 3;26bool gNoFinish = false;27bool gEnableAllTraceTests = false;28bool gRetraceMode = false;29bool gMinimizeGPUWork = false;30bool gTraceTestValidation = false;3132// Default to three warmup loops. There's no science to this. More than two loops was experimentally33// helpful on a Windows NVIDIA setup when testing with Vulkan and native trace tests.34int gWarmupLoops = 3;35} // namespace angle3637namespace38{39int ReadIntArgument(const char *arg)40{41std::stringstream strstr;42strstr << arg;4344int value;45strstr >> value;46return value;47}4849// The same as --screenshot-dir, but used by Chrome tests.50constexpr char kRenderTestDirArg[] = "--render-test-output-dir=";51} // namespace5253using namespace angle;5455void ANGLEProcessPerfTestArgs(int *argc, char **argv)56{57for (int argIndex = 0; argIndex < *argc; argIndex++)58{59if (strcmp("--one-frame-only", argv[argIndex]) == 0)60{61gStepsPerTrial = 1;62gWarmupLoops = 0;63}64else if (strcmp("--enable-trace", argv[argIndex]) == 0)65{66gEnableTrace = true;67}68else if (strcmp("--trace-file", argv[argIndex]) == 0 && argIndex < *argc - 1)69{70gTraceFile = argv[argIndex + 1];71// Skip an additional argument.72argIndex++;73}74else if (strcmp("--calibration", argv[argIndex]) == 0)75{76gCalibration = true;77gTestTrials = 0;78}79else if (strcmp("--steps-per-trial", argv[argIndex]) == 0 && argIndex < *argc - 1)80{81gStepsPerTrial = ReadIntArgument(argv[argIndex + 1]);82// Skip an additional argument.83argIndex++;84}85else if (strcmp("--max-steps-performed", argv[argIndex]) == 0 && argIndex < *argc - 1)86{87gMaxStepsPerformed = ReadIntArgument(argv[argIndex + 1]);88gWarmupLoops = 0;89gTestTrials = 1;90gMaxTrialTimeSeconds = 36000;91// Skip an additional argument.92argIndex++;93}94else if (strcmp("--fixed-test-time", argv[argIndex]) == 0 && argIndex < *argc - 1)95{96gMaxTrialTimeSeconds = ReadIntArgument(argv[argIndex + 1]);97gStepsPerTrial = std::numeric_limits<int>::max();98gTestTrials = 1;99gWarmupLoops = 0;100// Skip an additional argument.101argIndex++;102}103else if (strcmp("--screenshot-dir", argv[argIndex]) == 0 && argIndex < *argc - 1)104{105gScreenShotDir = argv[argIndex + 1];106argIndex++;107}108else if (strcmp("--screenshot-frame", argv[argIndex]) == 0 && argIndex < *argc - 1)109{110gScreenShotFrame = ReadIntArgument(argv[argIndex + 1]);111argIndex++;112}113else if (strcmp("--verbose-logging", argv[argIndex]) == 0 ||114strcmp("--verbose", argv[argIndex]) == 0 || strcmp("-v", argv[argIndex]) == 0)115{116gVerboseLogging = true;117}118else if (strcmp("--warmup-loops", argv[argIndex]) == 0)119{120gWarmupLoops = ReadIntArgument(argv[argIndex + 1]);121// Skip an additional argument.122argIndex++;123}124else if (strcmp("--no-warmup", argv[argIndex]) == 0)125{126gWarmupLoops = 0;127}128else if (strncmp(kRenderTestDirArg, argv[argIndex], strlen(kRenderTestDirArg)) == 0)129{130gScreenShotDir = argv[argIndex] + strlen(kRenderTestDirArg);131}132else if (strcmp("--calibration-time", argv[argIndex]) == 0)133{134gCalibrationTimeSeconds = ReadIntArgument(argv[argIndex + 1]);135// Skip an additional argument.136argIndex++;137}138else if (strcmp("--max-trial-time", argv[argIndex]) == 0)139{140gMaxTrialTimeSeconds = ReadIntArgument(argv[argIndex + 1]);141// Skip an additional argument.142argIndex++;143}144else if (strcmp("--trials", argv[argIndex]) == 0)145{146gTestTrials = ReadIntArgument(argv[argIndex + 1]);147// Skip an additional argument.148argIndex++;149}150else if (strcmp("--no-finish", argv[argIndex]) == 0)151{152gNoFinish = true;153}154else if (strcmp("--enable-all-trace-tests", argv[argIndex]) == 0)155{156gEnableAllTraceTests = true;157}158else if (strcmp("--retrace-mode", argv[argIndex]) == 0)159{160gRetraceMode = true;161}162else if (strcmp("--minimize-gpu-work", argv[argIndex]) == 0)163{164gMinimizeGPUWork = true;165}166else if (strcmp("--validation", argv[argIndex]) == 0)167{168gTraceTestValidation = true;169gWarmupLoops = 0;170gTestTrials = 1;171gMaxTrialTimeSeconds = 600.0;172}173}174}175176177