summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* | QBackendNode make simple getter Q_DECL_NOEXCEPTPaul Lemire2016-01-132-4/+4
| | | | | | | | | | Change-Id: If99dd5082d8a45b7c06fa585c69cd378d470247a Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | RenderView: completed Compute code pathPaul Lemire2016-01-131-10/+26
| | | | | | | | | | Change-Id: I7fb4569bfcb7b9a0427dbaa67edcf7e005bb5762 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Entity: add reference to QComputeJob componentPaul Lemire2016-01-132-0/+31
| | | | | | | | | | Change-Id: I1a99115b78478ec143a83a2f768a7249d9038ac0 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | QRenderAspect: register backend type for QComputeJobPaul Lemire2016-01-131-0/+3
| | | | | | | | | | Change-Id: Id7124395233757cd62de0f1c9153f348603ed980 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | RenderView: sliglty modified to later accommodate compute callsPaul Lemire2016-01-137-115/+155
| | | | | | | | | | Change-Id: Ic821747677c9d2f117494d2ecfd89f47f982fa3f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | QParameter: only copy QNodeId when parameter value is a QNodeSubclassPaul Lemire2016-01-135-58/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | This avoid doing useless clones and will be further improved to support UBO/SSBO when Buffer are used as a Parameter's value. QNode subclasses that can be used as the value of an attribute are: QAbstractTextureProvider -> default uniform block QShaderData -> UBO (could be made to work with SSBO as well) Buffer -> UBO / SSBO Change-Id: I4928b95107656afc64db1ef989dde5dde8a92df8 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | show() is not virtual in QWindowKevin Ottens2016-01-133-19/+24
| | | | | | | | | | | | | | | | | | | | | | | | It's better to know if we're shown using showEvent() which is virtual than show() which isn't. By reimplementing the non-virtual show we break all uses going through a QWindow* and not a Qt3DRender::QWindow*. This is necessary for instance to get Qt3DRender::QWindow compatible with QWindowContainer (which calls ::QWindow::show()). Change-Id: I7ae367bbb7d539ba6caf336893d5d8ce53421d5d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | ComputeJobManager addedPaul Lemire2016-01-134-0/+29
| | | | | | | | | | Change-Id: Ia3d1c209ea06ce6a6fd3aa87f4034d3eeaeffdda Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | QComputeJob exported to QMLPaul Lemire2016-01-131-0/+4
| | | | | | | | | | Change-Id: Ibc8ac6d59f8ed85b588cae1f2f92e8d37a342954 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | ComputeJob: backend for QComputeJobPaul Lemire2016-01-133-2/+157
| | | | | | | | | | Change-Id: I13fb35d0e6d31275463034c3e4bdd92c3f528a4e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | QComputeJob component addedPaul Lemire2016-01-134-2/+220
| | | | | | | | | | Change-Id: Iac662f21ca399c6998cff37eeac1f165b34a9c28 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | RenderView Compute handlingPaul Lemire2016-01-134-15/+39
| | | | | | | | | | Change-Id: Ifbe93173010bf058f198990c62d5e93fea967a74 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | GLBuffer: modified to be used as a generic GL bufferPaul Lemire2016-01-133-9/+50
| | | | | | | | | | Change-Id: I6e3b763864587ac4b12f6a458f84d3642f20b32c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Rename UniformBuffer to GLBufferPaul Lemire2016-01-1310-35/+35
| | | | | | | | | | | | | | | | This class could be reused for any kind of GLBuffer (not just uniform buffer) so rename it accordingly. Change-Id: I978696534f64fc3717ac135af94e9fe44aa23fba Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Shaders: retrieve SSBO blockPaul Lemire2016-01-1316-42/+221
| | | | | | | | | | Change-Id: I62065d30b197367c8e5e03099c3af034892c4038 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Added front end classes as a start to support aggregate actionsColin Ogilvie2016-01-128-2/+533
| | | | | | | | | | Change-Id: Ic852ccf3994bb8604924687165bb49cb1dec3077 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Start at implementing QAbstractAction InputColin Ogilvie2016-01-1210-32/+151
|/ | | | | Change-Id: I392dd326cb0bf1b8c12b72d8554a866156d43e76 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Android: handle image from assetsBogDan Vatra2016-01-111-1/+5
| | | | | | Task-number: QTBUG-46866 Change-Id: I0f7f8bcb3afe528e9a00270025ed42e950221800 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix crash when Scene3DItem is removed from sceneMauro Persano2016-01-112-32/+34
| | | | | | | | | | | | Under certain situations the windowChanged signal was being triggered after the Scene3DItem was already removed from the scene, causing a crash in Scene3DRenderer::render(). Use itemChange() instead to check when the item is removed instead of the windowChanged signal. Change-Id: Ia635081eca213c8d6e3bd4a59aafaa3dcc86d7e3 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix race on QAspectManager shutdownMauro Persano2016-01-082-0/+5
| | | | | | | | | | | | | | When QAspectManager::quit() is called, the exec() loop finishes. Then QAspectThread calls shutdown() and deletes the QAspectManager instance. However, in certain cases, the QAspectManager object can be deleted before QAspectThread::quit() has a chance to finish running, causing a crash when it tries to acquire the m_waitForEndOfExec semaphore. Make exec() wait for quit() to prevent this. Change-Id: I579e3e6b5684984ec32497852d94cc050cccbef5 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Replace QTextStream with QString::splitRefMauro Persano2016-01-071-38/+52
| | | | | Change-Id: I0a540dfdcbe5f28df38cf406c771c828e25abd64 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Use QFuture::waitForFinished directly.Volker Krause2016-01-071-7/+2
| | | | | | | | | | QFutureWatcher::waitForFinished calls the same internally, but adds additional overhead we don't need here. Saves a couple of allocations per frame. Change-Id: I616a527068fd1c55238ca88b2fc753b423116e32 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Avoid unnecessary detaching.Volker Krause2016-01-072-4/+4
| | | | | Change-Id: Ied910d38c400b34a38f6eaea9683107b079513ec Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix RenderViewJob crash on Renderer shutdownMauro Persano2016-01-071-0/+2
| | | | | | | | | | | | Set Renderer::m_running to zero to prevent crashes when Renderer::shutdown is called while a RenderViewJob is running. This only affects QtQuick/Scene3D. It's not a problem in the case of pure Qt3D, as Renderer::m_running is set to zero when Renderer::setSurface(0) is called before Renderer::shutdown. Change-Id: I41f8da7589c098c6df9d24792932a293df7982aa Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add glBlendFunci() to GraphicsContext + GraphicsHelperWieland Hagen2016-01-0713-0/+53
| | | | | | | | Only for OpenGL 4.0. Task-number: QTBUG-50005 Change-Id: I70984a2bff3afc04539efa7dea60196aa06e72d2 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Sort GraphicsContext + GraphicsHelper methodsWieland Hagen2016-01-077-210/+211
| | | | | | | They were a big mess, now they are a smaller mess. Change-Id: I4e21e340a24588370cf8b17b54ebb9e03fe07b4a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add a few more QVector::reserve calls.Volker Krause2016-01-073-0/+4
| | | | | | | Found by heaptrack, all relevant for per-frame allocations. Change-Id: I12ef71f6bd1bca2ca78f4bfbd295265d840b4232 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Support KHR_materials_common in the glTF parserLaszlo Agocs2016-01-072-13/+123
| | | | | | | | Map to the built-in materials as much as possible. Task-number: QTBUG-49384 Change-Id: I6c73c0cfcc327323c51ae2f3735cc7f3c53fbfee Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Use .qgltf extension for qgltf-generated glTF filesLaszlo Agocs2016-01-071-1/+1
| | | | | | | | | | Let's avoid future confusion by using a custom extension for the main JSON document. In case assimp gets upgraded to a future version supporting glTF files for example, confusion can arise due to the conflicting file extensions in the scene parser plugins. Change-Id: I370cc45cc399cae4f425d86574ccea9cd6c59d4f Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Avoid expensive multiple QString::arg usage on this hot path.Volker Krause2016-01-061-4/+3
| | | | | | | | | The string operations in here are still one of the largest contributors to per-frame allocations, but at least this spot is now down to three allocations per frame and per light. Change-Id: Ieab3b882c87e8fa8d4d4dedb46a3a482ebb07d6f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix dynamic texture provider property handlingLaszlo Agocs2016-01-065-8/+10
| | | | | | | | The Q_PROPERTY has to include the namespace, otherwise setting properties via QObject::setProperty() will fail. Change-Id: Ifdf7012fd8b670710bac38eb0e5ce8eab057e719 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Use QList::reserve.Volker Krause2016-01-062-0/+7
| | | | | | | | The intermediate QLists are still not optimal here, as these methods are called per frame, but at least this is now down to one allocation each. Change-Id: I7705172aabc5e526c5123d70450d3ae2dec20d03 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Use QString::splitRef rather than QString::split.Volker Krause2016-01-061-1/+1
| | | | | | | This avoids countless unnecessary string allocations here. Change-Id: I5f5b474ca7b335ccb7bf1083fd85aa85e3a9e8a4 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix leak, less copyingFrank Meerkoetter2016-01-051-2/+3
| | | | | | | | | Do not leak the textureContent array. Change-Id: I9e7ed258206f0485a02482958ba9fcf6396b3170 Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Avoid frequent method lookups by name.Volker Krause2016-01-051-2/+11
| | | | | | | | | Name based lookups are fairly expensive, especially since they involve parsing of the method name, which includes allocations. Change-Id: I465d4ddd92764a7e82dc80aa4e697c25e30c00d2 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Avoid expensive QHash::keys() call in obj loader.Volker Krause2016-01-051-6/+4
| | | | | | | | | This hurts particularly bad here as the key type is too large for QList to be efficient, causing 140k QList node allocations with my test model. Change-Id: I46b8e347520a768d71ba6ed02d161c40e3af3c59 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix parameter mismatch in QDiffuseMapMaterialLaszlo Agocs2016-01-051-1/+1
| | | | | | Task-number: QTBUG-50126 Change-Id: Ia0f4ec12b2598f2b117cc5860c648310e2dca0b9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move QTextStream creation out of the loop.Volker Krause2016-01-051-1/+2
| | | | | | | | This saves one QObject allocation per line of an obj file (which tend to be quite large), for the QDeviceCloseNotifier in QTextStreamPrivate. Change-Id: Ia5762f497782ee4356c2f807dd02f9ab73eccf70 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix target type for Texture3DSean Harmer2016-01-041-1/+1
| | | | | | | Task-number: QTBUG-50214 Change-Id: I11b18e8559b4625137874286afaa40917ea35472 Reviewed-by: Mike Krus <mike.krus@kdab.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Add "We mean it" warningSean Harmer2016-01-021-0/+11
| | | | | | Change-Id: I3bcc071091e4d89090393d0b65704bef15bcc342 Reviewed-by: Mike Krus <mike.krus@kdab.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Fix plugin name for static builds (iOS)Mike Krus2015-12-301-1/+1
| | | | | Change-Id: I6e588218f02f4d60b196d211e932ce8342588f0a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Stop using enum references that require C++11.Raphael Kubo da Costa2015-12-303-29/+29
| | | | | | | | | | | Use Qt::Foo instead of Qt::Enum::Foo, which is a C++11 extension. When building with clang without -std=c++11, this results in warnings. With older GCC versions, the code simply does not build. This is similar to commit deffdaf9 ("GraphicsHelper: fix switch"). Change-Id: I28389b90bafb3df87187742ef55267ce2df1ba1a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Added QPointSize RenderStateWieland Hagen2015-12-279-3/+257
| | | | | | | | | Point Sizes may be specified 2 ways: either statically via glPointSize() (OpenGL 2.0+) or by enabling GL_PROGRAM_POINT_SIZE. Task-number: QTBUG-49997 Change-Id: I98887484cf31df01b98801e1f324487ee7bf7492 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add glPointSize() helper functionsWieland Hagen2015-12-2713-0/+67
| | | | | | | | | | OpenGL ES 2.0 doesn't support glPointSize(), but OpenGL 2.0+ does, so we need to call it though a QGraphicsHelperInterface. When on OpenGL ES 2.0, just print a warning. Task-number: QTBUG-49562 Change-Id: Icbd5f602cae38f95925d99003ec3ee9aebb3719e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add debug code to catch errors with removing job dependenciesSean Harmer2015-12-222-0/+8
| | | | | | | Helps to catch problems fixed in the parent commit. Change-Id: I6209fd3bac7e127d88f917f5aad54c668651e8a2 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix slow down seen with long running applicationSean Harmer2015-12-221-1/+7
| | | | | | | | | | | | | | | | When Qt3D applications are left running for extended periods a gradual slow down was noticed. This turned out to be caused by spending a long time sorting the job dependencies in the thread pooler caused by an ever increasing number of dependencies. This in turn is caused by the render aspect not properly clearing out old dependencies between one frame and the next. This change fixes this kind of mistake in two places. Qt3D applications now no longer slow down over time. Change-Id: I32c258009c98120b38c8c8fa47641dcf336e9588 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Allow device integration impls to see the aspectKevin Ottens2015-12-212-0/+9
| | | | | Change-Id: I257ecd56a454ba7ad969859fad94fc45a8e729c4 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move the signals earlier in definitionKevin Ottens2015-12-182-8/+8
| | | | | | | | | Mainly to satisfy my OCD, this way we got all the public first, then signals, then protected, then private. It's the usual ordering in most places. Change-Id: I63a96714e9027b3a0a7fead4bda141922d51ddff Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make parentEntityId privateKevin Ottens2015-12-184-8/+11
| | | | | | | | It is used only once in the whole of Qt3D and looks rather foreign to the rest of the nodes API. Change-Id: I6d8d40590a1f8a5c2019a8d16a7abff4f19ae9bb Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* The Renderer depends only on the QServiceLocatorKevin Ottens2015-12-185-11/+9
| | | | | | | | | This way the only thing Renderer knows about QRenderAspect is the enum controlling the render more (threaded or synchronous). We properly decoupled both now. Change-Id: I0023efec541d40f7b499da4355d5cd8b796d2194 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>