summaryrefslogtreecommitdiffstats
path: root/src/render/jobs/renderviewjobutils.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2020-08-24 14:47:17 +0200
committerPaul Lemire <paul.lemire@kdab.com>2020-08-26 12:53:22 +0200
commit9a07ff46ac224e810126622685385993acc6f16b (patch)
tree62e880dd78b53469510d151b89cd857d1a1c9cb0 /src/render/jobs/renderviewjobutils.cpp
parent607235b72918a416268b45772c6bbc2f86c32e9b (diff)
Move sync jobs to a common place so that they can be used by rhi and opengl
This reduces duplication and will make it easier in the long run to maintain both backends since what these jobs are doing are doesn't really on the rendering backend in use. Change-Id: I9e51f964880874de52a2fa55c7753a1a5633d023 Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/jobs/renderviewjobutils.cpp')
-rw-r--r--src/render/jobs/renderviewjobutils.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/render/jobs/renderviewjobutils.cpp b/src/render/jobs/renderviewjobutils.cpp
index 369ad2f66..11c7cbd98 100644
--- a/src/render/jobs/renderviewjobutils.cpp
+++ b/src/render/jobs/renderviewjobutils.cpp
@@ -225,6 +225,24 @@ bool ParameterInfo::operator<(const int otherNameId) const Q_DECL_NOEXCEPT
return nameId < otherNameId;
}
+int findIdealNumberOfWorkers(int elementCount, int packetSize, int maxJobCount)
+{
+ if (elementCount == 0 || packetSize == 0)
+ return 0;
+ return std::min(std::max(elementCount / packetSize, 1), maxJobCount);
+}
+
+std::vector<Entity *> entitiesInSubset(const std::vector<Entity *> &entities, const std::vector<Entity *> &subset)
+{
+ std::vector<Entity *> intersection;
+ intersection.reserve(qMin(entities.size(), subset.size()));
+ std::set_intersection(entities.begin(), entities.end(),
+ subset.begin(), subset.end(),
+ std::back_inserter(intersection));
+
+ return intersection;
+}
+
} // namespace Render
} // namespace Qt3DRender