summaryrefslogtreecommitdiffstats
path: root/src/render/framegraph
Commit message (Collapse)AuthorAgeFilesLines
* Doc: Fully qualify \property, \qmlproperty, \typedef, \enumLuca Di Sera2024-02-139-15/+15
| | | | | | | | | | | Upcoming changes to QDoc require API entities to be fully qualified; previously, QDoc maintained a list of 'open namespaces' that were part of matching the documented entity with its declaration, but that concept does not work for parallelized parsing where the order of processing can be arbitrary. Change-Id: I1662fb4692b5c91a2d9e33eb17708544d9cd1ebb Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* build system: fix unity buildsTim Blechmann2024-02-0721-22/+42
| | | | | | | | | | | | | | we need to avoid polluting the global (or qt) namespace by moving the `using namespace Qt3DXXX` statements into the namespace where it's actually required. furthermore: * replace `QT_USE_NAMESPACE` with `QT_BEGIN_NAMESPACE`/`END` pair * exclude some translation units with name clashes inside anonymous namespaces Change-Id: I5301b55c6a0c7079602c759f5bde152354149880 Pick-to: 6.7 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Readability: use empty() instead of size() to check for emptinessAurélien Brooke2024-01-132-5/+5
| | | | | Change-Id: Icd578efe70a9bdaf5ffbd5c8e9500c370d655cc0 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Include what you need: <QPointer>Marc Mutz2023-10-131-0/+2
| | | | | | | | | | | | | | | | | | | | | | | All these TUs relied on transitive includes of qpointer.h, maybe to a large extent via qevent.h, though, given that qevent.h is more or less the only public QtBase header that includes qpointer.h, something else seems to be at play here. Said qevent.h actually needs QPointer in-name-only, so a forward declaration would suffice. Prepare for qevent.h dropping the include. The algorithm I used was: If the TU mentions 'passiveGrabbers', the name of the QEvent function that returns QPointers, and the TU doesn't have qpointer.h included explicitly, include it. That may produce False Positives, but better safe than sorry. Otherwise, in src/, add an include to all source and header files which mention QPointer. Exception: if foo.h of a foo.cpp already includes it, don't include again. Task-number: QTBUG-117670 Change-Id: I36d5fc6eea6c28b90d7dd82c27ee0685d983d627 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Build with QT_NO_CONTEXTLESS_CONNECTAhmad Samir2023-07-221-3/+3
| | | | | | | | | | | This disables the 3-arg QObject::connect() overload: QObject::connect(sender, signal, functor) For details see: https://lists.qt-project.org/pipermail/development/2023-July/044141.html Change-Id: If62d07f687d9ea86995ea813add49216ccaf15cc Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Doc: Fix incorrect module/type names in \qmlproperty commandsTopi Reinio2023-06-061-1/+1
| | | | | | | | | | | | | | | Multiple \qmlproperty commands used a non-existent module identifier, or the name of the C++ module in place of the QML one. Also, in some instances, the C++ type name was used in \qmlproperty signature. Fixing these also makes a number of QML properties appear in the generated docs. Pick-to: 6.6 6.5 Change-Id: I452361d3b0397d3ce405a2fb28577c37a24f02e3 Reviewed-by: Andreas Eliasson <andreas.eliasson@qt.io>
* Remove qmake build filesMike Krus2023-03-171-124/+0
| | | | | | | | Except in examples Pick-to: 6.5 Change-Id: I31b06ddfc79f14dde3369518a76d57606daf939f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Remove unused forward declarationsAurélien Brooke2022-12-211-1/+0
| | | | | Change-Id: I008781fa63d253c4f1a7201d911da87f451d797f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Port from qAsConst() to std::as_const()Marc Mutz2022-10-201-1/+1
| | | | | | | | | | | | | | | We've been requiring C++17 since Qt 6.0, and our qAsConst use finally starts to bother us (QTBUG-99313), so time to port away from it now. Since qAsConst has exactly the same semantics as std::as_const (down to rvalue treatment, constexpr'ness and noexcept'ness), there's really nothing more to it than a global search-and-replace. Task-number: QTBUG-99313 Change-Id: I1b3c7c4058726c55199fd8ba74b6d6890ad8dd93 Reviewed-by: Mike Krus <mike.krus@kdab.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Port from container::count() and length() to size() - V4Marc Mutz2022-10-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a semantic patch using ClangTidyTransformator as in qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8, but extended to handle typedefs and accesses through pointers, too: const std::string o = "object"; auto hasTypeIgnoringPointer = [](auto type) { return anyOf(hasType(type), hasType(pointsTo(type))); }; auto derivedFromAnyOfClasses = [&](ArrayRef<StringRef> classes) { auto exprOfDeclaredType = [&](auto decl) { return expr(hasTypeIgnoringPointer(hasUnqualifiedDesugaredType(recordType(hasDeclaration(decl))))).bind(o); }; return exprOfDeclaredType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes)))); }; auto renameMethod = [&] (ArrayRef<StringRef> classes, StringRef from, StringRef to) { return makeRule(cxxMemberCallExpr(on(derivedFromAnyOfClasses(classes)), callee(cxxMethodDecl(hasName(from), parameterCountIs(0)))), changeTo(cat(access(o, cat(to)), "()")), cat("use '", to, "' instead of '", from, "'")); }; renameMethod(<classes>, "count", "size"); renameMethod(<classes>, "length", "size"); a.k.a qt-port-to-std-compatible-api V4 with config Scope: 'Container'. Change-Id: I3b040fa72968753048fd669c073ae80c3ba1bdad Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Fix various [=] lambda captures to capture [this] insteadMarc Mutz2022-07-121-1/+1
| | | | | | | | | | C++20 deprecated the implicit capture of [this] in [=]. Move Q_D()s into the lambdas, where applicable. Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I345658b0ab9c4edc070f6fd111fce135dd757b14 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QViewport documentation: fix wrong property type for gamma propertyPaul Lemire2022-06-221-1/+1
| | | | | | | Change-Id: I9af5214af3ad019e3adf55c7d4d9dfe43a5226ff Task-number: QTBUG-101876 Pick-to: 5.15 6.3 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Qt3DRender: includemocsMike Krus2022-06-2224-0/+48
| | | | | | | Task-number: QTBUG-103286 Pick-to: 6.3 6.2 5.15 Change-Id: Iaddad08bb469408ee975e463ac82c95870130cee Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Use SPDX license identifiersLucie Gérard2022-06-22120-4561/+241
| | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I8105424281eed871037fa6c463871ca8829876b5 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Replace QT_BEGIN_LICENSE:LGPL3 headerKai Köhne2021-08-109-98/+125
| | | | | | | | | | Replace outdated LGPL3 with LGPL header in src, and GPL3-EXCEPT in tests. Task-number: QTBUG-90321 Pick-to: 6.2 Change-Id: I3f6491cb402a993a4341a983c780337e8658c256 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Replace all implicit container move and clear by an explicit functionPaul Lemire2021-02-241-1/+1
| | | | | | | | | | | | | We are likely relying on the fact that most implementations of containers clear the moved from container when calling std::move. That being said this behavior is likely implementation/platform dependent and could bite us at some later point. This patch introduces a moveAndClear function that does the move and an explicit clear and use it in all appropriate places. Change-Id: I8081d09907e17e287741fa952269af22df4dcf5f Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Fix parameter priorization documentationAntti Määttä2021-01-182-7/+12
| | | | | | | | Pick-to: 5.15 Fixes: QTBUG-64110 Change-Id: I09330ba29b0c120d6e7e0ae0b2bf8d4e388054e1 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Enable compiling non-QML API against Qt 5.15Mike Krus2021-01-051-3/+8
| | | | | | | | | | | | Built with QtQuick disabled. - C++17 required - minor issues with QList vs QVector - QMutexLocker templated vs not - moc forward declaration handling Change-Id: I5540625e74e2c009e528f56203e4b88be8d54599 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix deprecated API usage and compile warningsMike Krus2020-11-201-1/+1
| | | | | | | | | - QVariant::Type deprecated, use QMetaType related APIs - QNodeId not used as reference in for loops (nop but really noisy) - some unused code Change-Id: I291219207fcd1ad0bf89533b4e2bb5fa47a353bb Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Replace old Q_DECL statements with modern C++Allan Sandfeld Jensen2020-11-022-6/+6
| | | | | | | | Since we have long depended on C++11 now, all of these can go. Change-Id: I8808af2cd5ce192864c636b521dadd7de189563b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QFrameGraphNodePrivate: add private exportPaul Lemire2020-10-051-1/+2
| | | | | | Pick-to: 5.15 Change-Id: I7dbff87a1b7a00d4fb6d7b558c38fa6fe5d2cdd5 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Make DebugOverlay accessible from QMLMichael Brasser2020-10-021-0/+29
| | | | | | | | Register and document QDebugOverlay. Change-Id: I357918ce3448c451d796f88656ec287bf03ffcfd Reviewed-by: Mike Krus <mike.krus@kdab.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix compilation with newer qtbaseFabian Kosmale2020-08-252-0/+2
| | | | | Change-Id: Iaba2780c2ac28181cce15ae350fadd755a51999f Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* ClearBuffers: fix member initialization from uninitialized valuePaul Lemire2020-08-242-2/+2
| | | | | | | Change-Id: I7f1b2f3bca78f16abac49fa8686522aebf393d7c Pick-to: 5.15 Pick-to: 5.12 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* QRenderTargetSelector: remove outputs/drawBuffers propertyPaul Lemire2020-08-134-47/+1
| | | | | | | | | | This cannot be handled with RHI and in practice nobody ever used that feature. [ChangeLog] QRenderTargetSelector remove outputs/drawBuffers property Change-Id: I6b02718733e5c05cee9074b0078ba2a544de95d6 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Use QList instead of QVector in renderJarek Kobus2020-07-0923-50/+48
| | | | | | | | | Use list-initialization. Task-number: QTBUG-84469 Change-Id: I826450646fc3c7118cae49c22a28058f47770e13 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Use QList instead of QVectorJarek Kobus2020-07-0712-30/+30
| | | | | | Task-number: QTBUG-84469 Change-Id: Ic726ce85e01190dbc64426388fd454c54ae3c3e3 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Renderer: move QVector to std::vector changesPaul Lemire2020-07-012-7/+7
| | | | | Change-Id: I99a55a52da55b9b8c32e0db8e47932a4eb2820fa Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Fix handling of SSE/AVX sourceMike Krus2020-06-171-1/+1
| | | | | | | | | | | | | | | | QtBase has macro to enable SSE handling on specific source files. But Qt3D has some classes which use those specific instruction set in headers, so any file that includes those should also have the right command line options. This adds the right command line arguments to the 3DCorePrivate target so that anything that depends on that will have the right options. 3DCore is fine because it knows about the special headers files which were tagged. Change-Id: Ia061750121fb2ab5c93600c08a5464179ca2c228 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix compile warnings related to deprecations or unused variablesPaul Lemire2020-06-081-2/+2
| | | | | Change-Id: I3d8fa0940a22f40bec3809b302cc59a40a5c3c52 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Fix build for Qt6Mike Krus2020-05-064-2/+4
| | | | | | | | | | | | | - updated dependencies, excluding qtgamepad for now - fixed issues with Q_PROPERTY not supporting forward declarations - fixed for changes in QtQuick private API - fixed for changes in QtOpenGLVersionFunctions API - fixed for removal of QT_OPENGL_ES* macros - fixed for changes in QtConcurrent API - fixed RHI based build Change-Id: I42ccd2f101b7f0a78e2860c6d551722bf6710a11 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Merge remote-tracking branch 'origin/5.15' into devMike Krus2020-04-278-25/+98
|\ | | | | | | Change-Id: Id669d5c1aab29965eac0dabd1cb497e908dac23e
| * Merge remote-tracking branch 'origin/5.14' into 5.15Antti Määttä2020-04-214-6/+12
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/renderers/opengl/graphicshelpers/submissioncontext.cpp src/plugins/renderers/opengl/graphicshelpers/submissioncontext_p.h src/plugins/renderers/opengl/renderer/renderer.cpp src/render/backend/attachmentpack_p.h src/render/frontend/qrenderaspect.cpp src/render/picking/qabstractraycaster.cpp tests/manual/manual.pro Change-Id: I617b7e34bf7e11b2921bfc15e1b99c3e81891ec7
| | * Check we remove a valid node when removing from node propertiesPaul Lemire2020-02-104-6/+12
| | | | | | | | | | | | | | | Change-Id: Ibcc4d9bfd9d0a9d7697151915f24a6eecc149f6d Reviewed-by: Mike Krus <mike.krus@kdab.com>
| * | Add ability to dump filter statesMike Krus2020-03-262-2/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add button in overlay UI to dump: - the details of technique and render pass filters in the render views - the details of technique and render pass keys in the scene graph This is useful to understand why some objects are not rendered. Change-Id: I57a284081ec986e49e90c979042cc0c17ee0d1cf Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| * | Fix crash in rendercapture-cpp manual testPaul Lemire2020-03-232-18/+20
| | | | | | | | | | | | | | | Change-Id: Id4ad6552fc1a254bd9414bab63400d624e902442 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | | Make default geometries viewsMike Krus2020-02-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Extras, make QTorusMesh and others a QGeometryView rather than a QGeometryRenderer. Requires changes to scene graphs here and there but going forward there simple shapes could be used as proxies for picking or collision detection, etc. Change-Id: Id488e064080dfd303e448aba11e6b242236b81d4 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Geometry refactoringMike Krus2020-02-271-1/+1
| | | | | | | | | | | | | | | | | | | | | Move QBuffer, QAttribute, QGeometry to Qt3DCore. Change-Id: I59dfd091eefadcada93350b3aba955f40b304385 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Merge remote-tracking branch 5.15 into devMike Krus2020-02-171-15/+67
|\| | | | | | | | | | | Change-Id: I2777f6a40b9029ef5569a84e04f9e18a914504e7
| * | FrameGraph dumping: handle nesting of non FG childrenPaul Lemire2020-02-131-15/+67
| | | | | | | | | | | | | | | Change-Id: Ie48d5de80fc4f5cd007de1e3caa43c65ee3d7783 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | | Remove unused data structuresMike Krus2020-02-1119-116/+10
| | | | | | | | | | | | | | | | | | | | | Was used by old node init API Change-Id: I7b68f25634ee7aaccefab6f499ac074fcfb9a7f4 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Remove deprecated classes and functionsPaul Lemire2020-02-1150-616/+21
| | | | | | | | | | | | | | | | | | | | | Mostly old messaging API Change-Id: I17eb2206b2ede56d2f7d36375d5e711d6149019f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Merge remote-tracking branch 5.15 into devMike Krus2020-02-0745-73/+489
|\| | | | | | | | | | | Change-Id: I731aa986e1cc45b3af920db1a23f256927beecf7
| * | Move classes in OpenGL renderer plugin into an OpenGL namespacePaul Lemire2020-02-051-0/+1
| | | | | | | | | | | | | | | Change-Id: I5314da1df7fbfd1b6db4412e7bc71231525d9de2 Reviewed-by: Mike Krus <mike.krus@kdab.com>
| * | Make the OpenGL renderer a pluginPaul Lemire2020-02-0527-27/+26
| | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | Introduce a GLShader classPaul Lemire2020-02-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GLShader is renderer specific shader implementation for OpenGL. Shader now contains only backend information for a QShaderProgram frontend node. - Similar to the GLTexture handling, a generic adopt/abandon manager for shaders was introduced (regardless of the actually GraphicsAPIShader class). - The renderer and renderviews were adapted to the new changes. This was the last major thing preventing the modularisation of the QRenderAspect and renderers Change-Id: If671d60928b433977e9d6e5c58199827f9408a3f Task-number: QTBUG-61151 Reviewed-by: Mike Krus <mike.krus@kdab.com>
| * | Add Profiling OverlayMike Krus2020-01-177-3/+347
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Can be activated at adding a QDebugOverlay in the frame graph to identify which surface it should be renderer one (renders only once on first branch that contains such a node). Can be also activated on the forward renderer from Qt3DExtras. - Shows information about FPS and number of jobs/renderviews/commands/vertices/entities/geometries/textures... - Allows to toggle job and gl call tracing and open folder where trace files are stored - Windows to show and dump glinfo and renderview/command details to the console Change-Id: I286ff85760e8f8f0604a23458883ff22229bda94 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| * | Add commands to dump frame graph and scene graphMike Krus2020-01-092-0/+62
| | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | QSortPolicy: add Uniform sorting modePaul Lemire2019-12-202-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to perform uniform minization between adjacent render commands all the time. Since this can yield to a higher CPU usages (but more efficient rendering submission), we now make this step optional. [ChangeLog] QSortPolicy add Uniform mode (to control whether uniform minization should be performed) Change-Id: I5c0e0dba22400a9884ee1d75426fd76b073fdcb5 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * | Use jobsDone to sync render capture back to frontendMike Krus2019-12-132-9/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>