33class Q_GUI_EXPORT QOpenGLProgramBinaryCache
36 struct Q_GUI_EXPORT ShaderDesc {
38 ShaderDesc(QShader::Stage stage,
const QByteArray &source = QByteArray())
39 : stage(stage), source(source)
44 struct Q_GUI_EXPORT ProgramDesc {
45 QList<ShaderDesc> shaders;
46 QByteArray cacheKey()
const;
49 QOpenGLProgramBinaryCache();
51 bool load(
const QByteArray &cacheKey, uint programId);
52 void save(
const QByteArray &cacheKey, uint programId);
55 QString cacheFileName(
const QByteArray &cacheKey)
const;
56 bool verifyHeader(
const QByteArray &buf)
const;
57 bool setProgramBinary(uint programId, uint blobFormat,
const void *p, uint blobSize);
59 QString m_globalCacheDir;
60 QString m_localCacheDir;
61 QString m_currentCacheDir;
63 struct MemCacheEntry {
64 MemCacheEntry(
const void *p,
int size, uint format)
65 : blob(
reinterpret_cast<
const char *>(p), size),
71 QCache<QByteArray, MemCacheEntry> m_memCache;
72#if QT_CONFIG(opengles2)
73 void (QOPENGLF_APIENTRYP programBinaryOES)(GLuint program, GLenum binaryFormat,
const GLvoid *binary, GLsizei length);
74 void (QOPENGLF_APIENTRYP getProgramBinaryOES)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
75 void initializeProgramBinaryOES(QOpenGLContext *context);
76 bool m_programBinaryOESInitialized =
false;