aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandros Frantzis <alexandros.frantzis@linaro.org>2012-08-16 20:53:31 +0300
committerAlexandros Frantzis <alexandros.frantzis@linaro.org>2012-08-16 20:53:31 +0300
commita800957a4f69a8d1b7a11a498ed63e7abb4d3025 (patch)
tree299170e5a48debb53d6587f90274549dd3dad83f
parente56e75718d1108490e11d1ba68e1a5e785ae9e4c (diff)
parent96e6cf1bfd428733ab182b8e8481d86839710a55 (diff)
downloadglmark2-a800957a4f69a8d1b7a11a498ed63e7abb4d3025.tar.gz
MainLoop,Android: Exclude from score calculations benchmarks that weren't set up correctly.
-rw-r--r--src/android.cpp34
-rw-r--r--src/main-loop.cpp38
-rw-r--r--src/main-loop.h7
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_;
};