summaryrefslogtreecommitdiffstats
path: root/src/gui/rhi/qrhi.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2023-02-17 14:18:57 +0100
committerLaszlo Agocs <laszlo.agocs@qt.io>2023-02-20 18:06:32 +0100
commit933df0a9ff7b487aa6927fbc99de7f234cc2a054 (patch)
treefac4f4f9ee60e01f47d5a1a0d6989d5a3509f512 /src/gui/rhi/qrhi.cpp
parent7dbf9ae9e4b46b037f7935c08a701a819640554e (diff)
rhi: Use QHashCombine
Change-Id: Id83abf97a0e91cdc1624e5523abd6492c5ab7393 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/gui/rhi/qrhi.cpp')
-rw-r--r--src/gui/rhi/qrhi.cpp67
1 files changed, 50 insertions, 17 deletions
diff --git a/src/gui/rhi/qrhi.cpp b/src/gui/rhi/qrhi.cpp
index 4825721053..6723d3e5a3 100644
--- a/src/gui/rhi/qrhi.cpp
+++ b/src/gui/rhi/qrhi.cpp
@@ -910,7 +910,10 @@ bool operator!=(const QRhiDepthStencilClearValue &a, const QRhiDepthStencilClear
*/
size_t qHash(const QRhiDepthStencilClearValue &v, size_t seed) noexcept
{
- return seed * (uint(qFloor(qreal(v.depthClearValue()) * 100)) + v.stencilClearValue());
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, v.depthClearValue());
+ seed = hash(seed, v.stencilClearValue());
+ return seed;
}
#ifndef QT_NO_DEBUG_STREAM
@@ -1007,8 +1010,14 @@ bool operator!=(const QRhiViewport &a, const QRhiViewport &b) noexcept
size_t qHash(const QRhiViewport &v, size_t seed) noexcept
{
const std::array<float, 4> r = v.viewport();
- return seed + uint(r[0]) + uint(r[1]) + uint(r[2]) + uint(r[3])
- + uint(qFloor(qreal(v.minDepth()) * 100)) + uint(qFloor(qreal(v.maxDepth()) * 100));
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, r[0]);
+ seed = hash(seed, r[1]);
+ seed = hash(seed, r[2]);
+ seed = hash(seed, r[3]);
+ seed = hash(seed, v.minDepth());
+ seed = hash(seed, v.maxDepth());
+ return seed;
}
#ifndef QT_NO_DEBUG_STREAM
@@ -1098,7 +1107,12 @@ bool operator!=(const QRhiScissor &a, const QRhiScissor &b) noexcept
size_t qHash(const QRhiScissor &v, size_t seed) noexcept
{
const std::array<int, 4> r = v.scissor();
- return seed + uint(r[0]) + uint(r[1]) + uint(r[2]) + uint(r[3]);
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, r[0]);
+ seed = hash(seed, r[1]);
+ seed = hash(seed, r[2]);
+ seed = hash(seed, r[3]);
+ return seed;
}
#ifndef QT_NO_DEBUG_STREAM
@@ -1231,7 +1245,10 @@ bool operator!=(const QRhiVertexInputBinding &a, const QRhiVertexInputBinding &b
*/
size_t qHash(const QRhiVertexInputBinding &v, size_t seed) noexcept
{
- return seed + v.stride() + v.classification();
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, v.stride());
+ seed = hash(seed, v.classification());
+ return seed;
}
#ifndef QT_NO_DEBUG_STREAM
@@ -1379,6 +1396,7 @@ bool operator==(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribut
&& a.location() == b.location()
&& a.format() == b.format()
&& a.offset() == b.offset();
+ // matrixSlice excluded intentionally
}
/*!
@@ -1399,7 +1417,12 @@ bool operator!=(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribut
*/
size_t qHash(const QRhiVertexInputAttribute &v, size_t seed) noexcept
{
- return seed + uint(v.binding()) + uint(v.location()) + uint(v.format()) + v.offset();
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, v.binding());
+ seed = hash(seed, v.location());
+ seed = hash(seed, v.format());
+ seed = hash(seed, v.offset());
+ return seed;
}
#ifndef QT_NO_DEBUG_STREAM
@@ -1537,7 +1560,10 @@ bool operator!=(const QRhiVertexInputLayout &a, const QRhiVertexInputLayout &b)
*/
size_t qHash(const QRhiVertexInputLayout &v, size_t seed) noexcept
{
- return qHash(v.m_bindings, seed) + qHash(v.m_attributes, seed);
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, v.m_bindings);
+ seed = hash(seed, v.m_attributes);
+ return seed;
}
#ifndef QT_NO_DEBUG_STREAM
@@ -1633,7 +1659,11 @@ bool operator!=(const QRhiShaderStage &a, const QRhiShaderStage &b) noexcept
*/
size_t qHash(const QRhiShaderStage &v, size_t seed) noexcept
{
- return v.type() + qHash(v.shader(), seed) + v.shaderVariant();
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, v.type());
+ seed = hash(seed, v.shader());
+ seed = hash(seed, v.shaderVariant());
+ return seed;
}
#ifndef QT_NO_DEBUG_STREAM
@@ -4174,33 +4204,36 @@ bool operator!=(const QRhiShaderResourceBinding &a, const QRhiShaderResourceBind
size_t qHash(const QRhiShaderResourceBinding &b, size_t seed) noexcept
{
const QRhiShaderResourceBinding::Data *d = QRhiImplementation::shaderResourceBindingData(b);
- size_t h = uint(d->binding) ^ uint(d->stage) ^ uint(d->type) ^ seed;
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, d->binding);
+ seed = hash(seed, d->stage);
+ seed = hash(seed, d->type);
switch (d->type) {
case QRhiShaderResourceBinding::UniformBuffer:
- h ^= qHash(reinterpret_cast<quintptr>(d->u.ubuf.buf));
+ seed = hash(seed, reinterpret_cast<quintptr>(d->u.ubuf.buf));
break;
case QRhiShaderResourceBinding::SampledTexture:
- h ^= qHash(reinterpret_cast<quintptr>(d->u.stex.texSamplers[0].tex));
- h ^= qHash(reinterpret_cast<quintptr>(d->u.stex.texSamplers[0].sampler));
+ seed = hash(seed, reinterpret_cast<quintptr>(d->u.stex.texSamplers[0].tex));
+ seed = hash(seed, reinterpret_cast<quintptr>(d->u.stex.texSamplers[0].sampler));
break;
case QRhiShaderResourceBinding::Texture:
- h ^= qHash(reinterpret_cast<quintptr>(d->u.stex.texSamplers[0].tex));
+ seed = hash(seed, reinterpret_cast<quintptr>(d->u.stex.texSamplers[0].tex));
break;
case QRhiShaderResourceBinding::Sampler:
- h ^= qHash(reinterpret_cast<quintptr>(d->u.stex.texSamplers[0].sampler));
+ seed = hash(seed, reinterpret_cast<quintptr>(d->u.stex.texSamplers[0].sampler));
break;
case QRhiShaderResourceBinding::ImageLoad:
case QRhiShaderResourceBinding::ImageStore:
case QRhiShaderResourceBinding::ImageLoadStore:
- h ^= qHash(reinterpret_cast<quintptr>(d->u.simage.tex));
+ seed = hash(seed, reinterpret_cast<quintptr>(d->u.simage.tex));
break;
case QRhiShaderResourceBinding::BufferLoad:
case QRhiShaderResourceBinding::BufferStore:
case QRhiShaderResourceBinding::BufferLoadStore:
- h ^= qHash(reinterpret_cast<quintptr>(d->u.sbuf.buf));
+ seed = hash(seed, reinterpret_cast<quintptr>(d->u.sbuf.buf));
break;
}
- return h;
+ return seed;
}
#ifndef QT_NO_DEBUG_STREAM