| // 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. |
| |
| #include "glbench/main.h" |
| #include "glbench/testbase.h" |
| |
| |
| namespace glbench { |
| |
| |
| class ClearTest : public TestBase { |
| public: |
| ClearTest() : mask_(0) {} |
| virtual ~ClearTest() {} |
| virtual bool TestFunc(uint64_t iterations); |
| virtual bool Run(); |
| virtual const char* Name() const { return "clear"; } |
| virtual bool IsDrawTest() const { return true; } |
| virtual const char* Unit() const { return "mpixels_sec"; } |
| |
| private: |
| GLbitfield mask_; |
| DISALLOW_COPY_AND_ASSIGN(ClearTest); |
| }; |
| |
| |
| bool ClearTest::TestFunc(uint64_t iterations) { |
| GLbitfield mask = mask_; |
| glClear(mask); |
| glFlush(); // Kick GPU as soon as possible |
| for (uint64_t i = 0; i < iterations - 1; ++i) { |
| glClear(mask); |
| } |
| return true; |
| } |
| |
| |
| bool ClearTest::Run() { |
| mask_ = GL_COLOR_BUFFER_BIT; |
| RunTest(this, "clear_color", g_width * g_height, g_width, g_height, true); |
| |
| mask_ = GL_DEPTH_BUFFER_BIT; |
| RunTest(this, "clear_depth", g_width * g_height, g_width, g_height, true); |
| |
| mask_ = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT; |
| RunTest(this, "clear_colordepth", |
| g_width * g_height, g_width, g_height, true); |
| |
| mask_ = GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT; |
| RunTest(this, "clear_depthstencil", |
| g_width * g_height, g_width, g_height, true); |
| |
| mask_ = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT; |
| RunTest(this, "clear_colordepthstencil", |
| g_width * g_height, g_width, g_height, true); |
| return true; |
| } |
| |
| |
| TestBase* GetClearTest() { |
| return new ClearTest; |
| } |
| |
| } // namespace glbench |