diff options
author | Thiago Macieira <thiago.macieira@nokia.com> | 2010-07-15 13:14:37 (GMT) |
---|---|---|
committer | Thiago Macieira <thiago.macieira@nokia.com> | 2010-07-15 13:14:37 (GMT) |
commit | 8106f716043c22d71ff3dcdf9cd8a4db258fa81f (patch) | |
tree | fef8ef2bcc78da549037c94451058fde10268edd /tests/benchmarks/opengl/main.cpp | |
parent | a98bda4b42b068c9c3220ae2aded41a263387ac2 (diff) | |
parent | 03c01176ebf423085e56ceabcf8335ca5027a786 (diff) | |
download | Qt-8106f716043c22d71ff3dcdf9cd8a4db258fa81f.zip Qt-8106f716043c22d71ff3dcdf9cd8a4db258fa81f.tar.gz Qt-8106f716043c22d71ff3dcdf9cd8a4db258fa81f.tar.bz2 |
Merge remote branch 'origin/4.7' into qt-master-from-4.7
Conflicts:
src/gui/kernel/qapplication.h
Diffstat (limited to 'tests/benchmarks/opengl/main.cpp')
-rw-r--r-- | tests/benchmarks/opengl/main.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/benchmarks/opengl/main.cpp b/tests/benchmarks/opengl/main.cpp index beb4d43..c042fce 100644 --- a/tests/benchmarks/opengl/main.cpp +++ b/tests/benchmarks/opengl/main.cpp @@ -75,6 +75,10 @@ private slots: void gradients_data(); void gradients(); + void textureUpload_data(); + void textureUpload(); + + private: QGLPixelBuffer *pb; }; @@ -374,6 +378,53 @@ void OpenGLBench::gradients() } } +void OpenGLBench::textureUpload_data() +{ + QTest::addColumn<int>("size"); + QTest::addColumn<int>("flags"); + QTest::addColumn<int>("format"); + + int sizes[] = { 8, 10, 16, 20, 32, 50, 64, 100, 128, 200, 256, 500, 512, 1000, 1024, 2000, 2048, -1 }; + int flags[] = { QGLContext::InternalBindOption, + QGLContext::DefaultBindOption, + -1 }; + int formats[] = { GL_RGB, GL_RGBA, -1 }; + + for (int s = 0; sizes[s] != -1; ++s) { + for (int f = 0; flags[f] != -1; ++f) { + for (int a = 0; formats[a] != -1; ++a) { + QByteArray name; + name.append("size=").append(QByteArray::number(sizes[s])); + name.append(", flags=").append(f == 0 ? "internal" : "default"); + name.append(", format=").append(a == 0 ? "RGB" : "RGBA"); + QTest::newRow(name.constData()) << sizes[s] << flags[f] << formats[a]; + } + } + } +} + +void OpenGLBench::textureUpload() +{ + QFETCH(int, size); + QFETCH(int, flags); + QFETCH(int, format); + + QPixmap pixmap(size, size); + + if (format == GL_RGB) + pixmap.fill(Qt::red); + else + pixmap.fill(Qt::transparent); + + pb->makeCurrent(); + QGLContext *context = const_cast<QGLContext *>(QGLContext::currentContext()); + QTime time; + + time.start(); + context->bindTexture(pixmap, GL_TEXTURE_2D, format, (QGLContext::BindOptions) flags); + QTest::setBenchmarkResult(time.elapsed(), QTest::WalltimeMilliseconds); +} + QTEST_MAIN(OpenGLBench) #include "main.moc" |