update with better fps reporting
authorreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 22 Feb 2010 22:03:06 +0000 (22:03 +0000)
committerreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 22 Feb 2010 22:03:06 +0000 (22:03 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@506 2bbb7eff-a529-9590-31e7-b0007b416f81

bench/FPSBench.cpp
bench/benchmain.cpp

index f103dc1..28668fe 100644 (file)
@@ -49,12 +49,23 @@ private:
 
 class Bitmap_FPSBench : public FPSBench {
 public:
-    Bitmap_FPSBench(void* p, SkBitmap::Config config, bool doScale) : INHERITED(p) {
+    Bitmap_FPSBench(void* p, SkBitmap::Config config, bool doOpaque, bool doScale) : INHERITED(p) {
         fBitmap.setConfig(config, this->width(), this->height());
         fBitmap.allocPixels();
         fBitmap.eraseColor(0xFFFF0000);
+        if (doOpaque) {
+            fBitmap.setIsOpaque(true);
+        }
 
-        fName.printf("fps_bitmap_%d_%s", fBitmap.bytesPerPixel(),
+        const char* configStr = "565";
+        if (config == SkBitmap::kARGB_8888_Config) {
+            if (doOpaque) {
+                configStr = "X888";
+            } else {
+                configStr = "8888";
+            }
+        }
+        fName.printf("fps_bitmap_%s_%s", configStr,
                      doScale ? "scale" : "noscale");
 
         fMatrix.reset();
@@ -79,10 +90,12 @@ private:
 
 static SkBenchmark* FillFactory(void* p) { return SkNEW_ARGS(Color_FPSBench, (p, 0xFFFF0000, "fps_fill")); }
 static SkBenchmark* BlendFactory(void* p) { return SkNEW_ARGS(Color_FPSBench, (p, 0x80FF0000, "fps_blend")); }
-static SkBenchmark* BMFactory0(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, false)); }
-static SkBenchmark* BMFactory1(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, true)); }
-static SkBenchmark* BMFactory2(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kRGB_565_Config, false)); }
-static SkBenchmark* BMFactory3(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kRGB_565_Config, true)); }
+static SkBenchmark* BMFactory0(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, false, false)); }
+static SkBenchmark* BMFactory1(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, false, true)); }
+static SkBenchmark* BMFactory2(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, true, false)); }
+static SkBenchmark* BMFactory3(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kARGB_8888_Config, true, true)); }
+static SkBenchmark* BMFactory4(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kRGB_565_Config, false, false)); }
+static SkBenchmark* BMFactory5(void* p) { return SkNEW_ARGS(Bitmap_FPSBench, (p, SkBitmap::kRGB_565_Config, false, true)); }
 
 static BenchRegistry gFillReg(FillFactory);
 static BenchRegistry gBlendReg(BlendFactory);
@@ -90,4 +103,6 @@ static BenchRegistry gBMReg0(BMFactory0);
 static BenchRegistry gBMReg1(BMFactory1);
 static BenchRegistry gBMReg2(BMFactory2);
 static BenchRegistry gBMReg3(BMFactory3);
+static BenchRegistry gBMReg4(BMFactory4);
+static BenchRegistry gBMReg5(BMFactory5);
 
index 598eb84..7443604 100644 (file)
@@ -172,8 +172,10 @@ static const struct {
 } gConfigs[] = {
     { SkBitmap::kARGB_8888_Config,  "8888" },
     { SkBitmap::kRGB_565_Config,    "565",  },
+#if 0
     { SkBitmap::kARGB_4444_Config,  "4444", },
     { SkBitmap::kA8_Config,         "A8",   }
+#endif
 };
 
 static int findConfig(const char config[]) {
@@ -370,9 +372,10 @@ int main (int argc, char * const argv[]) {
                 }
             }
             if (repeatDraw > 1) {
+                double duration = SkTime::GetMSecs() - now;
                 SkString str;
-                str.printf("  %4s:%7.2f", configName,
-                           (SkTime::GetMSecs() - now) / (double)repeatDraw);
+                str.printf("  %4s: msecs = %7.2f, fps = %7.2f", configName,
+                           duration / repeatDraw, repeatDraw * 1000.0 / duration);
                 log_progress(str);
             }
             if (outDir.size() > 0) {