[qt/qt/qtbase]: Summary of bulk changes made

KDE Git Services - Bulk Change <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git repository change summary for qt/qt/qtbase
Pushed by mirror-service into branch '6.11'.
Changed from 486ec0f3cd069adc50cb2a265cf4c9db707191be to 54452dc5b8bebb518037ecf4c727c76198d10c87
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.

This change contains the following new commits:

Git commit 0147fc617600066686df459f0117e7e5840156f8 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 21:16..
QBasicAtomic: fix UB (signed overflow) in some operators

The underlying atomic operations are fine (required by the standard,
cf. Note in ¹), but our adjustments of the return value were not, and
could overflow.

Fix by using unsigned arithmetic to do the calculation as required by
the standard:

¹ https://eel.is/c++draft/atomics.types.generic#atomics.types.int-8

Found by ubsan complaining about signed overflow in
tst_qatomicinteger_<signed int> tests.

Amends 19c70982517e76d89bb3da931e1390a6386603da (5.3).

[ChangeLog][QtCore][QAtomicInt/QAtomicInteger] Fixed signed arithmetic
in prefix increment and decrement and in += and -= to be in two's
complement, matching std::atomic's behavior, rather than overflowing
(causing undefined behavior).

Pick-to: 6.8 6.5 5.15
Change-Id: Ic1aa41a803bca9a2d873d7ada8343d0ca01e3fe4
Reviewed-by: Giuseppe D'Angelo <[email protected]>
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 55df5ccd997446760364f55aa041efc7c80d6fdd)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit a9bb29debc88993c89bbfd0eebaca532f877c9b1)
https://invent.kde.org/qt/qt/qtbase/-/commit/0147fc617600066686df459f0117e7e5840156f8

Git commit a1e33e022fc131934ee2dc5ecde22be8e4749819 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 21:16..
QDecompressHelper: mark isSupportedEncoding() noexcept

It conceptually should be, and the implementation actually calls only
noexcept functions, so it's safe to commit to the no-fail label.

Amends 07b008425acb1f550c3e6e96e2bd6033fe86976a (6.0), the addition of
the class.

Pick-to: 6.8
Change-Id: I648b9cb1de4ccbc315f5f2ece8985632f58b74f5
Reviewed-by: Thiago Macieira <[email protected]>
Reviewed-by: Dennis Oberst <[email protected]>
(cherry picked from commit dc93a3b1c6654bf29c53ee448c3c1ffe6a859958)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 522a899290e17b547c7f773873c2d1e84b8caae2)
https://invent.kde.org/qt/qt/qtbase/-/commit/a1e33e022fc131934ee2dc5ecde22be8e4749819

Git commit 3ca9a2e02155056177dadfc2566e8eb0b4d1b5c2 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 21:17..
tst_QDateTime: extend the tests for msec over/underflow to the argument

The old tests set the extreme values on the QDateTime (LHS), and then
added or subtracted one (1) (addMSecs() argument, RHS). What was not
tested was to start with the ±1 on LHS and then add or subtract the
extreme values.

Add those tests. Lucky for us, they pass (incl. in ubsan builds).

Amends 2a6f2fe9ef9a5d0755443ba94183d97b2fac1a28 (6.0).

Pick-to: 6.8 6.5
Change-Id: Ie3076b845944a6890fa7423f03d850681beeb0a0
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 5919760e3283bb609d9d9f534c02344ae264839e)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 31dbfea575b2ab6fc92fe3723d3eb92c44db89ec)
https://invent.kde.org/qt/qt/qtbase/-/commit/3ca9a2e02155056177dadfc2566e8eb0b4d1b5c2

Git commit 1cb2406c441514ee7bd6c396cb463329edf0b467 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 21:17..
QOCICols: don't pattern-init 64KiB of stack memory

Another performance regression caused by
9ff1e6d80bbd5b44b9ec4c0a837d9a4c962698e4.

