diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-02-23 10:10:34 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-02-28 16:28:48 +0000 |
commit | 653ff3d4d5f992b64c4949e9741f4213a81a9f42 (patch) | |
tree | 7b71da7035a32293f6d288148ee3660196575c6f /src | |
parent | a563b09776cbb1151d804b07c48b3028a1807efd (diff) |
Unit Tests for RenderShader
Note: Only test proper initialization, cleanup and that it matches a frontend
peer. Doesn't that shader loading as this requires a context, surface...
Change-Id: I05f6ef059005b4781b82876a8d73e46d41d44387
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/render/backend/rendershader.cpp | 19 | ||||
-rw-r--r-- | src/render/backend/rendershader_p.h | 3 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/render/backend/rendershader.cpp b/src/render/backend/rendershader.cpp index a19bfd12d..48818615b 100644 --- a/src/render/backend/rendershader.cpp +++ b/src/render/backend/rendershader.cpp @@ -54,18 +54,30 @@ RenderShader::RenderShader() : QBackendNode() , m_program(Q_NULLPTR) , m_isLoaded(false) + , m_dna(0) { m_shaderCode.resize(static_cast<int>(QShaderProgram::Compute) + 1); } RenderShader::~RenderShader() { - cleanup(); + // TO DO: ShaderProgram is leaked as of now + // Fix that taking care that they may be shared given a same dna } void RenderShader::cleanup() { m_isLoaded = false; + m_dna = 0; + // TO DO: ShaderProgram is leaked as of now + // Fix that taking care that they may be shared given a same dna + m_program = Q_NULLPTR; + m_uniformsNames.clear(); + m_attributesNames.clear(); + m_uniformBlockNames.clear(); + m_uniforms.clear(); + m_attributes.clear(); + m_uniformBlocks.clear(); } void RenderShader::updateFromPeer(QNode *peer) @@ -100,6 +112,11 @@ QVector<QString> RenderShader::uniformBlockNames() const return m_uniformBlockNames; } +QVector<QByteArray> RenderShader::shaderCode() const +{ + return m_shaderCode; +} + void RenderShader::sceneChangeEvent(const QSceneChangePtr &e) { if (e->type() == NodeUpdated) { diff --git a/src/render/backend/rendershader_p.h b/src/render/backend/rendershader_p.h index bece7be93..d0a4d1e0e 100644 --- a/src/render/backend/rendershader_p.h +++ b/src/render/backend/rendershader_p.h @@ -57,7 +57,7 @@ class AttachmentPack; typedef uint ProgramDNA; -class RenderShader : public QBackendNode +class Q_AUTOTEST_EXPORT RenderShader : public QBackendNode { public: RenderShader(); @@ -72,6 +72,7 @@ public: QVector<QString> uniformsNames() const; QVector<QString> attributesNames() const; QVector<QString> uniformBlockNames() const; + QVector<QByteArray> shaderCode() const; void sceneChangeEvent(const QSceneChangePtr &e) Q_DECL_OVERRIDE; bool isLoaded() const; |