Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1035)

Unified Diff: bench/nanobench.cpp

Issue 1603063005: Adding support for parsing extended gpu config parameters in nanobench. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Adding support for parsing gpu config parameters in nanobench Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bench/nanobench.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bench/nanobench.cpp
diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp
index 7efd858c5cd5a8a0e761c399a839fa6964526e2b..f68341a3534d260fb2e4f6a55b539f1da0632a2d 100644
--- a/bench/nanobench.cpp
+++ b/bench/nanobench.cpp
@@ -185,7 +185,7 @@ struct GPUTarget : public Target {
}
if (!this->gl->fenceSyncSupport()) {
SkDebugf("WARNING: GL context for config \"%s\" does not support fence sync. "
- "Timings might not be accurate.\n", this->config.name);
+ "Timings might not be accurate.\n", this->config.name.c_str());
}
return true;
}
@@ -372,37 +372,6 @@ static int setup_gpu_bench(Target* target, Benchmark* bench, int maxGpuFrameLag)
return loops;
}
-static SkString to_lower(const char* str) {
- SkString lower(str);
- for (size_t i = 0; i < lower.size(); i++) {
- lower[i] = tolower(lower[i]);
- }
- return lower;
-}
-
-static bool is_cpu_config_allowed(const char* name) {
- for (int i = 0; i < FLAGS_config.count(); i++) {
- if (to_lower(FLAGS_config[i]).equals(name)) {
- return true;
- }
- }
- return false;
-}
-
-#if SK_SUPPORT_GPU
-static bool is_gpu_config_allowed(const char* name, GrContextFactory::GLContextType ctxType,
- GrContextFactory::GLContextOptions ctxOptions,
- int sampleCnt) {
- if (!is_cpu_config_allowed(name)) {
- return false;
- }
- if (const GrContext* ctx = gGrFactory->get(ctxType, ctxOptions)) {
- return sampleCnt <= ctx->caps()->maxSampleCount();
- }
- return false;
-}
-#endif
-
#if SK_SUPPORT_GPU
#define kBogusGLContextType GrContextFactory::kNative_GLContextType
#define kBogusGLContextOptions GrContextFactory::kNone_GLContextOptions
@@ -411,14 +380,52 @@ static bool is_gpu_config_allowed(const char* name, GrContextFactory::GLContextT
#define kBogusGLContextOptions 0
#endif
-// Append all configs that are enabled and supported.
-static void create_configs(SkTDArray<Config>* configs) {
- #define CPU_CONFIG(name, backend, color, alpha) \
- if (is_cpu_config_allowed(#name)) { \
- Config config = { #name, Benchmark::backend, color, alpha, 0, \
- kBogusGLContextType, kBogusGLContextOptions, \
- false }; \
- configs->push(config); \
+static void create_config(const SkCommandLineConfig* config, SkTArray<Config>* configs) {
+
+#if SK_SUPPORT_GPU
+ if (const auto* gpuConfig = config->asConfigGpu()) {
+ if (!FLAGS_gpu)
+ return;
+
+ const auto ctxOptions = gpuConfig->getUseNVPR() ? GrContextFactory::kEnableNVPR_GLContextOptions
+ : GrContextFactory::kNone_GLContextOptions;
+ const auto ctxType = gpuConfig->getContextType();
+ const auto sampleCount = gpuConfig->getSamples();
+
+ if (const GrContext* ctx = gGrFactory->get(ctxType, ctxOptions)) {
+ const auto maxSampleCount = ctx->caps()->maxSampleCount();
+ if (sampleCount > ctx->caps()->maxSampleCount()) {
+ SkDebugf("Configuration sample count %d exceeds maximum %d.\n",
+ sampleCount, maxSampleCount);
+ return;
+ }
+ } else {
+ SkDebugf("No context was available matching config type and options.\n");
+ return;
+ }
+
+ Config target = {
+ config->getTag(),
+ Benchmark::kGPU_Backend,
+ kN32_SkColorType,
+ kPremul_SkAlphaType,
+ sampleCount,
+ ctxType,
+ ctxOptions,
+ false };
+
+ configs->push_back(target);
+ return;
+ }
+#endif
+
+ #define CPU_CONFIG(name, backend, color, alpha) \
+ if (config->getTag().equals(#name)) { \
+ Config config = { SkString(#name), Benchmark::backend, color, alpha, 0, \
+ kBogusGLContextType, kBogusGLContextOptions, \
+ false }; \
+ configs->push_back(config); \
+ return; \
}
if (FLAGS_cpu) {
@@ -427,56 +434,28 @@ static void create_configs(SkTDArray<Config>* configs) {
CPU_CONFIG(565, kRaster_Backend, kRGB_565_SkColorType, kOpaque_SkAlphaType)
}
-#if SK_SUPPORT_GPU
- #define GPU_CONFIG(name, ctxType, ctxOptions, samples, useDFText) \
- if (is_gpu_config_allowed(#name, GrContextFactory::ctxType, \
- GrContextFactory::ctxOptions, samples)) { \
- Config config = { \
- #name, \
- Benchmark::kGPU_Backend, \
- kN32_SkColorType, \
- kPremul_SkAlphaType, \
- samples, \
- GrContextFactory::ctxType, \
- GrContextFactory::ctxOptions, \
- useDFText }; \
- configs->push(config); \
- }
-
- if (FLAGS_gpu) {
- GPU_CONFIG(gpu, kNative_GLContextType, kNone_GLContextOptions, 0, false)
- GPU_CONFIG(msaa4, kNative_GLContextType, kNone_GLContextOptions, 4, false)
- GPU_CONFIG(msaa16, kNative_GLContextType, kNone_GLContextOptions, 16, false)
- GPU_CONFIG(nvprmsaa4, kNative_GLContextType, kEnableNVPR_GLContextOptions, 4, false)
- GPU_CONFIG(nvprmsaa16, kNative_GLContextType, kEnableNVPR_GLContextOptions, 16, false)
- GPU_CONFIG(gpudft, kNative_GLContextType, kNone_GLContextOptions, 0, true)
- GPU_CONFIG(debug, kDebug_GLContextType, kNone_GLContextOptions, 0, false)
- GPU_CONFIG(nullgpu, kNull_GLContextType, kNone_GLContextOptions, 0, false)
-#if SK_ANGLE
-#ifdef SK_BUILD_FOR_WIN
- GPU_CONFIG(angle, kANGLE_GLContextType, kNone_GLContextOptions, 0, false)
-#endif
- GPU_CONFIG(angle-gl, kANGLE_GL_GLContextType, kNone_GLContextOptions, 0, false)
-#endif
-#if SK_COMMAND_BUFFER
- GPU_CONFIG(commandbuffer, kCommandBuffer_GLContextType, kNone_GLContextOptions, 0, false)
-#endif
-#if SK_MESA
- GPU_CONFIG(mesa, kMESA_GLContextType, kNone_GLContextOptions, 0, false)
-#endif
- }
-#endif
+ #undef CPU_CONFIG
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
- if (is_cpu_config_allowed("hwui")) {
+ if (is_cpu_config_allowed("hwui", config)) {
Config config = { "hwui", Benchmark::kHWUI_Backend, kRGBA_8888_SkColorType,
kPremul_SkAlphaType, 0, kBogusGLContextType, kBogusGLContextOptions,
false };
- configs->push(config);
+ configs->push_back(config);
+ return;
}
#endif
}
+// Append all configs that are enabled and supported.
+void create_configs(SkTArray<Config>* configs) {
+ SkCommandLineConfigArray array;
+ ParseConfigs(FLAGS_config, &array);
+ for (int i = 0; i < array.count(); ++i) {
+ create_config(array[i], configs);
+ }
+}
+
// If bench is enabled for config, returns a Target* for it, otherwise nullptr.
static Target* is_enabled(Benchmark* bench, const Config& config) {
if (!bench->isSuitableFor(config.backend)) {
@@ -1090,7 +1069,7 @@ int nanobench_main() {
FLAGS_samples, "samples");
}
- SkTDArray<Config> configs;
+ SkTArray<Config> configs;
create_configs(&configs);
if (FLAGS_keepAlive) {
@@ -1105,7 +1084,7 @@ int nanobench_main() {
continue;
}
- if (!configs.isEmpty()) {
+ if (!configs.empty()) {
log->bench(bench->getUniqueName(), bench->getSize().fX, bench->getSize().fY);
bench->delayedSetup();
}
@@ -1117,7 +1096,7 @@ int nanobench_main() {
// During HWUI output this canvas may be nullptr.
SkCanvas* canvas = target->getCanvas();
- const char* config = target->config.name;
+ const char* config = target->config.name.c_str();
target->setup();
bench->perCanvasPreDraw(canvas);
« no previous file with comments | « bench/nanobench.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698