From f9a9a6308c7f69ba38c04afc83496a373a1fe6a6 Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Wed, 28 Oct 2020 13:01:05 +0100 Subject: Add dedicated Qt3D.Renderer.ShaderCache logging category Might come in handy to troubleshoot issues with the ShaderBuilder caching of generated shaders. Change-Id: I2ccb68608857fa86ff20cb95047d38497df4b3ad Reviewed-by: Mike Krus (cherry picked from commit 2f4a55e833c970b5bb72f2208ed7b2517324f5ed) Reviewed-by: Qt Cherry-pick Bot --- src/render/materialsystem/shaderbuilder.cpp | 21 +++++++++++++++------ src/render/renderlogging.cpp | 1 + src/render/renderlogging_p.h | 1 + 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/render/materialsystem/shaderbuilder.cpp b/src/render/materialsystem/shaderbuilder.cpp index d7ccea7da..2b8938eb9 100644 --- a/src/render/materialsystem/shaderbuilder.cpp +++ b/src/render/materialsystem/shaderbuilder.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include #include @@ -250,6 +251,7 @@ void ShaderBuilder::generateCode(QShaderProgram::ShaderType type) // If that's the case it's faster to load the pre generated shader file if (m_renderer && m_renderer->containsGeneratedShaderGraph(cacheKey)) { + qCDebug(ShaderCache) << "Using runtime cache for shader graph with key" << cacheKey; updateShaderCodeAndClearDirty(m_renderer->cachedGeneratedShaderGraph(cacheKey)); return; } @@ -257,16 +259,19 @@ void ShaderBuilder::generateCode(QShaderProgram::ShaderType type) // else check if a cachedShader file exists if (cachedShaderFile.exists()) { if (!cachedShaderFile.open(QFile::ReadOnly)) { - qWarning() << "Couldn't open cached shader file:" << graphPath; + qCWarning(ShaderCache) << "Couldn't open cached shader file:" << graphPath; // Too bad, we have to generate the shader below } else { // Use cached shader + qCDebug(ShaderCache) << "Using cached shader file" << cachedFilterPath; const QByteArray shaderCode = cachedShaderFile.readAll(); updateShaderCodeAndClearDirty(shaderCode); // Record to runtime cache - if (m_renderer) + if (m_renderer) { + qCDebug(ShaderCache) << "Insert shader " << cacheKey << "into runtime cache"; m_renderer->insertGeneratedShaderGraph(cacheKey, shaderCode); + } return; } } @@ -305,14 +310,18 @@ void ShaderBuilder::generateCode(QShaderProgram::ShaderType type) // Record to runtime cache if (useCache || forceRegenerate) { - if (m_renderer) + if (m_renderer) { + qCDebug(ShaderCache) << "Insert shader " << cacheKey << "into runtime cache"; m_renderer->insertGeneratedShaderGraph(cacheKey, deincludified); + } // Record to file cache - if (cachedShaderFile.open(QFile::WriteOnly)) + if (cachedShaderFile.open(QFile::WriteOnly)) { cachedShaderFile.write(deincludified); - else - qWarning() << "Unable to write cached shader file"; + qCDebug(ShaderCache) << "Saving cached shader file" << cachedFilterPath; + } else { + qCWarning(ShaderCache) << "Unable to write cached shader file"; + } } } diff --git a/src/render/renderlogging.cpp b/src/render/renderlogging.cpp index 2eb1835e6..fef284c3a 100644 --- a/src/render/renderlogging.cpp +++ b/src/render/renderlogging.cpp @@ -57,6 +57,7 @@ Q_LOGGING_CATEGORY(Memory, "Qt3D.Renderer.Memory", QtWarningMsg) Q_LOGGING_CATEGORY(Shaders, "Qt3D.Renderer.Shaders", QtWarningMsg) Q_LOGGING_CATEGORY(RenderStates, "Qt3D.Renderer.RenderStates", QtWarningMsg) Q_LOGGING_CATEGORY(VSyncAdvanceService, "Qt3D.Renderer.VsyncAdvanceService", QtWarningMsg) +Q_LOGGING_CATEGORY(ShaderCache, "Qt3D.Renderer.ShaderCache", QtWarningMsg) } // namespace Render diff --git a/src/render/renderlogging_p.h b/src/render/renderlogging_p.h index 00ae572f4..54f304327 100644 --- a/src/render/renderlogging_p.h +++ b/src/render/renderlogging_p.h @@ -71,6 +71,7 @@ Q_DECLARE_LOGGING_CATEGORY(Memory) Q_DECLARE_LOGGING_CATEGORY(Shaders) Q_DECLARE_LOGGING_CATEGORY(RenderStates) Q_DECLARE_LOGGING_CATEGORY(VSyncAdvanceService) +Q_DECLARE_LOGGING_CATEGORY(ShaderCache) } // namespace Render -- cgit v1.2.3