| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| | |
Change-Id: If99dd5082d8a45b7c06fa585c69cd378d470247a
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: I7fb4569bfcb7b9a0427dbaa67edcf7e005bb5762
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: I1a99115b78478ec143a83a2f768a7249d9038ac0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: Id7124395233757cd62de0f1c9153f348603ed980
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: Ic821747677c9d2f117494d2ecfd89f47f982fa3f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| | |
Change-Id: Ia3d1c209ea06ce6a6fd3aa87f4034d3eeaeffdda
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: Ibc8ac6d59f8ed85b588cae1f2f92e8d37a342954
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: I13fb35d0e6d31275463034c3e4bdd92c3f528a4e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: Iac662f21ca399c6998cff37eeac1f165b34a9c28
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: Ifbe93173010bf058f198990c62d5e93fea967a74
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: I6e3b763864587ac4b12f6a458f84d3642f20b32c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| | |
Change-Id: I62065d30b197367c8e5e03099c3af034892c4038
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: Ic852ccf3994bb8604924687165bb49cb1dec3077
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|/
|
|
|
| |
Change-Id: I392dd326cb0bf1b8c12b72d8554a866156d43e76
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
| |
Task-number: QTBUG-46866
Change-Id: I0f7f8bcb3afe528e9a00270025ed42e950221800
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Change-Id: I0a540dfdcbe5f28df38cf406c771c828e25abd64
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Change-Id: Ied910d38c400b34a38f6eaea9683107b079513ec
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
Only for OpenGL 4.0.
Task-number: QTBUG-50005
Change-Id: I70984a2bff3afc04539efa7dea60196aa06e72d2
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
They were a big mess, now they are a smaller mess.
Change-Id: I4e21e340a24588370cf8b17b54ebb9e03fe07b4a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Found by heaptrack, all relevant for per-frame allocations.
Change-Id: I12ef71f6bd1bca2ca78f4bfbd295265d840b4232
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
This avoids countless unnecessary string allocations here.
Change-Id: I5f5b474ca7b335ccb7bf1083fd85aa85e3a9e8a4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Task-number: QTBUG-50126
Change-Id: Ia0f4ec12b2598f2b117cc5860c648310e2dca0b9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Task-number: QTBUG-50214
Change-Id: I11b18e8559b4625137874286afaa40917ea35472
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
| |
Change-Id: I3bcc071091e4d89090393d0b65704bef15bcc342
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
| |
Change-Id: I6e588218f02f4d60b196d211e932ce8342588f0a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Helps to catch problems fixed in the parent commit.
Change-Id: I6209fd3bac7e127d88f917f5aad54c668651e8a2
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Change-Id: I257ecd56a454ba7ad969859fad94fc45a8e729c4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|