From dccca4ab33be7977c1b640d793257203d121e7d0 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Fri, 16 Sep 2022 14:52:34 +0200 Subject: [PATCH] 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 --- src/gui/rhi/qshader.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gui/rhi/qshader.cpp b/src/gui/rhi/qshader.cpp index 6802be36ef..769a5767b0 100644 --- a/src/gui/rhi/qshader.cpp +++ b/src/gui/rhi/qshader.cpp @@ -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; }