summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/renderers/rhi/renderer/renderer.cpp3
-rw-r--r--src/plugins/renderers/rhi/renderer/renderview.cpp7
2 files changed, 5 insertions, 5 deletions
diff --git a/src/plugins/renderers/rhi/renderer/renderer.cpp b/src/plugins/renderers/rhi/renderer/renderer.cpp
index ccf2a0584..81d1194f3 100644
--- a/src/plugins/renderers/rhi/renderer/renderer.cpp
+++ b/src/plugins/renderers/rhi/renderer/renderer.cpp
@@ -1360,6 +1360,7 @@ Renderer::prepareCommandsSubmission(const std::vector<RenderView *> &renderViews
rhiPassesInfo.push_back(bucket);
}
+ RHIShaderManager *rhiShaderManager = m_RHIResourceManagers->rhiShaderManager();
// Assign a Graphics Pipeline to each RenderCommand
for (size_t i = 0; i < renderViewCount; ++i) {
RenderView *rv = renderViews[i];
@@ -1376,6 +1377,8 @@ Renderer::prepareCommandsSubmission(const std::vector<RenderView *> &renderViews
GeometryRenderer *rGeometryRenderer =
m_nodesManager->data<GeometryRenderer, GeometryRendererManager>(
command.m_geometryRenderer);
+
+ command.m_rhiShader = rhiShaderManager->lookupResource(command.m_shaderId);
// By this time shaders should have been loaded
RHIShader *shader = command.m_rhiShader;
if (!shader)
diff --git a/src/plugins/renderers/rhi/renderer/renderview.cpp b/src/plugins/renderers/rhi/renderer/renderview.cpp
index b37f57c45..c750373da 100644
--- a/src/plugins/renderers/rhi/renderer/renderview.cpp
+++ b/src/plugins/renderers/rhi/renderer/renderview.cpp
@@ -819,7 +819,6 @@ EntityRenderCommandData RenderView::buildDrawRenderCommands(const Entity **entit
int offset, int count) const
{
EntityRenderCommandData commands;
- RHIShaderManager *rhiShaderManager = m_renderer->rhiResourceManagers()->rhiShaderManager();
commands.reserve(count);
@@ -869,11 +868,9 @@ EntityRenderCommandData RenderView::buildDrawRenderCommands(const Entity **entit
m_renderer->defaultRenderState()->changeCost(command.m_stateSet.data());
}
command.m_shaderId = pass->shaderProgram();
- command.m_rhiShader = rhiShaderManager->lookupResource(command.m_shaderId);
-
- // It takes two frames to have a valid command as we can only
- // reference a glShader at frame n if it has been loaded at frame n - 1
+ // At submission time, shaderId is used to retrieve a RHIShader
+ // No point in continuing if shaderId is null
if (!command.m_shaderId)
continue;