blob: 832ec838ae2cd2f7ac3062b9d1a6f04442d39537 [file] [log] [blame]
// 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