summaryrefslogtreecommitdiffstats
path: root/src/opengl/util
diff options
context:
space:
mode:
authorHarald Fernengel <harald.fernengel@nokia.com>2010-12-21 10:14:26 (GMT)
committerHarald Fernengel <harald.fernengel@nokia.com>2010-12-21 10:47:13 (GMT)
commit5963b2b92829035d14ab9f5fc5f65dec9460d969 (patch)
treec53331e09e399e8a8430607b1d0c0835bee14e2f /src/opengl/util
parent437f3b840301f3f7f0b31d72ca3e8251ae5c7090 (diff)
downloadQt-5963b2b92829035d14ab9f5fc5f65dec9460d969.zip
Qt-5963b2b92829035d14ab9f5fc5f65dec9460d969.tar.gz
Qt-5963b2b92829035d14ab9f5fc5f65dec9460d969.tar.bz2
Add inter-process binary shader cache for MeeGo
This patch significantly reduces MeeGo app startup times by caching binary shaders in a shared memory segment. Reviewed-by: Robert Griebl Reviewed-by: Samuel Rødal
Diffstat (limited to 'src/opengl/util')
-rw-r--r--src/opengl/util/meego/main.cpp48
-rw-r--r--src/opengl/util/meego/shader-cache-introspector.pro7
2 files changed, 55 insertions, 0 deletions
diff --git a/src/opengl/util/meego/main.cpp b/src/opengl/util/meego/main.cpp
new file mode 100644
index 0000000..0c9a915
--- /dev/null
+++ b/src/opengl/util/meego/main.cpp
@@ -0,0 +1,48 @@
+#include <QtCore/qdebug.h>
+
+#define QT_DEBUG_SHADER_CACHE
+#define QT_MEEGO_EXPERIMENTAL_SHADERCACHE
+#define QT_OPENGL_ES_2
+#define QT_BOOTSTRAPPED
+
+typedef int GLsizei;
+typedef unsigned int GLenum;
+
+#include "../../gl2paintengineex/qglshadercache_meego_p.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+int main()
+{
+ ShaderCacheSharedMemory shm;
+
+ if (!shm.isAttached()) {
+ fprintf(stderr, "Unable to attach to shared memory\n");
+ return EXIT_FAILURE;
+ }
+
+ ShaderCacheLocker locker(&shm);
+ if (!locker.isLocked()) {
+ fprintf(stderr, "Unable to lock shared memory\n");
+ return EXIT_FAILURE;
+ }
+
+ void *data = shm.data();
+ Q_ASSERT(data);
+
+ CachedShaders *cache = reinterpret_cast<CachedShaders *>(data);
+
+ for (int i = 0; i < cache->shaderCount; ++i) {
+ printf("Shader %d: %d bytes\n", i, cache->headers[i].size);
+ }
+
+ printf("\nSummary:\n\n"
+ " Amount of cached shaders: %d\n"
+ " Bytes used: %d\n"
+ " Bytes available: %d\n",
+ cache->shaderCount, cache->dataSize, cache->availableSize());
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/src/opengl/util/meego/shader-cache-introspector.pro b/src/opengl/util/meego/shader-cache-introspector.pro
new file mode 100644
index 0000000..520e9a5
--- /dev/null
+++ b/src/opengl/util/meego/shader-cache-introspector.pro
@@ -0,0 +1,7 @@
+TEMPLATE = app
+
+SOURCES += main.cpp
+
+TARGET = shader-cache-introspector
+
+QT = core