summaryrefslogtreecommitdiffstats
path: root/src/core
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Update commercial license headers"v5.15.3-lts-lgplTarja Sundqvist2021-03-23189-3750/+3750
| | | | | | | | | | | This reverts commit 03e5f60e585701608c1181365faee484d7a1f14c. Revert of commercial license headers is required for Qt 5.15.3 opensource release. Task-number: QTBUG-91108 Change-Id: I359e89ed77b1b2750607617d138ebb6c316f0296 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Update commercial license headersTarja Sundqvist2021-02-02189-3750/+3750
| | | | | | | | | | | | | | | | Updated header.COMM to the files in tqtc-qt3d. Examples, documentation files or tests are not updated. The commercial license header may contain some additional lines so that its line count equals with the earlier license header. Reason for this is that some autotests use hard coded line numbers and a change in the line count causes failures in tests. Task-number: QTQAINFRA-4155 Change-Id: I139c8ad72c042b0900239decc36cfed4bc1c4951 Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
* Fix a crash when node is added and destroyed immediatelySean Harmer2020-10-051-0/+5
| | | | | | | | | | | | | | When a node is added to the scene it is scheduled for a post-creation initialization. However, if the node is destroyed before this post-creation queue has been processed we will crash. This commit ensures that the node being deleted is removed from the post-creation queue. Usually the queue will be empty and so this should not add a performance penalty. Change-Id: Ibe4289e1e54cdb145f8588f15dc4ad894e427582 Reviewed-by: Mike Krus <mike.krus@kdab.com> (cherry picked from commit 0a533673b5450d49725d23e08ac13b03fad564fb)
* Ensure Scene3D re-renders when a backend node is updatedSean Harmer2020-10-012-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two ways in which backend nodes can receive changes from the frontend: 1) By syncing the state directly from the frontend nodes 2) By changs delivered by the change arbiter Scene3D is already equipped to deal with changes going via the first mechanism. However, it is possible for changes going via the second mechanism to not trigger a re-render of a Scene3D item using the OnDemand render mode. This is even true in the case of using a Scene3D inside of a QQuickWidget even though this disables the threaded Qt Quick 2 rendering. The way this manifests is that: * A change is made via mechanism 2) such as creating some new nodes. * The frontend changes trigger a re-render of the Scene3D item via the existing notification mechanism (connection to the change arbiter's receivedChange() signal. * The QQuickWidget uses a timerEvent() to trigger a possible update * This notices the Scene3D is dirty and causes it to render and mark its state as clean. This does not yet pick up the newly created frontend nodes though as they need to go through the deferred post creation init dance. * The change arbiter then processes the deferred node creation events and creates the backend nodes. * At the next timerEvent from the QQuickWidget it still sees that the Scene3D is clean and does not bother to re-render it. This change fixes this by adding a new signal to the change arbiter, syncedChanges() that gets emitted only when the arbiter has actually finished distributing the changes going via mechanism 2) to the backend nodes. This syncedChhanges() signal is emitted on the aspect thread and so Scene3DItem connects to this using a queued connection. This then ensures that once the new backend nodes are actually present and up to date that the Scene3D in OnDemand mode will then re-render the scene with the complete scene graph. Change-Id: I3246f34a3cfe15392a390eb6d97b4e90346288a6 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Add QNodePrivate::registerDestructionHelper for std::vector containersPaul Lemire2020-09-241-0/+19
| | | | | | | | | Ideally should support generic containers but clang seems to fail to generate the symbol on the mac. Change-Id: Ic1d6d815ab9aff60a97b3b0047228f55d7efe158 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> (cherry picked from commit 5a33b94b348e5c65155b526e7746d9fe45560959)
* Fix compilation error with -no-avx2Laurent Rineau2020-08-312-4/+4
| | | | | | | Change-Id: I1aa49328226d5e3f1da4bd86704c7fad44da6ad9 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit d41b639cc46e5d76aa7f779e6ef37bfd4e6c2e72) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Rework Scene3D to fix potential crash on shutdownPaul Lemire2020-08-251-1/+2
| | | | | | | | | | | | | | | | | - Rework Scene3DRenderer/Scene3DItem to remove coupling and help simplify the flow - Introduce a Scene3DManagerNode to manager lifetime of the Scene3DRenderer. Rely on the Scene3DManagerNode dtor to know to shutdown the Qt3D renderer in the proper thread. - Try to handle the fact that destruction order between Item and SGNode is random by using an AspectEngineDestroyer helper - Stop using a sharedptr to store the QEntity on the Scene3DItem side. This can lead to crashes as the AspectEngine assumes it is the sole owner of the Entity ptr. Change-Id: I14915705eb9ab1195b2b783cbbb45076acc2ac1a Task-number: QTBUG-84847 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Job Graph dump improvementsPaul Lemire2020-08-251-1/+1
| | | | | | | | | | | - Reverse dependency order so that graph shows jobs from first to last instead of last to first - Add instance id to RenderViewBuilder jobs, otherwise it all appears as if there's a single instance of a given job when in reality there is one per RenderView Change-Id: Id47764151f0321c794068e71e21a25e921d04589 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* QResourcesManager: switch to std::vectorPaul Lemire2020-06-041-3/+3
| | | | | | | | | | Given QVector is potentially slower for this use case and the fact that QVector might become QList in Qt6, we're better of using the std. Change-Id: If2c403439ddb856b60f8bfd5ae7c6ec1cb2c892a Reviewed-by: Mike Krus <mike.krus@kdab.com> (cherry picked from commit 04bdb35a6c5f5fe417c06392e6a0861d80ec9dba)
* Centralize the maxThreadCount informationPaul Lemire2020-05-272-11/+17
| | | | | | | | | | | | Add a static function on QThreadPooler which returns the ideal thread count (capped by QT3D_MAX_THREAD_COUNT) if set. Call that function from all places that need that information. Avoids code duplication and potentially reading the env value every frame. Change-Id: I699691af33ed0a65aa557ed48aabb9de8929dcc2 Reviewed-by: Mike Krus <mike.krus@kdab.com> (cherry picked from commit 1097607f112e79ddb4fc08d012db95faa193c4ea)
* Add missing overrideAlexander Volkov2020-05-251-1/+1
| | | | | Change-Id: I6a2a4577b4c45d7ac601d2693044c3817e245111 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Fix compilation on Windows with -qt3d-simd avx2Paul Lemire2020-04-201-2/+2
| | | | | | | | | | | Q_3DCORE_PRIVATE_EXPORT for operator* were removed by commit: fa6799f63f3211300705b814b97716ca689d4bfa for Vector3D_SSE and Matrix4x4_SSE. Unfortunately they weren't removed for Matrix4x4_AVX2 which lead to different linkage compile errors. Change-Id: I854fb0cb4409aea1d130e935091533d4e72d6d6e Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Animations: fix race condition on running clip animators vectorPaul Lemire2020-04-201-0/+2
| | | | | | | | | | | Was caused by incorrect dependencies on the jobs. Introduced a clearDependencies on QAspectJobPrivate to clear all dependencies as removeDepencies(emptyVector) only removes null dependencies. Change-Id: I8119a9edaf841db6c5ab2a971dc5640da2192cba Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Don't look up backend node if frontend not updated yetv5.15.0-beta3Mike Krus2020-03-311-0/+2
| | | | | | | | | If node parent / child or entity / component changes before the backend nodes where created, records might not be complete yet. Task-number: QTBUG-82269 Change-Id: Id8238410331626130bb71bb1653ac5cb5d5270d4 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix scene graph dumpMike Krus2020-03-201-8/+9
| | | | | | | Might have QNodes "between" parents and child entities. Change-Id: Ie041508ec96c39b779bc75a6ad4d38c604e322e2 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Make QAspectJobPrivate::isRequired() constPaul Lemire2020-03-174-7/+7
| | | | | Change-Id: I8747c5714b4a25523835d558fa96888ea0ebcfed Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Initial creation of RHI plug-in and refactoringJean-Michaël Celerier2020-03-161-1/+1
| | | | | Change-Id: Ifbb51003e15f798798040597b5f7224641e8147c Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix memory leaksMike Krus2020-03-042-5/+20
| | | | | | | | | | | Some jobs get skipped because they don't have anything to do. However, since the runnable does not get submitted to the pool, it would leak (along with the job it points to). Also fixed a couple of compile warnings. Change-Id: I7a25649f2f760c0593862328c0ab905da98c982a Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Revert "Replace deprecate QNetworkReply::error() call"Timur Pocheptsov2020-02-241-1/+1
| | | | | | | | | This reverts commit 34cb77c210316dd254a8aa27052fb03223e3f7af. Naming in QProcess is considered to be the correct one and the rule. Change-Id: I75f267b4f8dcc991b0d4945752b48de1b4e5b386 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Show non-required jobs as dottedv5.15.0-beta1Mike Krus2020-02-171-0/+6
| | | | | | | | Jobs that are in the graph but will not be scheduled (because they have nothing to do) are showed in dashed line Change-Id: Ia5d3b1b2b17d55820965b473099c0363cb645daf Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Add ability to dump job graph to dot fileMike Krus2020-02-147-4/+67
| | | | | | | | | Can be triggered from the overlay API and using sending a "dump jobs" command to the aspect engine. Gets saved in the current working directory. Change-Id: I19fc94a1215187c1d7eb9d1f3b13b968939cc917 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Add flag to jobs to indicate if they need to run or notMike Krus2020-02-1410-21/+67
| | | | | | | | | | | | | | | | | | | Once aspect jobs are inserted in the queue, they will always run, but some of them don't actually have anything to do at every frame. Ideally, when building a graph of jobs, you would include only jobs that are required. However this makes building the graph more complicated. This introduces a method on the private job pimple which indicated if the job actually has something to do or not. When the scheduler is ready to run a job, it will call that method. If there's nothing to do, then the job will be skipped and the dependent jobs (if any) run instead. Change-Id: Iaa8d3d064f03d8c0bab407879a9acea292a06784 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Remove unneeded export of inline functionsFriedemann Kleint2020-02-072-5/+5
| | | | | | | | | Fix MinGW-warings src/core/transforms/matrix4x4_sse_p.h:485:50: warning: inline function 'Vector3D Qt3DCore::operator*(const Qt3DCore::Matrix4x4_SSE&, const Vector3D&)' declared as dllimport: attribute ignored [-Wattributes] Q_3DCORE_PRIVATE_EXPORT Q_ALWAYS_INLINE Vector3D operator*(const Matrix4x4_SSE &matrix, const Vector3D &vector) Change-Id: Ib8b39c613ce05b6dc3848c1251a88eea53903212 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Make the OpenGL renderer a pluginPaul Lemire2020-02-053-30/+11
| | | | | | | | By default the QRenderAspect will try to load this plugin Change-Id: Ie55e207fb8e6d0b64f717bbb99699eb669eaa3f2 Task-number: QTBUG-61151 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Unit tests for qschedulerPaul Lemire2020-01-281-1/+1
| | | | | Change-Id: Iaa26160736bc6b92ecf0be767cb289d776cf46ad Reviewed-by: Mike Krus <mike.krus@kdab.com>
* QScheduler: restore jobsDone() call at the endPaul Lemire2020-01-281-0/+3
| | | | | | | Mistakenly removed in a cleanup commit Change-Id: Icfb7c370017facf6ce990430c3df1535a0a72973 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Clean up tracing codeMike Krus2020-01-276-23/+15
| | | | | | | | | | - Removed some old optional timing code. - Separated jobsDone into 2 parts since, on single threaded rendering mode (ie macOS), the render aspect blocks until the next vsync which confuses tracing Change-Id: Icb641e3f8079da2cb9af0416b0f7c4dc4dd36c3c Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Merge remote-tracking branch 5.14 into 5.15Mike Krus2020-01-252-3/+54
|\ | | | | | | | | | | | | | | | | | | * origin/5.14: Fix usage of C++14 features Use animation rather than event to drive simulation Fix for incorrect QML property names in GeometryRenderer doc Add viewAll support for orthographic projection mode Change-Id: I397bdee907389a6f5cabb8390a805fa9a89ed4ca
| * Use animation rather than event to drive simulationMike Krus2020-01-132-4/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using events can be problematic as they contribute to flooding of the event queue leading to issues with running animations. So we now use an actual animation which runs in a loop and triggers every 1ms (rendering still vsync locked though). If animation have not been enabled for the qt build, we fall back to using events as before. Tests were changes since frame progress is no longer driven by events, so processEvents does not trigger a frame update. Change-Id: I89b11862ef432dffae0c3dfb140eedd61754697e Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Replace deprecate QNetworkReply::error() callTimur Pocheptsov2020-01-151-1/+1
| | | | | | | | | | | | | | | | with QNetworkReply::networkError(). Task-number: QTBUG-80369 Change-Id: I6ab7e6b68b1bad33fc4c410894f6ba62d940255d Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | Fix deprecation handlingMike Krus2020-01-148-1/+32
| | | | | | | | | | | | Change-Id: If981333f7a3d78028d4f08c59867453d4192b955 Task-number: QTBUG-81058 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Add commands to dump frame graph and scene graphMike Krus2020-01-093-1/+52
| | | | | | | | | | | | | | | | prints to the console, also dump the list of paths in the frame graph to help understand render views. Change-Id: Ic4756e09545971b224a239fafc6667b0ca3d4572 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Silence deprecation warnings and fix Qt for Python and documentation buildsFriedemann Kleint2020-01-033-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Merely addding DEFINES -= BUILD_QT3D_MODULE to an example results in a deprecation warnings flood despite the example not using any deprecrated API since for example the flag operators and usages in the headers cause warnings by itself. Remove the deprecation from smart pointer typedefs (it should be sufficient to deprecate the pointee class) and disable warnings for usages of deprecated enumerations. This change silences the build of the simple-cpp example with BUILD_QT3D_MODULE removed, more changes might be required to fix the report. Task-number: QTBUG-81058 Change-Id: Ie70c14cfef024a25b6b1330fe013ce57c69dc962 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | Fix compilation with MSVCFriedemann Kleint2020-01-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Remove the deprecation introduced by 6e448dd5918c70ddfd0d52f62522fa49c02e8ba8 since it does not compile with MSVC nor the clang parsers used for qdoc and Qt for Python on Windows. It should be sufficient to deprecate the pointee class. Note the error does not show within Qt3D since the define BUILD_QT3D_MODULE in .qmake.conf causes Q3D_DECL_DEPRECATED to be empty. Task-number: QTBUG-81058 Change-Id: I844cbdabc8cdd2155e7ae9c6058d93a4dd826434 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | Expand System InformationMike Krus2019-12-182-4/+31
| | | | | | | | | | | | | | | | | | Add methods to: - Reveal folder where trace files are saved in the file browser - Dump the output of commands to the console Change-Id: Iaad76b4db93dbf60df170aa53212a8f4df1b2283 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Make GL profiling a runtime optionMike Krus2019-12-183-11/+51
| | | | | | | | | | Change-Id: I6cf9007132aa9867fd7046e7e641d849ee141e28 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Expose number of jobs is last updateMike Krus2019-12-174-5/+10
| | | | | | | | | | | | | | Useful for tracking amount of work done Change-Id: I1d6e0394c35fffc4b33991373e4d16e4651987c7 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Move AspectCommandDebugger to system service, activate command executerMike Krus2019-12-179-57/+60
| | | | | | | | | | | | | | | | | | | | | | - Always compile in AspectCommandDebugger and CommandExecuter - AspectCommandDebugger start when QT3D_COMMAND_SERVER_ENABLED is set - System information service becomes entry point for commands from the debugger - Added commands to enable and disable tracing Change-Id: Ic0d7fe72fa8a118a43ca348ca4284595a71827a4 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Use jobsDone to sync render capture back to frontendMike Krus2019-12-134-8/+13
| | | | | | | | | | | | | | | | | | | | | | Removes the jobs who's only purpose was to send a message to the frontend. Now added a jobsDone() call to render which is called from main thread when jobs are completed, so it's safe to sync data to frontend. Added a task trace for the backend to front end synching. Change-Id: I587462bea353c5d5a0065b542adcacef4dedb05f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Implement getting list of aspects from system information classMike Krus2019-12-138-27/+53
| | | | | | | | | | Change-Id: I999dfbb5c139ff8af2b1de9255f76ac132ae2dc0 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Fix deprecation syntaxMike Krus2019-12-133-3/+3
| | | | | | | | | | Change-Id: I9fe77a56fdc754132cf5da0e3e2361f62dc9a857 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Make tracing a runtime optionMike Krus2019-12-1313-293/+400
| | | | | | | | | | | | | | | | | | | | | | - Moved most of the code QSystemInformationService (private class for now) - Tracing can be enabled by setting QT3D_TRACE_ENABLED or calling QSystemInformationService::setTraceEnabled(bool) - Introduced QTaskLogger class to easy logging (RAII) Change-Id: I2a3e08e4371fcee3e9ef3cf575725f13f57d1a94 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Deprecate message APIMike Krus2019-12-0925-72/+86
| | | | | | | | | | | | | | | | Deprecates the message classes and the public APIs to send/receive them. (deprecates the constructors as deprecating classes breaks syncqt) Change-Id: I4908f15c3c5f1d63969a0f2e11f6ecb22e2e3748 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-12-072-6/+9
|\| | | | | | | Change-Id: I6682d27cc7c4f54158fa6813b1de6edce77bea33
| * Make QThreadPooler use the global thread poolPaul Lemire2019-12-022-6/+9
| | | | | | | | | | | | | | This should ensure we don't have too many idling threads Change-Id: Ia533fc07140a4944a1149aca1565b0d8ae3cda22 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Make NodeRelationshipChange struct privateMike Krus2019-12-067-27/+13
| | | | | | | | | | | | | | Was private in 5.14, should remain so in 5.15 Change-Id: I74231d349e60f498d8ffb4ff39cc1e95fa3f0567 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Fix usages of text stream operatorsAlexandru Croitor2019-12-063-14/+14
| | | | | | | | | | | | Change-Id: I8f3fe9475749f10f33c8eb750befa8845ccc37d6 (cherry picked from commit 58db7d01e0d424fdf46baa70e2e41b8009429c78) Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Add Q3D_DECL_DEPRECATED macroMike Krus2019-12-051-0/+6
| | | | | | | | | | | | | | | | This defines to empty when building Qt3D, and deprecated attribute otherwise. Change-Id: Ic36a020a7c43962ac4313efd72a941e5f74f4e99 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Revert "Fix post FF API changes"Mike Krus2019-12-0310-32/+54
| | | | | | | | | | | | | | 84766ed9098f10efc53e4e43a75eef38fce7fbf6 Change-Id: I12341ec1b7bc68a7586c6671aa7b8f21caed17e0 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Revert "Update jobs to remove post FF changes"Mike Krus2019-12-033-10/+1
| | | | | | | | | | | | | | d521b994450f0a4febbd789ba66701ba24fdbe22 Change-Id: Ibe6d608e8400e69b50775c0eb156e74e4e90b25c Reviewed-by: Paul Lemire <paul.lemire@kdab.com>