1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "main.h"
6 #include "testbase.h"
7
8
9 namespace glbench {
10
11
12 class ClearTest : public TestBase {
13 public:
ClearTest()14 ClearTest() : mask_(0) {}
~ClearTest()15 virtual ~ClearTest() {}
16 virtual bool TestFunc(uint64_t iterations);
17 virtual bool Run();
Name() const18 virtual const char* Name() const { return "clear"; }
IsDrawTest() const19 virtual bool IsDrawTest() const { return true; }
Unit() const20 virtual const char* Unit() const { return "mpixels_sec"; }
21
22 private:
23 GLbitfield mask_;
24 DISALLOW_COPY_AND_ASSIGN(ClearTest);
25 };
26
27
TestFunc(uint64_t iterations)28 bool ClearTest::TestFunc(uint64_t iterations) {
29 GLbitfield mask = mask_;
30 glClear(mask);
31 glFlush(); // Kick GPU as soon as possible
32 for (uint64_t i = 0; i < iterations - 1; ++i) {
33 glClear(mask);
34 }
35 return true;
36 }
37
38
Run()39 bool ClearTest::Run() {
40 mask_ = GL_COLOR_BUFFER_BIT;
41 RunTest(this, "clear_color", g_width * g_height, g_width, g_height, true);
42
43 mask_ = GL_DEPTH_BUFFER_BIT;
44 RunTest(this, "clear_depth", g_width * g_height, g_width, g_height, true);
45
46 mask_ = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT;
47 RunTest(this, "clear_colordepth",
48 g_width * g_height, g_width, g_height, true);
49
50 mask_ = GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT;
51 RunTest(this, "clear_depthstencil",
52 g_width * g_height, g_width, g_height, true);
53
54 mask_ = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT;
55 RunTest(this, "clear_colordepthstencil",
56 g_width * g_height, g_width, g_height, true);
57 return true;
58 }
59
60
GetClearTest()61 TestBase* GetClearTest() {
62 return new ClearTest;
63 }
64
65 } // namespace glbench
66