summaryrefslogtreecommitdiffstats
path: root/src/render/renderers/opengl/jobs
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-11-29 12:20:11 +0100
committerPaul Lemire <paul.lemire@kdab.com>2019-12-02 12:35:49 +0100
commite5f99df24f4a587e30f9bba08cc5398c6d8354e3 (patch)
treefb80dd26472bda4c8f99780016618238d5b7439e /src/render/renderers/opengl/jobs
parenta2b5b5c8f6e09ccfaca8044b34f4d9675c3be14a (diff)
RenderViewCommandUpdaterJob: stop copying renderables data
This makes the post command update synchronization job a lot faster. Change-Id: I845c39cd4e2c0e56e8eefa05bbdd20d0bc3d2454 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/renderers/opengl/jobs')
-rw-r--r--src/render/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp8
-rw-r--r--src/render/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h12
2 files changed, 13 insertions, 7 deletions
diff --git a/src/render/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp b/src/render/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp
index af1d545ed..95c352dbe 100644
--- a/src/render/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp
+++ b/src/render/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp
@@ -54,6 +54,8 @@ int renderViewInstanceCounter = 0;
RenderViewCommandUpdaterJob::RenderViewCommandUpdaterJob()
: Qt3DCore::QAspectJob()
+ , m_offset(0)
+ , m_count(0)
, m_renderView(nullptr)
, m_renderer(nullptr)
{
@@ -66,11 +68,7 @@ void RenderViewCommandUpdaterJob::run()
// if a child has a mesh in the view frustum while its parent isn't contained in it.
if (!m_renderView->noDraw()) {
// Update Render Commands (Uniform Change, Depth Change)
- m_renderView->updateRenderCommand(m_renderables);
-
- // Copy commands out of cached -> ensures we can submit them for rendering
- // while cache is rebuilt or modified for next frame
- m_commands = m_renderables.commands;
+ m_renderView->updateRenderCommand(m_renderables, m_offset, m_count);
}
}
diff --git a/src/render/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h b/src/render/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h
index 72caef6cf..e6df3f3b3 100644
--- a/src/render/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h
+++ b/src/render/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h
@@ -71,16 +71,24 @@ public:
inline void setRenderView(RenderView *rv) Q_DECL_NOTHROW { m_renderView = rv; }
inline void setRenderer(Renderer *renderer) Q_DECL_NOTHROW { m_renderer = renderer; }
- inline void setRenderables(const EntityRenderCommandData &renderables) Q_DECL_NOTHROW { m_renderables = renderables; }
+ inline void setRenderables(EntityRenderCommandData *renderables, int offset, int count) Q_DECL_NOTHROW
+ {
+ m_offset = offset;
+ m_count = count;
+ m_renderables = renderables;
+ }
+ EntityRenderCommandData *renderables() const { return m_renderables; }
QVector<RenderCommand> &commands() Q_DECL_NOTHROW { return m_commands; }
void run() final;
private:
+ int m_offset;
+ int m_count;
RenderView *m_renderView;
Renderer *m_renderer;
- EntityRenderCommandData m_renderables;
+ EntityRenderCommandData *m_renderables;
QVector<RenderCommand> m_commands;
};