summaryrefslogtreecommitdiffstats
path: root/src/Runtime/Source/runtimerender/Qt3DSRenderRenderList.cpp
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2019-04-12 13:54:35 +0300
committerAntti Määttä <antti.maatta@qt.io>2019-05-03 09:34:00 +0000
commit73ebd0f9cf6376a762c96d37ab6046fefd8d4789 (patch)
treee415e2af7e30002563422ba9cbec02f3276b013e /src/Runtime/Source/runtimerender/Qt3DSRenderRenderList.cpp
parentccc70e48e576c0dffc289df4850a909fb6fef83d (diff)
Implement dynamic loading of slide resources
Implements loading of textures and images during runtime instead of load time. - Images which are not part of any slide are loaded at load time - Master slide images are always loaded at load time - Images used in a slide are loaded when the slide is entered - Images are unloaded when slide is exited and any other slide does not use them Task-number: QT3DS-3208 Change-Id: I7a827a5e828908efd2b104fe25374c66958319d2 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Runtime/Source/runtimerender/Qt3DSRenderRenderList.cpp')
-rw-r--r--src/Runtime/Source/runtimerender/Qt3DSRenderRenderList.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/Runtime/Source/runtimerender/Qt3DSRenderRenderList.cpp b/src/Runtime/Source/runtimerender/Qt3DSRenderRenderList.cpp
index 118c855d..05a7b2c4 100644
--- a/src/Runtime/Source/runtimerender/Qt3DSRenderRenderList.cpp
+++ b/src/Runtime/Source/runtimerender/Qt3DSRenderRenderList.cpp
@@ -45,6 +45,7 @@ struct SRenderList : public IRenderList
NVFoundationBase &m_Foundation;
TTaskList m_Tasks;
+ TTaskList m_PersistentTasks;
QT3DSU32 m_NextTaskId;
QT3DSI32 mRefCount;
bool m_ScissorEnabled;
@@ -54,6 +55,7 @@ struct SRenderList : public IRenderList
SRenderList(NVFoundationBase &fnd)
: m_Foundation(fnd)
, m_Tasks(fnd.getAllocator(), "m_Tasks")
+ , m_PersistentTasks(fnd.getAllocator(), "m_PersistentTasks")
, m_NextTaskId(1)
, mRefCount(0)
, m_ScissorEnabled(false)
@@ -71,8 +73,14 @@ struct SRenderList : public IRenderList
QT3DSU32 AddRenderTask(IRenderTask &inTask) override
{
QT3DSU32 taskId = m_NextTaskId;
- ++m_NextTaskId;
- m_Tasks.push_back(eastl::make_pair(taskId, &inTask));
+ if (inTask.persistent()) {
+ m_PersistentTasks.push_back(eastl::make_pair(0, &inTask));
+ taskId = 0;
+ } else {
+ QT3DSU32 taskId = m_NextTaskId;
+ ++m_NextTaskId;
+ m_Tasks.push_back(eastl::make_pair(taskId, &inTask));
+ }
return taskId;
}
@@ -89,9 +97,15 @@ struct SRenderList : public IRenderList
// before rendering to the main render target.
void RunRenderTasks() override
{
+ for (TTaskList::reverse_iterator iter = m_PersistentTasks.rbegin(),
+ end = m_PersistentTasks.rend(); iter != end;
+ ++iter) {
+ iter->second->Run();
+ }
for (TTaskList::reverse_iterator iter = m_Tasks.rbegin(), end = m_Tasks.rend(); iter != end;
- ++iter)
+ ++iter) {
iter->second->Run();
+ }
BeginFrame();
}