summaryrefslogtreecommitdiffstats
path: root/src/render/jobs/loadtexturedatajob_p.h
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2018-02-20 15:21:13 +0100
committerPaul Lemire <paul.lemire@kdab.com>2018-02-28 10:44:49 +0000
commit3dff7c204da1d834629544b54b9f6efaafe165e2 (patch)
treef8529c267fd3a8ffa2f7e293682bdea219fe2897 /src/render/jobs/loadtexturedatajob_p.h
parenta43cf3726679704cc8c4c5a405c60c6f1c4fcfce (diff)
Revert "Keep rendering in sync with aspect jobs by adding barriers"
This reverts commit 46319648436814afb5a77755dde6681e304befaf. We want to be able to render one set of RenderViews for frame n while concurrently building RenderViews for frame n + 1. The reverted commit removed that behavior which reduced the CPU time available to prepare a frame. This would cause on some scenes a failure to meet the ~10ms budget we have to prepare a frame. This is therefore a regression. The root cause behind this regression is that a job cannot be executed until all the jobs which have been previously launched have completed. The proposed solution would be to instead add an OpenGL command thread that can be used to load graphics resources required for the RenderViews directly when required. This would in turn allow to cache RenderViews and keep the concurrent behavior of RenderView submission and creation. With that goal in mind, the following patches will be rebased and updated https://codereview.qt-project.org/#/c/189309/ https://codereview.qt-project.org/#/c/189310/ Change-Id: I4879047c45986a0e615e3aef7b7352f82a04a9da Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/jobs/loadtexturedatajob_p.h')
-rw-r--r--src/render/jobs/loadtexturedatajob_p.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/render/jobs/loadtexturedatajob_p.h b/src/render/jobs/loadtexturedatajob_p.h
index 7272bbc1d..607068712 100644
--- a/src/render/jobs/loadtexturedatajob_p.h
+++ b/src/render/jobs/loadtexturedatajob_p.h
@@ -67,7 +67,8 @@ class NodeManagers;
class LoadTextureDataJob : public Qt3DCore::QAspectJob
{
public:
- LoadTextureDataJob();
+ LoadTextureDataJob(const QTextureGeneratorPtr &texGen);
+ LoadTextureDataJob(const QTextureImageDataGeneratorPtr &imgDataGen);
~LoadTextureDataJob();
inline void setNodeManagers(NodeManagers *manager) { m_manager = manager; }
@@ -76,6 +77,9 @@ protected:
void run() final;
private:
+ QTextureGeneratorPtr m_texGen;
+ QTextureImageDataGeneratorPtr m_imgDataGen;
+
NodeManagers *m_manager;
};