| // Copyright 2018 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. |
| |
| // This test evaluates the speed of rebinding the texture after each draw call. |
| |
| #include "main.h" |
| #include "texturetest.h" |
| |
| namespace glbench { |
| |
| class TextureRebindTest : public TextureTest { |
| public: |
| TextureRebindTest() {} |
| virtual bool TextureMetaDataInit(); |
| virtual ~TextureRebindTest() {} |
| virtual bool TestFunc(uint64_t iterations); |
| virtual const char* Name() const { return "texture_rebind"; } |
| virtual bool IsDrawTest() const { return true; } |
| virtual bool IsTextureUploadTest() const { return false; } |
| }; |
| |
| |
| bool TextureRebindTest::TextureMetaDataInit(){ |
| kTexelFormats.push_back(GL_RGBA); |
| kTexelFormatNames[GL_RGBA] = "rgba"; |
| kTexelFormatSizes[GL_RGBA] = 4; |
| kFlavors[TEX_IMAGE] = "teximage2d"; |
| return true; |
| } |
| |
| bool TextureRebindTest::TestFunc(uint64_t iterations) { |
| for (uint64_t i = 0; i < iterations; ++i) { |
| for (uint64_t texture_idx = 0; |
| texture_idx < kNumberOfTextures; |
| texture_idx++) { |
| glBindTexture(GL_TEXTURE_2D, textures_[texture_idx]); |
| glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); |
| } |
| } |
| |
| return true; |
| } |
| |
| TestBase* GetTextureRebindTest() { |
| return new TextureRebindTest; |
| } |
| |
| } // namespace glbench |