summaryrefslogtreecommitdiffstats
path: root/src/render/renderers/opengl
Commit message (Collapse)AuthorAgeFilesLines
...
* | Fix compile warning in imagesubmissioncontext.cppPaul Lemire2019-09-241-1/+3
| | | | | | | | | | Change-Id: I34f1dac63a31aadfeb893aca17b15d80184a24e4 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Merge remote-tracking branch 'origin/5.13' into 5.14Qt Forward Merge Bot2019-09-211-1/+1
|\| | | | | | | Change-Id: I27ff0470d3447ce6fab28f21e8f32286e3a66ac1
| * Fix potential memory leakMichael Brasser2019-09-171-1/+1
| | | | | | | | | | Change-Id: I91a41154ad4acb0f1f7497a2616d219770640ca6 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Remove backend entity hierarchy rebuilding jobsJim Albamont2019-09-202-18/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | We no longer need to have a special job to rebuild the entity hierarchy as parent nodes can now always be resolved on the backend either at creation time or while reparenting. The NodePostConstructorInit ensure that all backend nodes are created from the top down so a node can always find it's parent. Change-Id: I9dcfb64b62e2e02b89b1ae59efb41f25dfc09eae Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | Fix deprecation warnings related to QBasicAtomicIntegerFriedemann Kleint2019-09-193-12/+12
| | | | | | | | | | | | | | | | | | Use loadRelaxed(), storeRelaxed(), fixing warnings like: renderers/opengl/renderer/renderer.cpp:451:22: warning: ‘void QBasicAtomicInteger<T>::store(T) [with T = int]’ is deprecated: Use storeRelaxed [-Wdeprecated-declarations] qt3d/src/render/renderers/opengl/renderer/renderer_p.h:188:61: warning: ‘T QBasicAtomicInteger<T>::load() const [with T = int]’ is deprecated: Use loadRelaxed [-Wdeprecated-declarations] Change-Id: Ica946808969e7f311c98e30d1a61c1b4fa22f66a Reviewed-by: Liang Qi <liang.qi@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into 5.14Qt Forward Merge Bot2019-09-115-14/+29
|\| | | | | | | Change-Id: I4e73060c1941773efcc568f010f5b073ebb10d4a
| * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-08-315-14/+29
| |\ | | | | | | | | | Change-Id: Iae9a2903afd5da09cfd9288ff6cf74d7f069c83b
| | * Allow multiple instances of a few render statesHarald Vistnes2019-08-265-14/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow more than one instance of BlendEquationArgumentsMask and ClipPlaneMask render states. Task-number: QTBUG-77735 Change-Id: I9d2bdc82843e2eaf0f8a781208e4ca10e3a777c7 Reviewed-by: Mike Krus <mike.krus@kdab.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Remove QBackendNodeFactory since it's no longer neededMike Krus2019-09-052-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | (wasn't really needed before) Change-Id: I213da50ec995015e7a70f2ea1e5c5557f038be0e Reviewed-by: Jim Albamont <jim.albamont@kdab.com> Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | | Merge "Merge dev into 5.14 (delayed final downmerge)"Kari Oikarinen2019-09-042-1/+8
|\ \ \
| * \ \ Merge dev into 5.14 (delayed final downmerge)Kari Oikarinen2019-09-042-1/+8
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This replicates the effects of the fast-forward merge that should have been pushed on 2019-08-27 as the final down-merge from dev to 5.14. Task-number: QTBUG-78019 Change-Id: I32e5320c8eb97005838f1982d1fa7953f1312548
| | * | | Merge remote-tracking branch 'origin/5.13' into devPaul Lemire2019-08-202-1/+8
| | |\| | | | | | | | | | | | | | | | | Change-Id: I53aa6c3f61b1f624ec553079a9332c96486abf3f
| | | * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-08-132-1/+8
| | | |\| | | | | | | | | | | | | | | | Change-Id: I359b15d87622515ee4f05db1f01d4b476027378e
| | | | * GLTexture: glTexParam is not supported on multisampled texturesPaul Lemire2019-08-071-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So try to avoid performing these calls on such texture Change-Id: I051fd6a0150d07656687a1f84756d8a3d506ec24 Reviewed-by: Mike Krus <mike.krus@kdab.com>
| | | | * submissioncontext fix: devicePixelRatio is not an integerPaul Lemire2019-08-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Converting it to int would cause the viewport not to take the whole expected size as the interger conversion would essentially floor the value. Change-Id: Ic608b0e1a0910aadb8b98c3225f999cba6326535 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | | | | Fix compile warningsMike Krus2019-09-042-7/+6
|/ / / / | | | | | | | | | | | | | | | | Change-Id: I7c367b2f754bbfcb3e32a617b0edcfc7e06608d7 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | | | Use sync method when initializing new backend nodesMike Krus2019-08-291-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the node type supports syncing, use that rather than the creation message. The message is still needed since that is passed to the instantiation functor (none of qt3d's classes appear to use anything but the node id, but can't be sure no other classes do, and can't add other virtual method without breaking BC). Change-Id: Id99f448070b8722a7809b968798772c9eb3c8397 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | | | Merge remote-tracking branch 'qt-gerrit/wip/refactor' into HEADPaul Lemire2019-08-282-42/+32
|\ \ \ \ | |/ / / |/| | | | | | | Change-Id: Id73bbecd18edaf46ba481aa018e837a336860223
| * | | Renderer renderSynchronous: allow skipping swap buffer stepPaul Lemire2019-08-072-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Needed for cases where Scene3D is used as an Underlay Change-Id: I13889efc146d278a6331000f886b8fcb33448f65 Reviewed-by: Mike Krus <mike.krus@kdab.com>
| * | | Make Scene3D rendering use the Manual Qt3D drive modePaul Lemire2019-08-072-40/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This now makes Scene3D rendering fully synchronous and blocking: - All Qt3D jobs have to be executed before we can render the GL commands This makes the blocking mode that could be activated with SCENE3D_BLOCKING_RENDERMODE the default behavior now and therefore we could remove references to it in the code. This now means that Qt3D and QtQuick will be rendering at the same refresh rate, which in most cases won't be noticeable and will ensure that content from Qt3D scenes matches content from QtQuick scenes. The only downside is if the Qt3D rendering takes longer than the time expected by QtQuick, the whole QtQuick rendering will be slowed down. Previously the QtQuick rendering might have still run at 60fps while the Qt3D rendering at a lower fps. Now the QtQuick fps would be the same as the Qt3D fps. That being said, the old behavior also meant that if Qt3D didn't catch up, the delay between QtQuick and Qt3D would only increase frame after frame. This change allow to simplify the internals by making Scene3D and regular Qt3D use the same code paths internally. Please note that Scene3D relies on QQuickWindow::afterAnimating being called each frame. When using a QQuickRenderControl this means you might have to call it manually as part of your rendering code. Task-number: QTBUG-72385 Change-Id: I887daf6df632e296a892b844e738a67e973fee7f Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | | | Add SubtreeEnabler frame graph nodeMichael Brasser2019-08-141-3/+3
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SubtreeEnabler allows easy enabling and disabling of frame graph subtrees. [ChangeLog] Added SubtreeEnabler to allow easing enabling and disabling of frame graph subtrees. Change-Id: Ibd4dd305c41b2985225311a0cc49675e60a3727f Reviewed-by: Mike Krus <mike.krus@kdab.com>
* | | Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-07-316-16/+46
|\| | | | | | | | | | | | | | | | | | | | Conflicts: tests/manual/manual.pro Change-Id: I15d497da84d3fe684c3a598831171d6aed7534ca
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-07-236-16/+46
| |\| | | | | | | | | | Change-Id: I2a66e9344b72524431885bdf5f59fcaedb94c718
| | * Renderer: use last known good surface to reset render statesPaul Lemire2019-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were instead checking against the last surface used (which could be null) instead of the last known good surface to reset the render states. This could result in not resetting the render states and keeping dangling pointers around. To know if we can render, we check find the first non null surface in the list of RV. In most cases we can safelly assume that if first RV has a surface, all following ones will likely use the same surface. If we have no good surface we skip the rendering. However in the case you have a FG where the first RV has a surface but not the last one (which wouldn't really make sense but can happen if you mess up), we could end up in the above case where surface is nullptr though we have partially rendered something for the RV which had valid surfaces. Change-Id: I902b8c7a943ad2ca7e2f487873f73990cf8db433 Reviewed-by: Mike Krus <mike.krus@kdab.com>
| | * Align RenderView::buildComputeRenderCommands with buildDrawRenderCommandsPaul Lemire2019-07-191-3/+14
| | | | | | | | | | | | | | | | | | | | | State and parameter handling are the same between the two branches Change-Id: Ic8394a969184daead33253c9303c20ecf1a97484 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| | * RenderStates: fix override of nested RenderStatesPaul Lemire2019-07-185-12/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When merging states, make sure we don't add several states of the same types with possibly different values. We should only add states with type we don't already have. Since the FG traversal is done from leaf to root, we know that the states we already contain should override any state that may have been specified higher up in the FG branch. Change-Id: I9bd1eadd37e8addf740a4b85b2318f9be269fedb Task-number: QTBUG-76766 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-06-181-3/+3
|\| | | | | | | | | | | Change-Id: I942a33e63084b346702577e28c70f2111e40a4d5
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-06-151-3/+3
| |\| | | | | | | | | | Change-Id: I903f92a7b910eee165a2dd708a2d5fb25192ab14
| | * Fix Parameter priority sortingPaul Lemire2019-05-241-3/+3
| | | | | | | | | | | | | | | | | | | | | Parameters defined on an effect have priority over those defined in a Technique. Change-Id: I49558a065b613d7ea9d1cbf0a64f6d5aad941cd3 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Merge "Merge remote-tracking branch 'origin/5.13' into dev"Paul Lemire2019-06-031-1/+4
|\ \ \
| * | | Merge remote-tracking branch 'origin/5.13' into devPaul Lemire2019-06-031-1/+4
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/render/renderers/opengl/renderer/renderer.cpp tests/auto/render/textures/tst_textures.cpp Change-Id: I4da0eafe7ddd4dd822c3dcb5f5fa826653a335b4
| | * | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-05-291-1/+1
| | |\| | | | | | | | | | | | | Change-Id: I9e9214906c5cda56d0bcc98678c77be69189699d
| | | * Clean up warningsMike Krus2019-05-281-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I1ddad305359586481021e85f6e4a470d3a6521b0 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| | * | Iterate on child handlesMike Krus2019-05-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolving list of handles as list of node pointers introduces extra heap memory allocation (via QVector) which can cause locking with high number of threads. Added Entity::traverse() methods to apply a functor to all entitied in a sub-tree. Change-Id: I239ab30ac8ac53ba83666a147015d58465d76eb2 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | | Renderer: Image support addedPaul Lemire2019-06-0510-34/+526
| | | | | | | | | | | | | | | | | | | | Change-Id: I5b2764f0ae5184c2097d6da5e7a6e24b5c6a5d1b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | | Uniform: add handling of uniform of Image based typesPaul Lemire2019-06-055-1/+264
| | | | | | | | | | | | | | | | | | | | Change-Id: I94adc182a0f744b022fb13f4e2dbd16e47e2ba71 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | | GraphicsHelpers: add bindImageTexture supportPaul Lemire2019-06-0415-1/+110
|/ / / | | | | | | | | | | | | | | | | | | Since GL 4.2 and ES 3.1 Change-Id: I3feaaa6e34b3031121771017763d51ac6ef07687 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Scene3D: Revise render loop and synchronizationAnton Kreuzkamp2019-05-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before, the Scene3DRenderer marked the sg-node dirty in render, which would then already mark it dirty for the next frame. This only works as long as we always render, which is undesireble in some cases. fa12f14b2 changed rendering to not always happen anymore. Thus, that commit broke rendering under certain circumstances. Now, Scene3DRenderer listens on a signal from the QChangeArbiter about new pending changes. In reaction to this signal, we set an internal dirty-flag in Scene3DRenderer. Only if this flag is set, synchronization and rendering will happen on the Qt3D side. Change-Id: I3b33faa5d60c270bd9b903b0e34c8fa24e2e29fd Task-number: QTBUG-69985 Task-number: QTBUG-72923 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Eradicate Q_FOREACH loops and mark the module cleanMarc Mutz2019-05-221-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The only noteworth change is where a loop around spy.events modified the container using takeFirst(). There was no reason to do so, so it was changed to use the loop variable instead of the result of taking. Change-Id: I02c62a7c2efc5d042c6e669fe5daddd7da7e85d2 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-05-181-1/+1
|\| | | | | | | | | | | Change-Id: I830139030c589f9f9354223dc9a73dbe3e137532
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-05-131-1/+1
| |\| | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/render/shaderbuilder/tst_shaderbuilder.cpp Change-Id: I27de9b83fa6ef6bb319e4b11c932f91f9ff92dc3
| | * Fix number of lightsMike Krus2019-05-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | When an environment map is in use, no extra light is added and the count should be 0. Change-Id: Ieb14c48dd9627530b7b7b0682a20096237635d4d Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Merge remote-tracking branch 'origin/5.13' into devPaul Lemire2019-05-092-3/+22
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/render/backend/abstractrenderer_p.h src/render/renderers/opengl/renderer/renderer.cpp tests/auto/render/renderer/tst_renderer.cpp Change-Id: Ib6da858f10bec57bdb1002bd8fa4172304d118f2
| * | Merge remote-tracking branch 5.12 into 5.13Paul Lemire2019-04-265-40/+215
| |\| | | | | | | | | | Change-Id: I42affdd02bddb5205b9f2455f0c5e5efbd414dd8
| | * Cache light/renderable/computable vectorsJames Turner2019-04-104-37/+197
| | | | | | | | | | | | | | | | | | | | | | | | This avoids running these jobs when lights / renderables have not changed in a frame Change-Id: I604180fe3442ab67648c4ba5d9effb8639c68ef7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| | * Fix Entity parenting hierarchyJim Albamont2019-04-042-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the initial Entity backend node hierarchy is created it skips over any non-entity nodes to ensure that Entities are only parented to other Entities. Calling QNode::setParent breaks this when reparenting Entities to non-entity nodes. Fix by sending a new "parentEntityUpdated" property update that backend Entity nodes listen for. They keep the id of their new parent and flag the need to rebuild the entity hierarchy. This triggers a new job to clear the children and parents of every backend Entity, then rebuilds the hierarchy using the stored parent ID in each Entity. This is much more forgiving of creation/parenting ordering issues and shouldn't be less performant because any Entity reparent was previously marking everything dirty anyway. Add a new test from QTBUG-73905 that creates 4 cylinders and manipulates the parents in different ways. Add a new test to tst_nodes to reparent a QEntity to a QNode and ensure the entity finds it's correct QEntity parent. Add a new test to tst_entity to ensure backend nodes correctly handle the new parenting events. Task-number: QTBUG-73905 Change-Id: Iab0203947d89bbed2868b3629fbde879675fe568 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Merge remote-tracking branch origin/5.13 into devPaul Lemire2019-04-1513-238/+382
|\| | | | | | | | | | | Change-Id: Ib5c04e9941aeea1a4cd27519b94b9a53e8349ea3
| * | Switch export macros to standard formKai Koehne2019-04-023-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt expects the export macros to have Q_ prefixes, otherwise the symbol versioning script won't find them and mark them. Also remove non-exising QT3DLOGIC_PRIVATE_EXPORT macro from src/doc/qt3d.qdocconf Task-number: QTBUG-74752 Change-Id: I71b9e85ff09c002fb283824aa51a5a8f50e937f4 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| * | Merge branch '5.12' into 5.13Paul Lemire2019-04-0211-234/+379
| |\| | | | | | | | | | Change-Id: If17511da64dd666a536408aa3cb3178ef6db0403
| | * Don't reset texture units at every frameMike Krus2019-03-185-189/+342
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resetting texture to unit assignment at every frame seems to trigger constant shader recompilation on macOS. Maybe GL driver is implemented on top of Metal which has more restrictions. Not resetting the assignment means the same texture units are used for consecutive frames and fixes excessive recompilation. Refactored the code to move the texture handling to separate class. Change-Id: I480f76e7e7b0ea669c6acb039cc3d079937ff97f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>