1 // Copyright 2018 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 // This test evaluates the speed of rebinding the texture after each draw call. 6 7 #include "main.h" 8 #include "texturetest.h" 9 10 namespace glbench { 11 12 class TextureRebindTest : public TextureTest { 13 public: 14 TextureRebindTest() {} 15 virtual bool TextureMetaDataInit(); 16 virtual ~TextureRebindTest() {} 17 virtual bool TestFunc(uint64_t iterations); 18 virtual const char* Name() const { return "texture_rebind"; } 19 virtual bool IsDrawTest() const { return true; } 20 virtual bool IsTextureUploadTest() const { return false; } 21 }; 22 23 24 bool TextureRebindTest::TextureMetaDataInit(){ 25 kTexelFormats.push_back(GL_RGBA); 26 kTexelFormatNames[GL_RGBA] = "rgba"; 27 kTexelFormatSizes[GL_RGBA] = 4; 28 kFlavors[TEX_IMAGE] = "teximage2d"; 29 return true; 30 } 31 32 bool TextureRebindTest::TestFunc(uint64_t iterations) { 33 for (uint64_t i = 0; i < iterations; ++i) { 34 for (uint64_t texture_idx = 0; 35 texture_idx < kNumberOfTextures; 36 texture_idx++) { 37 glBindTexture(GL_TEXTURE_2D, textures_[texture_idx]); 38 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 39 } 40 } 41 42 return true; 43 } 44 45 TestBase* GetTextureRebindTest() { 46 return new TextureRebindTest; 47 } 48 49 } // namespace glbench 50