summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-02-23 10:10:34 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-02-28 16:28:48 +0000
commit653ff3d4d5f992b64c4949e9741f4213a81a9f42 (patch)
tree7b71da7035a32293f6d288148ee3660196575c6f /src
parenta563b09776cbb1151d804b07c48b3028a1807efd (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.cpp19
-rw-r--r--src/render/backend/rendershader_p.h3
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;