Index: client/deps/glbench/src/testbase.h |
diff --git a/client/deps/glbench/src/testbase.h b/client/deps/glbench/src/testbase.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6d5cc9560ca469e3da5239c01a8a82e6b149100a |
--- /dev/null |
+++ b/client/deps/glbench/src/testbase.h |
@@ -0,0 +1,83 @@ |
+// Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef BENCH_GL_TESTBASE_H_ |
+#define BENCH_GL_TESTBASE_H_ |
+ |
+#include "base/basictypes.h" |
+ |
+#include "main.h" |
+ |
+ |
+namespace glbench { |
+ |
+class TestBase; |
+ |
+// Runs test->TestFunc() passing it sequential powers of two (8, 16, 32,...) |
+// recording time it took. The data is then fitted linearly, obtaining slope |
+// and bias such that: |
+// time it took to run x iterations = slope * x + bias |
+// Returns false if one iteration of the test takes longer than |
+// MAX_ITERATION_LENGTH_MS. The test is then assumed too slow to provide |
+// meaningful results. |
+bool Bench(TestBase* test, float *slope, int64_t *bias); |
+ |
+// Runs Bench on an instance of TestBase and prints out results. |
+// |
+// coefficient is multiplied (if inverse is false) or divided (if inverse is |
+// true) by the slope and the result is printed. |
+// |
+// Examples: |
+// coefficient = width * height (measured in pixels), inverse = true |
+// returns the throughput in megapixels per second; |
+// |
+// coefficient = 1, inverse = false |
+// returns number of operations per second. |
+void RunTest(TestBase* test, const char *name, float coefficient, bool inverse); |
+ |
+ |
+class TestBase { |
+ public: |
+ virtual ~TestBase() {} |
+ // Runs the test case n times. |
+ virtual bool TestFunc(int n) = 0; |
+ // Main entry point into the test. |
+ virtual bool Run() = 0; |
+}; |
+ |
+// Helper class to time glDrawArrays. |
+class DrawArraysTestFunc : public TestBase { |
+ public: |
+ virtual ~DrawArraysTestFunc() {} |
+ virtual bool TestFunc(int); |
+ |
+ // Runs the test and reports results in mpixels per second, assuming each |
+ // iteration updates the whole window (its size is g_width by g_height). |
+ void FillRateTestNormal(const char* name); |
+ // Runs the test and reports results in mpixels per second, assuming each |
+ // iteration updates a window of width by height pixels. |
+ void FillRateTestNormalSubWindow(const char* name, float width, float height); |
+#ifndef USE_EGL |
+ // Runs the test three times: with blending on; with depth test enabled and |
+ // depth function of GL_NOTEQUAL; with depth function GL_NEVER. Results are |
+ // reported as in FillRateTestNormal. |
+ void FillRateTestBlendDepth(const char *name); |
+#endif |
+}; |
+ |
+// Helper class to time glDrawElements. |
+class DrawElementsTestFunc : public TestBase { |
+ public: |
+ DrawElementsTestFunc() : count_(0) {} |
+ virtual ~DrawElementsTestFunc() {} |
+ virtual bool TestFunc(int); |
+ |
+ protected: |
+ // Passed to glDrawElements. |
+ GLsizei count_; |
+}; |
+ |
+} // namespace glbench |
+ |
+#endif // BENCH_GL_TESTBASE_H_ |