Found by the function being rejected while trying to build qtbase with
-Wframe-larger-than=20KiB.

Pick-to: 6.8
Change-Id: I26d1e85db8d6eaf58d29b2e05da8cad90a195ad3
Reviewed-by: Giuseppe D'Angelo <[email protected]>
(cherry picked from commit 7eeb08d217ca941260b759be388f6bbee423fbc7)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 8df95e66def1ac0b46cd39fcc04a67d6322d84ec)
https://invent.kde.org/qt/qt/qtbase/-/commit/1cb2406c441514ee7bd6c396cb463329edf0b467

Git commit 9066ccea67d920938a6d7dafa6f7b5f37dcd7f24 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 21:17..
QString: remove unused qthreadstorage.h

The last user of QThreadStorage in this TU was moved to qcollator.cpp
in a9d8794cf0be617d9eedbf9bb0d6d5401735d6f2 (6.3).

Pick-to: 6.8
Change-Id: I951b024c6a8e069c1cb9eb12c0e71094bdedcd40
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 1c285d07760b5b0b6f8c7f8dde47fd4b922a94e7)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 118a728e7286f19418964e9538cff135003bfb4e)
https://invent.kde.org/qt/qt/qtbase/-/commit/9066ccea67d920938a6d7dafa6f7b5f37dcd7f24

Git commit 9f735f8aaf30ef8701998a4d7a365dc644b5aac5 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 21:17..
tst_QKeyCombination: suppress deprecation warning emitted by API under test

Amends 1f77e8566f71d98f4bc6bbf5092594e67a32f268 (picked to 6.2).

Pick-to: 6.8
Change-Id: I2b396154057985ff9cca71192f0d67e62bd83451
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit c3231cd78597207902d517b6032e5c4ac27100d0)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit a70e7f67ce69a743d8493510c8b32ee779ded48a)
https://invent.kde.org/qt/qt/qtbase/-/commit/9f735f8aaf30ef8701998a4d7a365dc644b5aac5

Git commit 44d6d2c1eddc250ce8100a6371359a55ce28b506 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 21:17..
tst_QLogging: fix -Wunused-result in race_helper

... using the std::ignore trick.

Also treat poll(), even though GCC doesn't warn about it, to keep
indentation consistent, and to record intent.

Amends 6e37cd4176368bee838161f5353038027bcdbe50 (picked to 6.5).

Pick-to: 6.8
Change-Id: Ia4ba0967eece28ed7c35fe15b04c8b7d938ac029
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 71ccc59fb8a24de085d2284a4ae094c9b43efb06)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 7487ff4f96560123f6fd33a41cb0381f80eee848)
https://invent.kde.org/qt/qt/qtbase/-/commit/44d6d2c1eddc250ce8100a6371359a55ce28b506

Git commit d2bc230e0f635cccbc714da0f4359b739ce37bce by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 21:17..
tst_QStorageInfo: fix GCC -Wformat-truncation

GCC 15 (in ubsan/asan mode) warned:

  In function ‘int vsnprintf(char*, size_t, const char*, __va_list_tag*)’,
    inlined from ‘int qInfoPrinter(const char*, ...)’ at tst_qstorageinfo.cpp:78:33:
  /usr/include/x86_64-linux-gnu/bits/stdio2.h:80:36: warning: null format string [-Wformat-truncation=]
   80 |   return __builtin___vsnprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   81 |                                     __bos (__s), __fmt, __ap);
      |                                     ~~~~~~~~~~~~~~~~~~~~~~~~~

But all callers (through the function pointer in printVolumes()) pass
non-nullptr string literals, so it's a False Positive. Claude confirms
it's a known problem of the GCC warning, but its fix
(__attribute__((format))) didn't work, so I tried Q_PRESUME, and that
fixed it.

Amends a26435d65ceac5d714d5cc7d5af2326e162d7a41 (5.7).

Picking to all active non-ESM branches, knowing that in 6.8, we'll
need to use Q_ASSUME (Q_PRESUME is \since 6.11).

