aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@jollamobile.com>2014-02-11 21:49:08 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-13 08:52:17 +0100
commit586ebf6c55ed095c2627185d90153ccfdc51c3d2 (patch)
treeda8eb8e341912724f215a1119744926c6ddb81f3 /src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
parent0b4e717f17bf98d46e315d9eb072f64b47efe7e6 (diff)
Enable program binary support through QSGRenderContext API.
Change-Id: I4eecff3c8a2c727d38d394305d248eddeef87e8e Reviewed-by: Michael Brasser <michael.brasser@live.com>
Diffstat (limited to 'src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp')
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp21
1 files changed, 6 insertions, 15 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
index 42a6c23982..249cdca1da 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
@@ -138,11 +138,6 @@ ShaderManager::Shader *ShaderManager::prepareMaterial(QSGMaterial *material)
QSurfaceFormat::OpenGLContextProfile profile = ctx->format().profile();
QOpenGLShaderProgram *p = s->program();
- p->addShaderFromSourceCode(QOpenGLShader::Vertex,
- qsgShaderRewriter_insertZAttributes(s->vertexShader(), profile));
- p->addShaderFromSourceCode(QOpenGLShader::Fragment,
- s->fragmentShader());
-
char const *const *attr = s->attributeNames();
int i;
for (i = 0; attr[i]; ++i) {
@@ -150,14 +145,10 @@ ShaderManager::Shader *ShaderManager::prepareMaterial(QSGMaterial *material)
p->bindAttributeLocation(attr[i], i);
}
p->bindAttributeLocation("_qt_order", i);
-
- p->link();
- if (!p->isLinked()) {
- qDebug() << "Renderer failed shader compilation:" << endl << p->log();
+ context->compile(s, material, qsgShaderRewriter_insertZAttributes(s->vertexShader(), profile), 0);
+ context->initialize(s);
+ if (!p->isLinked())
return 0;
- }
-
- s->initialize();
shader = new Shader;
shader->program = s;
@@ -196,8 +187,8 @@ ShaderManager::Shader *ShaderManager::prepareMaterialNoRewrite(QSGMaterial *mate
#endif
QSGMaterialShader *s = static_cast<QSGMaterialShader *>(material->createShader());
- s->compile();
- s->initialize();
+ context->compile(s, material);
+ context->initialize(s);
shader = new Shader();
shader->program = s;
@@ -776,7 +767,7 @@ Renderer::Renderer(QSGRenderContext *ctx)
m_shaderManager = ctx->findChild<ShaderManager *>(QStringLiteral("__qt_ShaderManager"), Qt::FindDirectChildrenOnly);
if (!m_shaderManager) {
- m_shaderManager = new ShaderManager();
+ m_shaderManager = new ShaderManager(ctx);
m_shaderManager->setObjectName(QStringLiteral("__qt_ShaderManager"));
m_shaderManager->setParent(ctx);
QObject::connect(ctx, SIGNAL(invalidated()), m_shaderManager, SLOT(invalidated()), Qt::DirectConnection);