summaryrefslogtreecommitdiffstats
path: root/src/render
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-11-15 07:15:14 +0000
committerMike Krus <mike.krus@kdab.com>2019-11-15 07:51:57 +0000
commitc0c87b0de8ea3023f4989ccf852c725e6295ffce (patch)
tree8dbb0e3fe4554f58515e37f422855b625ea32b93 /src/render
parenteaa0d0d632f258500d4b0ab9fd2ee3d3f47c1c8a (diff)
Use builtin test to detect support for threaded GL
Change-Id: Ie14d7ae597ec42e85befed87675388315edc3e6f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render')
-rw-r--r--src/render/frontend/qrenderaspect.cpp60
1 files changed, 2 insertions, 58 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp
index bc79982ba..5784b35f4 100644
--- a/src/render/frontend/qrenderaspect.cpp
+++ b/src/render/frontend/qrenderaspect.cpp
@@ -171,52 +171,10 @@
#include <Qt3DCore/private/qservicelocator_p.h>
#include <QThread>
-
-#ifdef Q_OS_MACOS
-#include <mach-o/dyld.h>
-#include <dlfcn.h>
-#endif
+#include <QOpenGLContext>
QT_BEGIN_NAMESPACE
-#ifdef Q_OS_MACOS
-namespace {
-
-// adapted from qcocoahelpers.mm in QtBase
-typedef QPair<QOperatingSystemVersion, QOperatingSystemVersion> VersionTuple;
-
-VersionTuple versionsForImage(const mach_header *machHeader)
-{
- static auto makeVersionTuple = [](uint32_t dt, uint32_t sdk) {
- return qMakePair(
- QOperatingSystemVersion(QOperatingSystemVersion::MacOS,
- dt >> 16 & 0xffff, dt >> 8 & 0xff, dt & 0xff),
- QOperatingSystemVersion(QOperatingSystemVersion::MacOS,
- sdk >> 16 & 0xffff, sdk >> 8 & 0xff, sdk & 0xff)
- );
- };
-
- auto commandCursor = uintptr_t(machHeader) + sizeof(mach_header_64);
- for (uint32_t i = 0; i < machHeader->ncmds; ++i) {
- load_command *loadCommand = reinterpret_cast<load_command *>(commandCursor);
- if (loadCommand->cmd == LC_VERSION_MIN_MACOSX) {
- auto versionCommand = reinterpret_cast<version_min_command *>(loadCommand);
- return makeVersionTuple(versionCommand->version, versionCommand->sdk);
-#if QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_13)
- } else if (loadCommand->cmd == LC_BUILD_VERSION) {
- auto versionCommand = reinterpret_cast<build_version_command *>(loadCommand);
- return makeVersionTuple(versionCommand->minos, versionCommand->sdk);
-#endif
- }
- commandCursor += loadCommand->cmdsize;
- }
- Q_ASSERT_X(false, "QCocoaIntegration", "Could not find any version load command");
- Q_UNREACHABLE();
-}
-
-}
-#endif
-
using namespace Qt3DCore;
namespace Qt3DRender {
@@ -248,24 +206,10 @@ QRenderAspectPrivate::QRenderAspectPrivate(QRenderAspect::RenderType type)
{
m_instances.append(this);
loadSceneParsers();
-#ifdef Q_OS_MACOS
- static VersionTuple version = []() {
- const mach_header *executableHeader = nullptr;
- for (uint32_t i = 0; i < _dyld_image_count(); ++i) {
- auto header = _dyld_get_image_header(i);
- if (header->filetype == MH_EXECUTE) {
- executableHeader = header;
- break;
- }
- }
- Q_ASSERT_X(executableHeader, "QCocoaIntegration", "Failed to resolve Mach-O header of executable");
- return versionsForImage(executableHeader);
- }();
- if (m_renderType == QRenderAspect::Threaded && version.second >= QOperatingSystemVersion(QOperatingSystemVersion::MacOSMojave)) {
+ if (m_renderType == QRenderAspect::Threaded && !QOpenGLContext::supportsThreadedOpenGL()) {
m_renderType = QRenderAspect::Synchronous;
m_renderAfterJobs = true;
}
-#endif
}
/*! \internal */