1 // Copyright (c) 2013 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 evalutes the speed of uploading textures without actually drawing. 6 7 #include "base/logging.h" 8 9 #include "texturetest.h" 10 #include "main.h" 11 12 namespace glbench { 13 14 class TextureUploadTest : public TextureTest { 15 public: 16 TextureUploadTest() {} 17 virtual ~TextureUploadTest() {} 18 virtual bool TestFunc(uint64_t iterations); 19 virtual const char* Name() const { return "texture_upload"; } 20 virtual bool IsDrawTest() const { return false; } 21 }; 22 23 bool TextureUploadTest::TestFunc(uint64_t iterations) { 24 glGetError(); 25 26 for (uint64_t i = 0; i < iterations; ++i) { 27 glBindTexture(GL_TEXTURE_2D, textures_[i % kNumberOfTextures]); 28 switch (flavor_) { 29 case TEX_IMAGE: 30 glTexImage2D(GL_TEXTURE_2D, 0, texel_gl_format_, width_, height_, 31 0, texel_gl_format_, GL_UNSIGNED_BYTE, 32 pixels_[i % kNumberOfTextures].get()); 33 break; 34 case TEX_SUBIMAGE: 35 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width_, height_, 36 texel_gl_format_, GL_UNSIGNED_BYTE, 37 pixels_[i % kNumberOfTextures].get()); 38 break; 39 } 40 } 41 42 return true; 43 } 44 45 TestBase* GetTextureUploadTest() { 46 return new TextureUploadTest; 47 } 48 49 } // namespace glbench 50