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);
61 struct MemCacheEntry {
62 MemCacheEntry(
const void *p, qsizetype size, uint format)
63 : blob(
reinterpret_cast<
const char *>(p), size),
69 QCache<QByteArray, MemCacheEntry> m_memCache;
70#if QT_CONFIG(opengles2)
71 void (QOPENGLF_APIENTRYP programBinaryOES)(GLuint program, GLenum binaryFormat,
const GLvoid *binary, GLsizei length);
72 void (QOPENGLF_APIENTRYP getProgramBinaryOES)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
73 void initializeProgramBinaryOES(QOpenGLContext *context);
74 bool m_programBinaryOESInitialized =
false;