diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-02-11 08:47:00 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-02-21 10:36:29 +0000 |
commit | 2fd869c0f36e821d0bfdb3a4edbb344a0d4190b9 (patch) | |
tree | 9b442a6a50ac34ccdeb620295df0fa0402648f51 /src/render/materialsystem/shader_p.h | |
parent | 1e409bf2e5e7e21a25d9913ea044fe08db6ff787 (diff) |
RenderViews: use int comparison rather than string for uniforms filtering
Provides a non negligible gain in performance.
Change-Id: I1165d1fcd044e3bdebf286539da2f5316f764540
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/materialsystem/shader_p.h')
-rw-r--r-- | src/render/materialsystem/shader_p.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/render/materialsystem/shader_p.h b/src/render/materialsystem/shader_p.h index 88694fd98..794ccc77d 100644 --- a/src/render/materialsystem/shader_p.h +++ b/src/render/materialsystem/shader_p.h @@ -84,6 +84,10 @@ public: void updateUniforms(GraphicsContext *ctx, const ShaderParameterPack &pack); void setFragOutputs(const QHash<QString, int> &fragOutputs); + QVector<int> uniformsNamesIds() const; + QVector<int> uniformBlockNamesIds() const; + QVector<int> storageBlockNamesIds() const; + QVector<QString> uniformsNames() const; QVector<QString> attributesNames() const; QVector<QString> uniformBlockNames() const; @@ -100,11 +104,14 @@ public: QVector<ShaderStorageBlock> storageBlocks() const; QHash<QString, ShaderUniform> activeUniformsForUniformBlock(int blockIndex) const; - ShaderUniformBlock uniformBlock(int blockIndex); - ShaderUniformBlock uniformBlock(const QString &blockName); - ShaderStorageBlock storageBlock(int blockIndex); - ShaderStorageBlock storageBlock(const QString &blockName); + ShaderUniformBlock uniformBlockForBlockIndex(int blockNameId); + ShaderUniformBlock uniformBlockForBlockNameId(int blockIndex); + ShaderUniformBlock uniformBlockForBlockName(const QString &blockName); + + ShaderStorageBlock storageBlockForBlockIndex(int blockIndex); + ShaderStorageBlock storageBlockForBlockNameId(int blockNameId); + ShaderStorageBlock storageBlockForBlockName(const QString &blockName); private: QOpenGLShaderProgram *m_program; @@ -113,16 +120,19 @@ private: QOpenGLShaderProgram *createDefaultProgram(); QVector<QString> m_uniformsNames; + QVector<int> m_uniformsNamesIds; QVector<ShaderUniform> m_uniforms; QVector<QString> m_attributesNames; QVector<ShaderAttribute> m_attributes; QVector<QString> m_uniformBlockNames; + QVector<int> m_uniformBlockNamesIds; QVector<ShaderUniformBlock> m_uniformBlocks; QHash<int, QHash<QString, ShaderUniform> > m_uniformBlockIndexToShaderUniforms; QVector<QString> m_shaderStorageBlockNames; + QVector<int> m_shaderStorageBlockNamesIds; QVector<ShaderStorageBlock> m_shaderStorageBlocks; QHash<QString, int> m_fragOutputs; |