Pick-to: 6.8
Change-Id: Ib91b26d2f75c7d3618e14c8a222e3a4d15c08c6c
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 19810242a1661191a577ee599747e374f89faa91)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 48e629a11221f7346818d2cc06659c0a8f7aa456)
https://invent.kde.org/qt/qt/qtbase/-/commit/d2bc230e0f635cccbc714da0f4359b739ce37bce

Git commit 231ba18c4b9a217c17512d4d457fe4aaa771049a by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 01/08/2026 at 00:37..
QtOpenGL: add more trusted-content notes

QOpenGLShader and QOpenGLShaderProgram already carry this. Add a few
more for completeness.

Task-number: QTBUG-148531
Pick-to: 6.8
Change-Id: I34660aa7748bc67692c8243d4ed3b2da4917525a
Reviewed-by: Andy Nichols <[email protected]>
(cherry picked from commit 8909e6458566e6a5407f501d0f91968b785af7d8)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 63b4c9f069ad7192d52f10872d5bf1e93fc7a1ac)
https://invent.kde.org/qt/qt/qtbase/-/commit/231ba18c4b9a217c17512d4d457fe4aaa771049a

Git commit 54452dc5b8bebb518037ecf4c727c76198d10c87 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 01/08/2026 at 00:37..
rhi: d3d12: Bind texture and sampler arrays as one descriptor range

A QRhiShaderResourceBinding with an array of textures/samplers
(count > 1) was translated into count descriptor ranges of one
descriptor each, and for samplers into count separate root parameters.
D3D12 does not accept that as binding a shader-declared resource
array; pipeline creation fails with

  Root Signature doesn't match Pixel Shader: Shader sampler descriptor
  range (BaseShaderRegister=0, NumDescriptors=8, RegisterSpace=0) is
  not fully bound in root signature

and likewise for the SRV range.

This only happens with shaders that have SM 6.0 (or 5.1) bytecode. SM
5.0 DXBC has no descriptor ranges: there an array of textures is
declared as t0, t1, ... individually, and a series of one-descriptor
ranges covering the same registers matches that just fine. With DXIL
the array becomes a single shader-declared range of count descriptors,
and then the root signature has to cover it with one range as well.
Since practically all shaders shipped with Qt are built with --hlsl
50, this went unnoticed: the existing tst_qrhi test for an array of
combined image samplers passes with the D3D12 backend as-is, and only
starts failing once its fragment shader is rebuilt for SM 6.0.

Visit textures and samplers per binding instead of per array element,
and emit a single range with NumDescriptors == count. The SRV
descriptors already get copied into a consecutive block of the
shader-visible heap, so only the range construction changes there. The
per-sampler shader-visible descriptors are scattered around the
sampler heap, so an array of samplers now gets a dedicated run of
consecutive descriptors from QD3D12SamplerManager, cached by the list
of sampler descriptions (not by QRhiSampler objects, so unrelated srbs
with the same filtering and addressing modes share one run).

Bindings with a single texture/sampler, which is everything in
practice today, end up with the same root signature and the same
descriptors as before.

Add a tst_qrhi test that renders with an array of 8 sampled textures,
each filled with a single color and sampled into a column of its own,
so that the result also shows whether the array ended up in the right
order. Two different samplers alternate in the array, to get a run of
non-identical sampler descriptors. The shaders are built for SM 6.0 in
addition to 5.0, which is what makes the test exercise the descriptor
range path with D3D12.

Pick-to: 6.8
Change-Id: I37b38bb35fd2953cf52166255ac931a51cef819e
Reviewed-by: Andy Nichols <[email protected]>
(cherry picked from commit 7f10a899198034157b43181e946b10090283b081)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 2691f684f9beb35c609022671c98167b24e63877)
https://invent.kde.org/qt/qt/qtbase/-/commit/54452dc5b8bebb518037ecf4c727c76198d10c87
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.