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