| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Change-Id: Ied324b4bee387020196c2014544a3d9f5c9de89e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Id659e853e911581c7d8133a4375fb8001586c61f
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I07c0577aa66e7110553d4c9208203620e17b6672
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead, simply use whatever is available from the compiler.
This also does away with the separation between Matrix4x4_SSE and
Matrix4x4_AVX2. The two classes store the data the same way and are
source-compatible; they just operate differently. This also allows for
an AVX2-enabled Qt3DRenderer to link to and run with a non-AVX Qt3DCore.
Fixes: QTBUG-110762
Change-Id: I76216ced393445a4ae2dfffd172a512266b2414d
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 00cb8afafb2867b348aa529c0702252d12d1b4d6)
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
|
|
|
|
| |
Change-Id: Id25ba77d7a25a4988ec5820ff91aaed35d8263ce
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Ia7b2be73663bf0df6ee351d2f5560f518fd47cc8
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Ic9663d23314ead3a9fd11fc73a20fed947edfb7f
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I930b1457019a46fd45baaebc85392f1784918d0c
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rather than multiply each triangle vertex by a mat4 to bring them to
world space (which is actually costlier than the actual intersection test),
we compute a local ray once and use it to test against the local vertices.
Change-Id: I4de9da278186f8214c32be394beb09daa9bc4914
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit 675c2b852869b8b6126f380148d9e0cfe6487506)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
| |
Note: already merged in 5.15
Change-Id: If968714f1ca4869e9c607224b537e355b4a6f0dd
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit b7e398620a5b467e5205722da5314938d1430f8e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We rely on a DistanceFieldFont object to manage QTextureAtlas that hold
the glyphs. The DistanceFieldFont/QTextureAtlas are supposed to be parented
by the scene root to ensure that a QTextureAtlas lives as long as possible.
DistanceFieldFont/QTextureAtlas are stored in a cache global to the scene
to minimize the use of resources.
When adding text elements, we can reuse atlases since the cache is global to
the scene and only destroy an atlas (and remove it from the cache) when we
know no more glyphs are referencing it.
However we were mistakenly passing a null parenty to DistanceFieldFont instace
of the scene root. This resulted on the QTextureAtlas not being parented by
the scene root but rather by the first DistanceFieldRenderer to use the atlas.
This meants that if the DistanceFieldRenderer were to be destroyed, so would
the atlas (yet it would still be referenced by the glyph cache leading to
crashes).
Change-Id: Id84f6a651b162a4bb3c571b11388fd2429b231de
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit b1a135c547f38db0b2ce6b7bc4c4cccc43ef87d3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
| |
Avoids having junk in the texture on the first paint call if not filling
a rectangle with a QPainter.
Change-Id: Icb65b6f994a9edea5132a2c54406fa0dd817bcb2
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit 20d36f07fa7815fb7a05018c93602932e600397b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Ia9edbf54272085fd660ebad2dece3f4e3d040293
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I80f89ad1d9ae47aa03eff50eabfbdfe0fc87cec4
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Ifcac13719cfb424ee2decea653b439b39613d125
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
std::vector::size_type is unsigned, while decltype(2) is signed.
Found by Clang 15:
qtestcase.h:585:34: warning: comparison of integers of different signs: 'const unsigned long' and 'const int' [-Wsign-compare]
return compare_helper(t1 == t2, "Compared values are not the same",
~~ ^ ~~
tst_qaspectjob.cpp:36:9: note: in instantiation of function template specialization 'QTest::qCompare<unsigned long, int>' requested here
QCOMPARE(job1->dependencies().size(), 2);
^
Make the RHS unsigned, too.
Amends b70f7af20550f55e9546ff5a2192f53d6ccb62cb.
Change-Id: Ia7e612de97de86946c42c104081957fbdcc67d7f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 0a06c7d2f465d071b4b4430fe06a080da990143e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I6968defcb72381f7e074953e8813e67b36309b83
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I9341c0caa36a5f9ebff6ace8aabb832c24afba2d
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Iba1f96aaac69ae8f5d45a0609c8a40e6fcc91876
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Ifa26cbc9d750e0819770d0c7c1421783f3aeab77
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
qsimd_p.h doesn't like when you compile with just -mavx2. I guess no one
is using these flags except me, and I already set the full arch in
CFLAGS.
Qt 6.4 calls x86-64-v3 "arch haswell". Will be fixed in 6.5.
Drive-by remove the AVX512 bits that weren't in use.
Change-Id: I76216ced393445a4ae2dfffd172a4f5684351514
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 15e4fc5daeeec5eeb0c1ccb0ce6f76b5b284e2c7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I885d30fbd443fedfd110fe614fc73bc7fcee5dc0
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Iddd0834945e746a6eb0a43f2c3b103616f3049f7
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Ic73bc7a8bb68b61984088f6896990f2710f5943c
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I810dcacab9f1d103d1352704653bf6908a3aed08
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
FS's input qualifier is different with VS's in GLSL1.10.
If prototypes has 'headerSnippetsFrag', it will be applied for FS
instead of 'headerSnippets'.
Fixes: QTBUG-99019
Change-Id: I588d3f78d4ba895a9a90b20a87b92a6da9ffee18
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit d6a9ed5039ef4f1f836f5786998485ee6016b315)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I7318c991fdacaf7a86339709debe5df9ed1b6522
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Idd074c4a8008bec100e561253c00d2f344bc3c2a
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: Ib432fc688209dfacd5b1cbfbcfe995bb8c7b91e7
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I35c32c41c3ff457e80bea3a284086a364eb9bc11
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
|
|
|
|
| |
Change-Id: I8ca1b18e4f73940113f831e8c618fb3c09b2675f
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
| |
Change-Id: I05c7ee19e72e57f7bbd11ad60652c123d3b32af7
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Disable the examples that use QtMultimedia as they haven't been ported
to QtMultimedia from Qt6
- QTextureDataUpdate forward header doesn't seem to be generated
- Add QuickWidgets in the find_package call so that we can later check
if it is actually available
Change-Id: I98d000e839dd0cb0aad862b66bfe8b9725a13744
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit aee00ddfb3650325df8f67b68885828b0669a017)
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
| |
Change-Id: Ifb42900deb4c9d15cded9d2486fdc8a06fbfe6bf
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit 33ccbe004d7371b4de309378e01eb807954ec74f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
| |
Change-Id: Ib0a9ccaeb543f91da76e479f23bc59e868fbd2c7
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit ff59b0dc9e6a88b08b615d2f8805ffd024b95785)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
| |
Change-Id: I5f17169c106a70c38bcc29cc7758b2bb4b9ee793
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit 675bb0d0922253818e3efe4a207910bbcf40d9e7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
| |
Task-number: QTBUG-107694
Change-Id: I4028dc107427c955342903239d4d80674e7109e4
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit 0f1c9494899e94d86785b12c8c60743d2e829a58)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When using OnDemand, we detect whether Qt3D actually needs to render or
not. Based on that we set a flag on the Scene3DRenderer to tell it whether
it should render or not.
The subtlety lies in the fact that depending on that flag value, we will
still call Qt3D render but not at the same moment. We need to call render
to unlock the Qt3D render loop for next frame.
Therefore when we should skip a frame, we call render in
Scene3DRender::beforeSynchronize (updatePaintNode) and return early
while in the other case beforeSynchronize doesn't call render and it gets
called later in beforeRenderPassRecording. We know that the render call
in the skip frame case won't render anything.
To work correctly, we must obviously set the skip frame flag before
beforeSynchronize / beforeRenderPassRecording is called which
wasn't the case. This therefore resulted in random screen flashing as we
would end up having beforeSynchronize rely on the skip frame value for the
previous frame. This means we would end up issuing a render call in
beforeSynchronize using assuming it wouldn't render anything when it actually
did (no FBO would be bound and Qt3D would render straight to the window
...)
Also update the number of frames to render before skipping to 3 to match
Qt 5.15 and ensure we have something visible for the first time
Scene3D is launched.
Change-Id: Icc34b62a0af2ff44232b39c694a4702488a890a2
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit e2aac33d04804c3c8f4f554c206a8cb9dd14611e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are 2 ways to dispose of a QRhiResourceUpdateBatch obtained with
QRhi::nextResourceUpdateBatch():
1) Either give it to beginPass/endPass/beginComputePass/endComputePass
so it is sent to the RHI backend and then automatically released;
2) or call QRhiResourceUpdateBatch::release() if the resource update
is not used for any pass.
The Qt3D RHI renderer was never disposing of the
QRhiResourceUpdateBatch, and could end up exhausting all the 64 batches
available in the RHI: "Resource update batch pool exhausted (max is
64)", in addition to consuming a lot of RAM if the buffers or textures
are large.
To fix this, ensure the QRhiResourceUpdateBatch'es we allocate are always
released: when requesting a new one, send the previous one to
endPass/endComputePass (1), and when destroying
the SubmissionContext, release the one we will not use (2).
Change-Id: Ic3fb145b11a8e615c83745f560f019e6c4ee37f7
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 6b6465032f103a084e416cbddf03f8e83191aea2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
| |
syncqt doesn't find the class name if the namespace line doesn't end
with {.
Change-Id: Icf30464ed0ecb9ce84d6c62c04edfc5d374ed26f
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit df4665a61fc84b6d6a952034c7d758394ebc1767)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is a risk that the front-end QSceneLoader node has been destroyed
by the time the LoadSceneJob completes. The postFrame() would then do
nothing, and the m_sceneSubtree pointer will be forgotten, leaking the
whole tree. This can happen in real life when loading very large scenes.
To ensure that we cannot leak the scene tree, use strict pointer
ownership with std::unique_ptr.
Change-Id: Ie2281bc178fc8793bab967a13ea8d30aa46268a0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit be8b6796c17cd1a616975bbd24f7a0cead725a48)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
| |
Sometimes the shader manager returns a nullptr when fetching the shader from a handle, so the return value needs to be checked before it is accessed.
Change-Id: Ia021cd8f22ceb2626a7a2734b7e346fbcc8e0301
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit bffdaabaa5cd9d7fdc64e4124817b504319708e1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
| |
Amends fd7536a6e4cfaee8e52c9c6411601aed745fe5f6.
Change-Id: Ib2aed78b798ea163125593319f65b123bcc4f895
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit 90fb8a94b438d9aed27b8cf5f020b92891cce749)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
| |
Amends f672753556cf28d44f864457dc6338a55e2e0ed4.
Change-Id: I5c3e99a033cead91a03ab468b4c44b687422baac
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit dfcd9f8b5aa56973e4a000331e51c4e9386ec78d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
| |
Amends 914752257634dede18cc5079f2a506b699744058.
Change-Id: I0320fb3b5e44e10e6ee106bbcb79322323cc3d12
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit cc81a2f1c2cb5d4c1da4a03d8fde90230584edd1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Shaders or the QShaderProgramBuilders may not exist in the managers
anymore by the time we arrive in
Renderer::sendShaderChangesToFrontend(). This happens when Qt3D shuts
down.
To fix this, check the returned values by the managers.
This is similar to the existing patch for the OpenGL renderer:
Ia021cd8f22ceb2626a7a2734b7e346fbcc8e0301
Change-Id: I322bf2524016c1f98433891ad230b65272fabbdd
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 643d7889cc39f5410b9ccf64c05db0f7f6cc51fc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Renderer seems to already take care of deleting the abandoned
shaders thanks to the APIShaderManager::purge() method. However, when
Qt3D is shut down, there remain active RHIShaders in the
RHIShaderManager::m_apiShaders, that nobody deletes.
To fix this, in the RHIResourceManagers, delete the remaining RHIShaders
as we do with the other RHI resources.
Change-Id: Iccc5470831eb7df0e120db6864fae425005c6919
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 1fe1c5a3752d1d56e78fdeb95842520d83940e52)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In Scene3DItem::updatePaintNode(), in the Render thread, we try to set
the parent of the aspect engine being deleted to nullptr. This was
triggering an assert in QCoreApplication::sendEvent(), since the aspect
engine lives in a different thread, the Main thread.
Don't trigger this assert by avoiding to send ChildAdded/ChildRemoved
events when reparenting the aspect manager, thanks to the
QQml_setParent_noEvent utility.
Change-Id: Ic816701ee65654f7b18b4998c54feb4840af0a14
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 63a9c3e314364765437f641454637611c2479672)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The multithreaded job doesn't check the visited bounding volumes for
validity before adding them to the list to process further. This leads
to crashes, namely nullptr-dereferences.
Fixes: QTBUG-108405
Change-Id: I16a7c008c7ac4f04be40bdbba05d8c745c1c825e
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 23a0432451cab1e434df0efda391dbeb4790e9f0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
| |
It's flaky ...
Task-number: QTBUG-107693
Change-Id: I67cbb5ef8800f5c29e33ae17241b04b3af0ed067
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 4e728a2d3248b7c068b0c9b7cf1e38b3493bc3d6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|