• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
TextureUploadTest()16   TextureUploadTest() {}
~TextureUploadTest()17   virtual ~TextureUploadTest() {}
18   virtual bool TestFunc(uint64_t iterations);
Name() const19   virtual const char* Name() const { return "texture_upload"; }
IsDrawTest() const20   virtual bool IsDrawTest() const { return false; }
21 };
22 
TestFunc(uint64_t iterations)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 
GetTextureUploadTest()45 TestBase* GetTextureUploadTest() {
46   return new TextureUploadTest;
47 }
48 
49 } // namespace glbench
50