• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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