rhi: gl: Maintain Qt 5 compat wrt disk cache behavior
Task-number: QTBUG-126608 Change-Id: Id78d6fbdfec6d69bfec2fe9deab82e84f2588b29 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 38279dea558b06cef6c1d345962df3063fd12c5b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
a5022c1917
commit
e81a2d03d8
@ -6371,11 +6371,18 @@ bool QGles2GraphicsPipeline::create()
|
|||||||
// force replacing existing cache entry (if there is one, then
|
// force replacing existing cache entry (if there is one, then
|
||||||
// something is wrong with it, as there was no hit)
|
// something is wrong with it, as there was no hit)
|
||||||
rhiD->trySaveToPipelineCache(program, cacheKey, true);
|
rhiD->trySaveToPipelineCache(program, cacheKey, true);
|
||||||
} else {
|
|
||||||
// legacy QOpenGLShaderProgram style behavior: the "pipeline cache"
|
|
||||||
// was not enabled, so instead store to the Qt 5 disk cache
|
|
||||||
rhiD->trySaveToDiskCache(program, cacheKey);
|
|
||||||
}
|
}
|
||||||
|
// legacy QOpenGLShaderProgram style behavior: do this always, even
|
||||||
|
// though it is superfluous with the "pipeline cache" enabled. Continue
|
||||||
|
// storing to the Qt 5 style individual-file disk cache, because there
|
||||||
|
// is no guarantee one retrieves the "pipeline cache" blob and writes it
|
||||||
|
// out. Classic example: if Qt Quick only retrieves and stores the
|
||||||
|
// combined cache contents when exiting, applications that never exit
|
||||||
|
// cleanly (because they are killed, Ctrl+C'd, etc.) never store any
|
||||||
|
// program binaries! Therefore, to maintain Qt 5 behavioral
|
||||||
|
// compatibility, continue writing out the individual files no matter
|
||||||
|
// what.
|
||||||
|
rhiD->trySaveToDiskCache(program, cacheKey);
|
||||||
} else {
|
} else {
|
||||||
Q_ASSERT(cacheResult == QRhiGles2::ProgramCacheHit);
|
Q_ASSERT(cacheResult == QRhiGles2::ProgramCacheHit);
|
||||||
if (rhiD->rhiFlags.testFlag(QRhi::EnablePipelineCacheDataSave)) {
|
if (rhiD->rhiFlags.testFlag(QRhi::EnablePipelineCacheDataSave)) {
|
||||||
@ -6491,11 +6498,9 @@ bool QGles2ComputePipeline::create()
|
|||||||
// force replacing existing cache entry (if there is one, then
|
// force replacing existing cache entry (if there is one, then
|
||||||
// something is wrong with it, as there was no hit)
|
// something is wrong with it, as there was no hit)
|
||||||
rhiD->trySaveToPipelineCache(program, cacheKey, true);
|
rhiD->trySaveToPipelineCache(program, cacheKey, true);
|
||||||
} else {
|
|
||||||
// legacy QOpenGLShaderProgram style behavior: the "pipeline cache"
|
|
||||||
// was not enabled, so instead store to the Qt 5 disk cache
|
|
||||||
rhiD->trySaveToDiskCache(program, cacheKey);
|
|
||||||
}
|
}
|
||||||
|
// legacy QOpenGLShaderProgram style behavior
|
||||||
|
rhiD->trySaveToDiskCache(program, cacheKey);
|
||||||
} else {
|
} else {
|
||||||
Q_ASSERT(cacheResult == QRhiGles2::ProgramCacheHit);
|
Q_ASSERT(cacheResult == QRhiGles2::ProgramCacheHit);
|
||||||
if (rhiD->rhiFlags.testFlag(QRhi::EnablePipelineCacheDataSave)) {
|
if (rhiD->rhiFlags.testFlag(QRhi::EnablePipelineCacheDataSave)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user