-Reorder sleep and locks
-Properly protect isFrameQueueComplete lookup
-Reread queueIsEmpty which could have been updated
Change-Id: I2b5a52284bbb3ddb48483c5bf73779e335c8bdda
Task-number: QTBUG-71294
Reviewed-by: Christian Andersen <csandersen3@gmail.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Because Texture3D doesn't support layers and that results in a warning
being added to the console.
Change-Id: I54d34ccccc2bc1f022814689b97aaaf624026249
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Protects access to m_renderQueue using the m_renderQueue mutex on
shutdown. When a Qt3DWindow is deleted it signals the aspect thread to
do early cleanup, the aspect thread calls Renderer::shutdown which in
turn resets m_renderQueue. Meanwhile the render thread may be working on
m_renderQueue, this leads to a double free of the front render view in
m_renderQueue (and potentially other stuff).
Fixes: QTBUG-69877
Change-Id: Ifd018597dbdb2f1538494932c907c63e8db9c715
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Qt3DAnimation::QAbstractAnimationClip was not registered as metatype resulting
in the following error when calling QClipAnimator::setClip:
QMetaProperty::read: Unable to handle unregistered datatype 'Qt3DAnimation::QAbstractAnimationClip*' for property 'Qt3DAnimation::QClipAnimator::clip
Change-Id: If92d781fdab5be06ce11ec88f0b3921cfbd557ff
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Change-Id: I09f15de230c571adb580bdbb3250405f562f255b
Task-number: QTBUG-70892
Reviewed-by: Juan José Casafranca <juan.casafranca@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
When all observers for a node have been removed, we should also remove
its entry in m_nodeObservations hash.
Change-Id: I56762bb345e6a3eba74d5174b225dc86acd17e8f
Task-number: QTBUG-70892
Reviewed-by: Juan José Casafranca <juan.casafranca@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Replace the removed phong.frag with graph-based fragment shader.
Task-number: QTBUG-69751
Change-Id: I196be25aff656d6934d6179e4f082430b109b2a1
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Moved logic accessing the Scene3DItem from the render function into an
afterSynchronization call which has the main thread locked to prevent
the race condition.
Task-number: QTBUG-70747
Change-Id: I596d445512b5985c7dfb54d228fa0a5fcc596a27
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Was mistakenly using yAxis instead of zAxis input value.
Change-Id: Id91d04565c503ae5f286f6b433e246a1b94d6e12
Reviewed-by: Mike Krus <mike.krus@kdab.com>
The types will be listed on the "Obsolete QML Types" page that is
linked from the "All QML Types" page.
Task-number: QTBUG-69713
Change-Id: Ieff402d1cce426c0ce4b9191b8fe9b1dd02b4328
Reviewed-by: Mats Honkamaa <mats.honkamaa@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
GlyphRun stores a reference to glyphs and indirectly to a suitable TextureAtlas
based on the font needed by the glyphs.
Whenever we recompute the glyph because some property has changed we:
1) Store information about the glyph we need
2) Generate a Rendering Entity for the glyph we need
3) Dereference the glyphs we don't need anymore (the old glyph run)
Step 3) is performed last as whenever no more glyph reference a TextureAtlas,
it gets deleted. If we were to do that first, we could end up in cases where
we destroy the atlas and recreate it just after because the new GlyphRun actually
uses the same font.
TextureAtlases are tied to the lifetime of the scene's root node.
However if the scene changes, the previous glyph run wouldn't be released.
Since we don't keep a direct relationship between Glyphs and TextureAtlas
(we basically do a getOrCreateTextureAtlasForFont and lookup available atlases
in the scene), we could actually end up destroying a texture atlas we still need
the next time we update our glyph run:
When deferencing the old glyphs (whose texture atlas has been destroyed when the
scene has changed), we would instead be removing references to the new atlas
required by the new nodes (if they share the same font).
To fix that, whenever the scene changes, we now clear the glyph run as well.
Change-Id: Ibe62e2f6438c6655d2997681117c341302d64799
Task-number: QTBUG-70551
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
In some cases, a GLTexture will destroy its internal OpenGL texture
before recreating it (when it requires a new allocation due to some
property change).
When this happens, we need to ensure we also request our content data
to be uploaded after the new internal OpenGL texture is recreated.
Change-Id: Ifd3f8a1e40e5fad63d117417006c65fade5c2b39
Task-number: QTBUG-70551
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
The files got added in commit f49cabe35c. However, the original
sources from the linked url are in .tga format, so I assume they
got converted before importing. We should probably add a
'Modifications' entry to highlight such conversions in the future.
https://opengameart.org/content/miramar-skybox categorises the license
as CC-BY 3.0, but the upload was done not by the author.
Change-Id: I312a871716104507434eb6d12a547c3752da51af
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Which didn't handle indirect drawing, compute and tessellation
Since ES 3.1/3.2 don't provide API for glShaderStorageBlockBinding,
code was adjusted to use the default binding points and not require
that API.
Change-Id: Ie4dcd05f0a1d72e4a25f49b5fae138dc605ba5e3
Task-number: QTBUG-70660
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
qmlRegisterRevision was incorrectly used to actually expose the revision
to QML; anyhow, it is only meant to registering revisions of a base
class that the type depends upon.
Also remove one duplicated registration.
Change-Id: I0c743fc951954870f13a7e0e099fc16a4b7efa4f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
This is additional fix for QTBUG-67370.
And fix for Scene3D.
Task-number: QTBUG-67370
Change-Id: Id362e60ac4072b7935ee86ff2a44e23018adc381
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
...to avoid warnings (that can be treated as errors) with Mingw.
What we have seen in the CI is that including renderer_p.h from an
external module can lead to
error: inline function 'T Qt3DRender::Render::variant_value(const
QVariant&)' declared as dllimport: attribute ignored [-Werror=attributes]
Q_AUTOTEST_EXPORT inline T variant_value(const QVariant &v)
which is treated as an error if the external user happens to be a Qt
module with warning_clean enabled.
Not sure why this surfaced now, but removing the export should be the
correct thing to do regardless.
Change-Id: Ie8de120fa0e5c96fbcffc1632db57edeac87a95b
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
m_initialized is inherited from GraphicsContext, having another
m_initialized in SubmissionContext is wrong.
Change-Id: I431ba67c671b8854fafce769c8bfd90ba71e7441
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
The code was originally imported in commit 2a9a67d1b1, and then
updated in to upstream version 0.8 in commit 473bd13ed3.
LICENSE.md is from upstream repository.
Change-Id: I20f97d46125abc4f1c7d54c52b891acc50336ac5
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
By dividing code into function which make following the bigger picture
easier
Change-Id: I7c43178d5484b7d387f6ce7b9c36025d8e13c642
Reviewed-by: Mike Krus <mike.krus@kdab.com>
maximumLayers was renamed to layers in the 5.7 release
see commit 26d4260897
Change-Id: Ibe6e55bb5f6ad47181a4584a4eb32cdec3934034
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Which should be all Android builds since gcc has been deprecated
in favor of clang in the NDK.
Also disable building of tools when cross compiling
Change-Id: Idb3f88130bf211926f7dd4ce52ac6582d806570d
Task-number: QTBUG-65542
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Taking into account we have texture sharing in the backend,
we can only update frontend texture properties once we have
created the shared backend texture.
Code was adjusted to retrieve these properties when creating
the GLTexture. Such changes are stored and sent on the next
run loop from a job where they are distributed to all referenced
frontend Texture.
The status property handling has also been updated to send status
changes to all shared textures instead of just the texture whose
data generator is used to gather the data.
A manual test checking texture property updates, sharing and
remote url sharing has also been added.
Change-Id: I8ed2449fe57c9d7337580b0f7561f974cbd5006d
Task-number: QTBUG-65775
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
If the file contains a single animation use that clip. Otherwise we
then consider animationName and animationIndex with the index having
priority.
Change-Id: Id974b1d446d6067bbe4c5ecce9f20891cb1086b0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Can now specify source urls to QAnimationClipLoader with query
parameters for animationIndex or animationName.
Add a new manual test to demonstrate/test this by loading the 2nd
animation from the Rigged-Simple.gltf file.
Will followup with the same support for Qt 3D native json animation
files.
Change-Id: Icb66073f29b8471fe06e2e2e9c43720567dc9ee5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Change-Id: I8409969e743e993d19af0f94597a4e0d5d017721
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit ea18da8361)
Reviewed-by: Antti Kokko <antti.kokko@qt.io>
Change-Id: I8bbd918922e4d9aab0c9fa4b2751de21313fc09b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
(cherry picked from commit 096500140b)
Reviewed-by: Antti Kokko <antti.kokko@qt.io>