diff options
author | Harald Fernengel <harald.fernengel@nokia.com> | 2010-12-21 10:14:26 (GMT) |
---|---|---|
committer | Harald Fernengel <harald.fernengel@nokia.com> | 2010-12-21 10:47:13 (GMT) |
commit | 5963b2b92829035d14ab9f5fc5f65dec9460d969 (patch) | |
tree | c53331e09e399e8a8430607b1d0c0835bee14e2f /src/opengl/util | |
parent | 437f3b840301f3f7f0b31d72ca3e8251ae5c7090 (diff) | |
download | Qt-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.cpp | 48 | ||||
-rw-r--r-- | src/opengl/util/meego/shader-cache-introspector.pro | 7 |
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 |