diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2020-08-24 14:47:17 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2020-08-26 12:53:22 +0200 |
commit | 9a07ff46ac224e810126622685385993acc6f16b (patch) | |
tree | 62e880dd78b53469510d151b89cd857d1a1c9cb0 /src/render/jobs/renderviewjobutils.cpp | |
parent | 607235b72918a416268b45772c6bbc2f86c32e9b (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.cpp | 18 |
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 |