rhi: QShader: Only hash the first shader

This is good enough for a hash value and brings a not
insignificant boost to cases when this is used heavily.

In qmlbench with delegates_shadereffect.qml this improves
the results in my runs 386->405.

Pick-to: 6.4
Change-Id: I3dbb9ffabf5986c5ff6b69928b3f073e944450ee
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
bb10
Laszlo Agocs 2022-09-16 14:52:34 +02:00
parent 2b841d40b2
commit dccca4ab33
1 changed files with 4 additions and 3 deletions

View File

@ -597,9 +597,10 @@ size_t qHash(const QShader &s, size_t seed) noexcept
{
QtPrivate::QHashCombine hash;
seed = hash(seed, s.stage());
seed = qHashRange(s.d->shaders.keyValueBegin(),
s.d->shaders.keyValueEnd(),
seed);
if (!s.d->shaders.isEmpty()) {
seed = hash(seed, s.d->shaders.firstKey());
seed = hash(seed, s.d->shaders.first());
}
return seed;
}