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 #include "utils.h"
8
9 namespace glbench {
10
11 class ClearTest : public TestBase {
12 public:
ClearTest()13 ClearTest() : mask_(0) {}
~ClearTest()14 virtual ~ClearTest() {}
15 virtual bool TestFunc(uint64_t iterations);
16 virtual bool Run();
Name() const17 virtual const char* Name() const { return "clear"; }
IsDrawTest() const18 virtual bool IsDrawTest() const { return true; }
Unit() const19 virtual const char* Unit() const { return "mpixels_sec"; }
20
21 private:
22 GLbitfield mask_;
23 DISALLOW_COPY_AND_ASSIGN(ClearTest);
24 };
25
TestFunc(uint64_t iterations)26 bool ClearTest::TestFunc(uint64_t iterations) {
27 GLbitfield mask = mask_;
28 glClear(mask);
29 glFlush(); // Kick GPU as soon as possible
30 for (uint64_t i = 0; i < iterations - 1; ++i) {
31 glClear(mask);
32 }
33 return true;
34 }
35
Run()36 bool ClearTest::Run() {
37 mask_ = GL_COLOR_BUFFER_BIT;
38 RunTest(this, "clear_color", g_width * g_height, g_width, g_height, true);
39
40 mask_ = GL_DEPTH_BUFFER_BIT;
41 RunTest(this, "clear_depth", g_width * g_height, g_width, g_height, true);
42
43 mask_ = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT;
44 RunTest(this, "clear_colordepth", g_width * g_height, g_width, g_height,
45 true);
46
47 mask_ = GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT;
48 RunTest(this, "clear_depthstencil", g_width * g_height, g_width, g_height,
49 true);
50
51 mask_ = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT;
52 RunTest(this, "clear_colordepthstencil", g_width * g_height, g_width,
53 g_height, true);
54 return true;
55 }
56
GetClearTest()57 TestBase* GetClearTest() {
58 return new ClearTest;
59 }
60
61 } // namespace glbench
62