diff options
author | Alexandros Frantzis <alexandros.frantzis@linaro.org> | 2012-08-16 20:53:31 +0300 |
---|---|---|
committer | Alexandros Frantzis <alexandros.frantzis@linaro.org> | 2012-08-16 20:53:31 +0300 |
commit | a800957a4f69a8d1b7a11a498ed63e7abb4d3025 (patch) | |
tree | 299170e5a48debb53d6587f90274549dd3dad83f | |
parent | e56e75718d1108490e11d1ba68e1a5e785ae9e4c (diff) | |
parent | 96e6cf1bfd428733ab182b8e8481d86839710a55 (diff) | |
download | glmark2-a800957a4f69a8d1b7a11a498ed63e7abb4d3025.tar.gz |
MainLoop,Android: Exclude from score calculations benchmarks that weren't set up correctly.
-rw-r--r-- | src/android.cpp | 34 | ||||
-rw-r--r-- | src/main-loop.cpp | 38 | ||||
-rw-r--r-- | src/main-loop.h | 7 |
3 files changed, 66 insertions, 13 deletions
diff --git a/src/android.cpp b/src/android.cpp index 7ec6565..d9678f4 100644 --- a/src/android.cpp +++ b/src/android.cpp @@ -49,10 +49,20 @@ public: virtual void log_scene_result() { - Log::info("%s FPS: %u FrameTime: %.3f ms\n", - scene_->info_string().c_str(), - scene_->average_fps(), - 1000.0 / scene_->average_fps()); + if (scene_setup_status_ == SceneSetupStatusSuccess) { + Log::info("%s FPS: %u FrameTime: %.3f ms\n", + scene_->info_string().c_str(), + scene_->average_fps(), + 1000.0 / scene_->average_fps()); + } + else if (scene_setup_status_ == SceneSetupStatusUnsupported) { + Log::info("%s Unsupported\n", + scene_->info_string().c_str()); + } + else { + Log::info("%s Set up failed\n", + scene_->info_string().c_str()); + } } }; @@ -66,8 +76,20 @@ public: virtual void log_scene_result() { - Log::info("%s FPS: %u", scene_->info_string().c_str(), - scene_->average_fps()); + if (scene_setup_status_ == SceneSetupStatusSuccess) { + Log::info("%s FPS: %u FrameTime: %.3f ms\n", + scene_->info_string().c_str(), + scene_->average_fps(), + 1000.0 / scene_->average_fps()); + } + else if (scene_setup_status_ == SceneSetupStatusUnsupported) { + Log::info("%s Unsupported\n", + scene_->info_string().c_str()); + } + else { + Log::info("%s Set up failed\n", + scene_->info_string().c_str()); + } } }; diff --git a/src/main-loop.cpp b/src/main-loop.cpp index 6e97a54..2bbd824 100644 --- a/src/main-loop.cpp +++ b/src/main-loop.cpp @@ -42,6 +42,7 @@ void MainLoop::reset() { scene_ = 0; + scene_setup_status_ = SceneSetupStatusUnknown; score_ = 0; benchmarks_run_ = 0; bench_iter_ = benchmarks_.begin(); @@ -83,6 +84,15 @@ MainLoop::step() canvas_.reset(); before_scene_setup(); scene_ = &(*bench_iter_)->setup_scene(); + if (!scene_->running()) { + if (!scene_->supported(false)) + scene_setup_status_ = SceneSetupStatusUnsupported; + else + scene_setup_status_ = SceneSetupStatusFailure; + } + else { + scene_setup_status_ = SceneSetupStatusSuccess; + } after_scene_setup(); log_scene_info(); } @@ -102,12 +112,14 @@ MainLoop::step() * in draw() may have changed the state. */ if (!scene_->running() || should_quit) { - score_ += scene_->average_fps(); + if (scene_setup_status_ == SceneSetupStatusSuccess) { + score_ += scene_->average_fps(); + benchmarks_run_++; + } log_scene_result(); (*bench_iter_)->teardown_scene(); scene_ = 0; next_benchmark(); - benchmarks_run_++; } return !should_quit; @@ -134,11 +146,23 @@ MainLoop::log_scene_info() void MainLoop::log_scene_result() { - static const std::string format_fps(Log::continuation_prefix + " FPS: %u"); - static const std::string format_ms(Log::continuation_prefix + " FrameTime: %.3f ms\n"); - - Log::info(format_fps.c_str(), scene_->average_fps()); - Log::info(format_ms.c_str(), 1000.0 / scene_->average_fps()); + static const std::string format_fps(Log::continuation_prefix + + " FPS: %u FrameTime: %.3f ms\n"); + static const std::string format_unsupported(Log::continuation_prefix + + " Unsupported\n"); + static const std::string format_fail(Log::continuation_prefix + + " Set up failed\n"); + + if (scene_setup_status_ == SceneSetupStatusSuccess) { + Log::info(format_fps.c_str(), scene_->average_fps(), + 1000.0 / scene_->average_fps()); + } + else if (scene_setup_status_ == SceneSetupStatusUnsupported) { + Log::info(format_unsupported.c_str()); + } + else { + Log::info(format_fail.c_str()); + } } void diff --git a/src/main-loop.h b/src/main-loop.h index fbdfa57..918681e 100644 --- a/src/main-loop.h +++ b/src/main-loop.h @@ -84,12 +84,19 @@ public: virtual void log_scene_result(); protected: + enum SceneSetupStatus { + SceneSetupStatusUnknown, + SceneSetupStatusSuccess, + SceneSetupStatusFailure, + SceneSetupStatusUnsupported + }; void next_benchmark(); Canvas &canvas_; Scene *scene_; const std::vector<Benchmark *> &benchmarks_; unsigned int score_; unsigned int benchmarks_run_; + SceneSetupStatus scene_setup_status_; std::vector<Benchmark *>::const_iterator bench_iter_; }; |