summaryrefslogtreecommitdiffstats
path: root/tools/render-test
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-05-26 13:53:10 -0400
committerGitHub <noreply@github.com>2020-05-26 13:53:10 -0400
commitb1369040c3d6d6a8704bdb17d9de99f36a108e07 (patch)
tree2761b93946969fe2f505161d3c75e8cabb6107b6 /tools/render-test
parentee2ec68596262398b2d77c128f45b3f32a28c35e (diff)
Improvements around hashing (#1355)
* Fields from upper to lower case in slang-ast-decl.h * Lower camel field names in slang-ast-stmt.h * Fix fields in slang-ast-expr.h * slang-ast-type.h make fields lowerCamel. * slang-ast-base.h members functions lowerCamel. * Method names in slang-ast-type.h to lowerCamel. * GetCanonicalType -> getCanonicalType * Substitute -> substitute * Equals -> equals ToString -> toString * ParentDecl -> parentDecl Members -> members * * Make hash code types explicit * Use HashCode as return type of GetHashCode * Added conversion from double to int64_t * Split Stable from other hash functions * toHash32/64 to convert a HashCode to the other styles. GetHashCode32/64 -> getHashCode32/64 GetStableHashCode32/64 -> getStableHashCode32/64 * Other Get/Stable/HashCode32/64 fixes * GetHashCode -> getHashCode * Equals -> equals * CreateCanonicalType -> createCanonicalType * Catches of polymorphic types should be through references otherwise slicing can occur. * Fixes for newer verison of gcc. Fix hashing problem on gcc for Dictionary. * Another fix for GetHashPos * Fix signed issue around GetHashPos
Diffstat (limited to 'tools/render-test')
-rw-r--r--tools/render-test/bind-location.cpp6
-rw-r--r--tools/render-test/bind-location.h19
-rw-r--r--tools/render-test/shader-input-layout.cpp2
3 files changed, 14 insertions, 13 deletions
diff --git a/tools/render-test/bind-location.cpp b/tools/render-test/bind-location.cpp
index da344dc03..4ec590fd5 100644
--- a/tools/render-test/bind-location.cpp
+++ b/tools/render-test/bind-location.cpp
@@ -762,7 +762,7 @@ bool BindLocation::operator==(const ThisType& rhs) const
return (m_bindPointSet && rhs.m_bindPointSet) && (m_bindPointSet->m_points == rhs.m_bindPointSet->m_points);
}
-int BindLocation::GetHashCode() const
+HashCode BindLocation::getHashCode() const
{
if (!m_typeLayout)
{
@@ -770,11 +770,11 @@ int BindLocation::GetHashCode() const
}
if (m_bindPointSet)
{
- return m_bindPointSet->GetHashCode();
+ return m_bindPointSet->getHashCode();
}
else
{
- return Slang::combineHash(Slang::combineHash(m_category, Slang::GetHashCode(m_typeLayout)), m_point.GetHashCode());
+ return Slang::combineHash(Slang::combineHash(m_category, Slang::getHashCode(m_typeLayout)), m_point.getHashCode());
}
}
diff --git a/tools/render-test/bind-location.h b/tools/render-test/bind-location.h
index 0e1e907b8..cfa88cce0 100644
--- a/tools/render-test/bind-location.h
+++ b/tools/render-test/bind-location.h
@@ -91,7 +91,7 @@ struct BindPoint
bool operator==(const ThisType& rhs) const { return m_space == rhs.m_space && m_offset == rhs.m_offset; }
bool operator!=(const ThisType& rhs) const { return !(*this == rhs); }
- int GetHashCode() const { return Slang::combineHash(Slang::GetHashCode(m_space), Slang::GetHashCode(m_offset)); }
+ Slang::HashCode getHashCode() const { return Slang::combineHash(Slang::getHashCode(m_space), Slang::getHashCode(m_offset)); }
BindPoint() = default;
BindPoint(Slang::Index space, size_t offset):m_space(space), m_offset(offset) {}
@@ -157,22 +157,23 @@ struct BindPoints
}
bool operator!=(const ThisType& rhs) const { return !(*this == rhs); }
- int GetHashCode() const
+ Slang::HashCode getHashCode() const
{
- int hash = 0x5435abbc;
+ using namespace Slang;
+ HashCode hash = 0x5435abbc;
int bits = 0;
int bit = 1;
- for (Slang::Index i = 0; i < SLANG_PARAMETER_CATEGORY_COUNT; ++i, bit += bit)
+ for (Index i = 0; i < SLANG_PARAMETER_CATEGORY_COUNT; ++i, bit += bit)
{
const auto& point = m_points[i];
if (point.isValid())
{
- hash = Slang::combineHash(hash, point.GetHashCode());
+ hash = combineHash(hash, point.getHashCode());
bits |= bit;
}
}
// The categories set is important too, so merge that in
- return Slang::combineHash(bits, hash);
+ return combineHash(bits, hash);
}
BindPoint& operator[](SlangParameterCategory category) { return m_points[Slang::Index(category)]; }
@@ -188,7 +189,7 @@ class BindPointSet : public Slang::RefObject
public:
typedef Slang::RefObject Super;
- int GetHashCode() const { return m_points.GetHashCode(); }
+ Slang::HashCode getHashCode() const { return m_points.getHashCode(); }
BindPointSet(const BindPoints& points) :
m_points(points)
@@ -272,7 +273,7 @@ struct BindLocation
bool operator!=(const ThisType& rhs) const { return !(*this == rhs); }
/// Get the hash code
- int GetHashCode() const;
+ Slang::HashCode getHashCode() const;
/// Default Ctor - constructs as invalid
BindLocation() {}
@@ -294,7 +295,7 @@ struct BindLocation
BindPoint m_point; ///< If there isn't a bind point set, this defines the point
/// Holds multiple BindPoints.
- /// To keep invariants (such that GetHashCode and == work), it can only be set if
+ /// To keep invariants (such that getHashCode and == work), it can only be set if
/// there is more than one category. If there is just one, m_category and m_point *MUST* be used.
/// NOTE! Can only be written to if there is a single reference.
Slang::RefPtr<BindPointSet> m_bindPointSet;
diff --git a/tools/render-test/shader-input-layout.cpp b/tools/render-test/shader-input-layout.cpp
index f9d6a60e1..4c68899ef 100644
--- a/tools/render-test/shader-input-layout.cpp
+++ b/tools/render-test/shader-input-layout.cpp
@@ -546,7 +546,7 @@ namespace renderer_test
entries.add(entry);
}
}
- catch (TextFormatException)
+ catch (const TextFormatException&)
{
throw TextFormatException(String("Invalid input syntax at line ") + parser.NextToken().Position.Line);
}