From 653ff3d4d5f992b64c4949e9741f4213a81a9f42 Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Mon, 23 Feb 2015 10:10:34 +0100 Subject: 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 --- src/render/backend/rendershader.cpp | 19 ++++++++++++++++++- src/render/backend/rendershader_p.h | 3 ++- 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'src') 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(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 RenderShader::uniformBlockNames() const return m_uniformBlockNames; } +QVector 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 uniformsNames() const; QVector attributesNames() const; QVector uniformBlockNames() const; + QVector shaderCode() const; void sceneChangeEvent(const QSceneChangePtr &e) Q_DECL_OVERRIDE; bool isLoaded() const; -- cgit v1.2.3