| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove multiple \namespace commands for namespace Qt3D. QDoc in 5.5
is now able to collate namespace members from multiple modules.
- Mark 'Q...Private' classes and functions taking private arguments as
\internal
- Use correct \qtvariable for Qt 3D Core and Render
- Add src/plugins directory to Qt 3D Core documentation build to
correctly generate Assimp-related documentation.
- Ensure documentation for C++ properties is visible by
using the \property command instead of documenting the
setter/getter functions.
- Add export and logging macros to qdoc ignore directives
- Remove unnecessary use of \fn command
- Language and styling fixes
Change-Id: I2481fa30ad2f6869b85c038c20ff1730b8522d46
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
Returning dbg.space() breaks formatting on streams that already
have nospace() set.
Change-Id: I645a3a06176a394921e75b56dd725f291db55fb3
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
| |
Task-number: QTBUG-44180
Change-Id: Ia5ce031397f9b03c5ba692aa30b6097dc60e59e3
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
|
|
|
|
|
| |
Change-Id: Id50a6e7c95980edbc98f1f1b9d08d6175ceba517
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
aspects\qabstractaspect.cpp(50) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
resources\qframeallocator.cpp(276) : warning C4267: 'argument' : conversion from 'size_t' to 'uint', possible loss of data
resources\qframeallocator.cpp(284) : warning C4267: 'argument' : conversion from 'size_t' to 'uint', possible loss of data
qchangearbiter.cpp(108) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
qt3d/src/render/backend/jobs/renderviewjobutils_p.h(64) : warning C4099: 'Qt3D::Render::ShaderUniform' : type name first seen using 'struct' now seen using 'class'
Change-Id: I055f2021cbecf0765a811aedd87eb2cee97e6431
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
As for preparation for Qt5.5 release the copyright header is
updated to correspond the current license requirements.
Change-Id: I36632918b66f455539453b42c369689fb11298ec
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Why was it removed in the first place ?
Change-Id: I526c9957570f18700b9eeb7f7cd061cd642e203b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ib20f20532c7df084900036dce8c55a7010da1d0c
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I0e9e860568b88ced321cdd35938967b1a3986ee5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: Ia03f69eefff937c84f1f5f6bf2a34b0dc0b3a294
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I015a203ab9f6fb5520b9674ab55fa89e698b1195
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I11a58d8b3e21840a0d90bec50f6b64778b48969e
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I0ca22688c9bdbd0cead511714c1dd00997881b0a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Compilers that don't support the using keyword are too old
Change-Id: If6d2bc657f6c41e81009aabbb31000e3f2a3a3f7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Task-number: QTBUG-42819
Change-Id: I6e79994e837e139f04c7d5ec1b0904d488de5b57
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I298fbaf819a118a5da4453082ec7f1484835480a
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
Once we are happy with the API we can make this public for a future
release.
Change-Id: I914f087e10adddbadac1649a8b889b9f53f82fd2
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This also allows the compiler to inline some more code leading to
a slight performance gain in the benchmarks:
********* Start testing of tst_QFrameAllocator *********
Config: Using QtTest library 5.5.0, Qt 5.5.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC
4.9.2)
PASS : tst_QFrameAllocator::initTestCase()
PASS : tst_QFrameAllocator::benchmarkAllocateSmall()
RESULT : tst_QFrameAllocator::benchmarkAllocateSmall():
830,448 instructions per iteration (total: 830,448, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkAllocateBig()
RESULT : tst_QFrameAllocator::benchmarkAllocateBig():
916,006 instructions per iteration (total: 916,006, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkDeallocateSmall()
RESULT : tst_QFrameAllocator::benchmarkDeallocateSmall():
641,572 instructions per iteration (total: 641,572, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkDeallocateBig()
RESULT : tst_QFrameAllocator::benchmarkDeallocateBig():
641,573 instructions per iteration (total: 641,573, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkAllocateRaw()
RESULT : tst_QFrameAllocator::benchmarkAllocateRaw():
827,544 instructions per iteration (total: 827,544, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkDeallocateRaw()
RESULT : tst_QFrameAllocator::benchmarkDeallocateRaw():
721,701 instructions per iteration (total: 721,701, iterations: 1)
PASS : tst_QFrameAllocator::cleanupTestCase()
Totals: 8 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_QFrameAllocator *********
Change-Id: Id1f314182aa8257eba15179e3567f303f7bb9ef1
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This also allows us to greatly simplify the code while at it.
If future subclasses ever become larger than our maxObjectSize,
we can either force them to overload operator new themselves
or increase the maxObjectSize in the allocator.
That never happens in practice and just increases the codesize
and also slows down the code. The benchmark now shows the following
numbers for perf's instr:k counter on my machine:
********* Start testing of tst_QFrameAllocator *********
Config: Using QtTest library 5.5.0, Qt 5.5.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC
4.9.2)
PASS : tst_QFrameAllocator::initTestCase()
PASS : tst_QFrameAllocator::benchmarkAllocateSmall()
RESULT : tst_QFrameAllocator::benchmarkAllocateSmall():
880,438 instructions per iteration (total: 880,438, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkAllocateBig()
RESULT : tst_QFrameAllocator::benchmarkAllocateBig():
965,937 instructions per iteration (total: 965,937, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkDeallocateSmall()
RESULT : tst_QFrameAllocator::benchmarkDeallocateSmall():
701,573 instructions per iteration (total: 701,573, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkDeallocateBig()
RESULT : tst_QFrameAllocator::benchmarkDeallocateBig():
701,572 instructions per iteration (total: 701,572, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkAllocateRaw()
RESULT : tst_QFrameAllocator::benchmarkAllocateRaw():
867,893 instructions per iteration (total: 867,893, iterations: 1)
PASS : tst_QFrameAllocator::benchmarkDeallocateRaw()
RESULT : tst_QFrameAllocator::benchmarkDeallocateRaw():
771,701 instructions per iteration (total: 771,701, iterations: 1)
PASS : tst_QFrameAllocator::cleanupTestCase()
Totals: 8 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_QFrameAllocator *********
Change-Id: I0500a206e8460e27b5157d6238a06bee355b7318
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before one could potentially fall into a trap when one would call
allocateRawMemory<BaseClass>(size);
When size belongs to a child class inheriting from BaseClass and
falls into a different (larger) bucket, the following deallocation
via
deallocateRawMemory<BaseClass>()
would fail. Because there we just picked the size of the BaseClass
to find the bucket.
Now the whole API is restructured to guard against this wrong usage:
- we only ever operator on void* in the *Raw* methods
- we pass on the size explictily
This also means we must use the safe operator deallocate overloads
that also take the size as a parameter.
The unit test was run first to check that this was indeed an issue.
Then it is ported to the new API and cleanup up a bit as well to
reduce duplicated code.
Change-Id: I559af1c0ffc633962fac12d6e3cadf87c09ef92d
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
We use shift operations on those values and they are only defined
for positive values. So better enforce this by the compiler.
Change-Id: I602bd69c6fb0dfbd843eb2d30578a4a7f29f95bb
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A pointer "r" is contained in a bucket when the condition
firstItem > r || r > firstItem + BucketSize
is fulfilled. I introduced an off-by-one error when negating this
expression. This lead to the situation where the last-plus-one item
of a bucket was said to belong to a bucket, while it should not.
Change-Id: I000e774f55ba4575348058f9efd70e606fa1baa4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reduces the amount of hash lookups, leading to a nice speedup:
before:
RESULT : tst_QResourcesManager::benchmarkAllocateSmallResources():
44,848,672 instructions per iteration (total: 44,848,672, iterations: 1)
RESULT : tst_QResourcesManager::benchmarkAllocateBigResources():
46,634,161 instructions per iteration (total: 46,634,161, iterations: 1)
after:
RESULT : tst_QResourcesManager::benchmarkAllocateSmallResources():
40,915,522 instructions per iteration (total: 40,915,522, iterations: 1)
RESULT : tst_QResourcesManager::benchmarkAllocateBigResources():
42,700,992 instructions per iteration (total: 42,700,992, iterations: 1)
Change-Id: I0c4cd2f0a819d427f5af32de007b461793217464
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The overhead of a read/write lock should not be required for such
small critical sections. It will also allow us to cleanup the
code a bit more. Already, the code changes lead to a small improvement
before:
RESULT : tst_QResourcesManager::benchmarkAllocateSmallResources():
46,552,767 instructions per iteration (total: 46,552,767, iterations: 1)
RESULT : tst_QResourcesManager::benchmarkAllocateBigResources():
48,338,703 instructions per iteration (total: 48,338,703, iterations: 1)
after:
RESULT : tst_QResourcesManager::benchmarkAllocateSmallResources():
44,848,672 instructions per iteration (total: 44,848,672, iterations: 1)
RESULT : tst_QResourcesManager::benchmarkAllocateBigResources():
46,634,161 instructions per iteration (total: 46,634,161, iterations: 1)
Change-Id: I8ef0aa52be3caf8b4c8691579677f693a054565c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The tricks applied are identical to those done previously for
ArrayAllocationPolicy:
We remove the obsolete hash for the index mapping and instead use
pointer differences directly, which is much faster and reduces
the memory consumption.
Some variables are also renamed to better reflect common allocator
nomenclature.
The added benchmark shows a reduction of the instruction count
by a factor of about 10.
Change-Id: Icabc354ab9e1e8ea0b1dc83c71a2f2cfe49d1da0
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Startup memory usage is now 10% of what it was before.
Unit tests corrected and benchmarks added.
Benchmarks:
DynamicArrayPolicy
QResourcesManager
Change-Id: Idaeedba5156ac2d6a0a494e7399d9dcb141dc81c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
Allows to handle allocation of subclasses using the overloaded new operator
from the parent.
Change-Id: Ie587c81fb3a5cb5aa6735377bfcc57bb4407b117
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
qhandle.h:103:9: error: ISO C++ prohibits anonymous structs [-Wpedantic]
Change-Id: I06e6736d96ad24968d276e721ce53752ee99ebeb
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
| |
They MUST compile in pedantic, -Werror=shadow, no-keywords mode. In addition
to that, this fixes:
error: typedef ‘qHandle’ locally defined but not used [-Werror=unused-local-typedefs]
Change-Id: If39e049dee0d2a468fcd524b18597e3c088c0bc3
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
This ensure that if T is a base class, we release the right amount of memory.
Of course this assumes the allocation was made using the correct subclass.
Change-Id: I9bbbc223726f833c09a747279893a28f533bdabf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Found out that not naming the ReadLocker / WriteLocker caused them to be
directly destroyed hence not locking anything.
If some resource is acquired with acquire (not using an indexing id) it must
explicitly be released using release and the handle. This allows to make
release significantly faster by not having to lookup if there is an id
associated with a handle.
ListAllocatingPolicity slighty improved. However there seem to be an issue
with ListAllocationgPolicy where using a QList might be, by its nature a bad
idea. If the QList is reallocated when it needs to be grown, all pointer values
returned by allocate may be invalid and then cause a crash. We'll have to see
what we can do for that.
Change-Id: I049d322c02e686ee2e97928a6fd8b648be5d2e62
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ie6a4f6409001ac9b8c39727017d10c216f6cd7a5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a resource managed by a QResourcesManager has declared a
Q_DECLARE_RESOURCE_INFO(Resource, Q_REQUIRES_CLEANUP);
in its header, a call to Resource->cleanup() will be performed when the
resource is released.
Note: Needs the next patch to compile
Change-Id: Icef073c90f44a8e43a07adb5b9a496b86d7a4398
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Minimized references to frontend elements from the backend.
QNode now has a uuid.
simple-qml update to use an instanciator.
Changed slightly the way LoadDataMeshJobs works.
Change-Id: If2866eb124bf9c026098ea0c70ae197101e9553e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I6cbf360e86cae4fdfcef123d7142aced04b616dd
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I0bf124236d0bf8f28c347b07ab323e64091c5e6f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ie3b7c7488be96edee9536fe7849b35957526df6a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I8a874ae6bf19f3948949e1945dd1462efcda2e74
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
Also renamed the LockingPolicy implementation to ObjectLevelLockingPolicy to
reduce confusion with the template name.
Change-Id: I7a9c298f5068d27dc78716a314e08b4a10c7ea6d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ic89c53ee527cf1f174445f019566b8ab8c648f36
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two policies have been added, AllocatingPolicy and LockingPolicy.
The AllocatingPolicy removes the need for subclassing QAbstractManager to
handle different allocating scheme. This is now handled through a dedicated
AllocatingPolicty that can be easily set by setting a template parameter. The
default AllocationPolicy is ArrayAllocatingPolicy.
QArrayResourcesManager and QListResourcesManager have therefore been removed
and replaced by those. Tests have also been updated.
The second policy, LockingPolicy provides a way to specify the locking
behavior to be used by the QAbstractResourcesManager. The default is
NonLockingPolicy which doesn't lock anything. The other LockingPolicy provides
locking around a QReadWriteLocker.
The QAbstractResourcesManager class should be renamed to QResourcesManager.
Change-Id: Ifecf7f1bcd5205eff78f9200b4dee004bee28af4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Removed a useless line that caused a call to the dtor of the manager resource
upon acquisition.
Change-Id: I94b4344ffb0ad34f5c2050480d7b286b0ac53c2a
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
| |
Change-Id: I8fe8055ec470c23e0337c83275912aa75bf38af4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Moved methods definition within class declaration to solve Windows compilation
error.
Still doesn't compile entirely though due to Assimp errors it seems.
Change-Id: I1490990d93ad5517ffe8693459822a8a62fb1317
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ied0bd701fa653396b657ea5c2f2097eb7a425953
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is different to QtCore's QRingBuffer. QRingBuffer deals with
raw bytes with a non-contiguous list of QByteArrays. QCircularBuffer
is strongly typed and the data is guaranteed to be stored in a
contiguous block of memory. Although the start/end of the buffer
may not correspond to the start/end of the block of memory once it
has reached capacity and wraps around.
Done-with: Andreas Hartmetz and Marc Mutz
Change-Id: Id03ad308b13fb359604d19474d892ff22c1e9b93
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
|
|
|
|
|
| |
Change-Id: I50d7d25f0fb4afd8fba247a08b8f937a064030cc
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
QArrayResourcesManager : QVector based resources manager
QListResourcesManager : QList bases resources manager
Change-Id: I487716749dccb7cb75edc6556d93fc3bb96941ee
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
QHandleManager worked only when INDEXBITS was set to the default value 16.
This is corrected now so that a QResourceManager<T, 4> created a
QHandleManager<T, 4> which provides QHandle<T, 4>
Follow up commits will follow for the refactoring of QResourcesManager into
subclasses that can implement their own dedicated memory allocation scheme.
Change-Id: If3b3fb43ae1c9473d9777cf9ba984ba37a65cfa9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
QResources manager adapted to work with Sean Harmer's QHandle and
QHandleManager.
Change-Id: Ia2d60c93b72913194bbd04e064a5457ff1a091b7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|