diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-01-10 21:34:10 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-01-10 21:34:10 +0100 |
commit | b0e11393968ceaad8c35e7df528c73a5e6111f32 (patch) | |
tree | 38ba2cd55e2c605225d583225814ada8b995d743 /src/render/renderers | |
parent | 55b52c47030c759f8b38013eb873c0b161d0e426 (diff) | |
parent | 82eb8b44e0a3d1dc586acc52132be2b05102900c (diff) |
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
.qmake.conf
Change-Id: Ie8a4bf768bffba61dca9e315151c035be7b48723
Diffstat (limited to 'src/render/renderers')
-rw-r--r-- | src/render/renderers/opengl/renderer/renderer.cpp | 3 | ||||
-rw-r--r-- | src/render/renderers/opengl/renderer/renderview.cpp | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp index 9aed183b0..4abe62bab 100644 --- a/src/render/renderers/opengl/renderer/renderer.cpp +++ b/src/render/renderers/opengl/renderer/renderer.cpp @@ -1797,7 +1797,8 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs() renderBinJobs.push_back(m_updateShaderDataTransformJob); } - if (dirtyBitsForFrame & AbstractRenderer::GeometryDirty) { + if (dirtyBitsForFrame & AbstractRenderer::GeometryDirty || + dirtyBitsForFrame & AbstractRenderer::BuffersDirty) { renderBinJobs.push_back(m_calculateBoundingVolumeJob); renderBinJobs.push_back(m_updateMeshTriangleListJob); } diff --git a/src/render/renderers/opengl/renderer/renderview.cpp b/src/render/renderers/opengl/renderer/renderview.cpp index 39fed2294..3aa45c836 100644 --- a/src/render/renderers/opengl/renderer/renderview.cpp +++ b/src/render/renderers/opengl/renderer/renderview.cpp @@ -1065,6 +1065,13 @@ void RenderView::setShaderAndUniforms(RenderCommand *command, setDefaultUniformBlockShaderDataValue(command->m_parameterPack, shader, shaderData, QStringLiteral("envLight")); envLightCount = 1; } + } else { + // with some drivers, samplers (like the envbox sampler) need to be bound even though + // they may not be actually used, otherwise draw calls can fail + static const int irradianceId = StringToInt::lookupId(QLatin1String("envLight.irradiance")); + static const int specularId = StringToInt::lookupId(QLatin1String("envLight.specular")); + setUniformValue(command->m_parameterPack, irradianceId, m_renderer->submissionContext()->maxTextureUnitsCount()); + setUniformValue(command->m_parameterPack, specularId, m_renderer->submissionContext()->maxTextureUnitsCount()); } setUniformValue(command->m_parameterPack, StringToInt::lookupId(QStringLiteral("envLightCount")), envLightCount); } |