summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngine
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-10-05 02:47:00 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-10-05 02:47:00 +0000
commitb21d0b773414c462569ad1d9e3970bc07637babf (patch)
tree01a748e4dbce2d2f4620a8d6c7b9d4ca609c7b7b /Graphics/GraphicsEngine
parentMerge branch 'master' (diff)
downloadDiligentCore-b21d0b773414c462569ad1d9e3970bc07637babf.tar.gz
DiligentCore-b21d0b773414c462569ad1d9e3970bc07637babf.zip
Removed StringView; using unordered_maps in BLAS, TLAS and SBT
Diffstat (limited to 'Graphics/GraphicsEngine')
-rw-r--r--Graphics/GraphicsEngine/include/BottomLevelASBase.hpp15
-rw-r--r--Graphics/GraphicsEngine/include/ShaderBindingTableBase.hpp11
-rw-r--r--Graphics/GraphicsEngine/include/TopLevelASBase.hpp14
3 files changed, 22 insertions, 18 deletions
diff --git a/Graphics/GraphicsEngine/include/BottomLevelASBase.hpp b/Graphics/GraphicsEngine/include/BottomLevelASBase.hpp
index 7f1e402f..879d73ab 100644
--- a/Graphics/GraphicsEngine/include/BottomLevelASBase.hpp
+++ b/Graphics/GraphicsEngine/include/BottomLevelASBase.hpp
@@ -30,14 +30,14 @@
/// \file
/// Implementation of the Diligent::BottomLevelASBase template class
-#include <map>
+#include <unordered_map>
#include <memory>
#include "BottomLevelAS.h"
#include "DeviceObjectBase.hpp"
#include "RenderDeviceBase.hpp"
#include "StringPool.hpp"
-#include "StringView.hpp"
+#include "HashUtils.hpp"
namespace Diligent
{
@@ -97,7 +97,7 @@ public:
for (Uint32 i = 0; i < Desc.TriangleCount; ++i)
{
pTriangles[i].GeometryName = m_StringPool.CopyString(pTriangles[i].GeometryName);
- bool IsUniqueName = m_NameToIndex.insert({StringView{pTriangles[i].GeometryName}, i}).second;
+ bool IsUniqueName = m_NameToIndex.emplace(pTriangles[i].GeometryName, i).second;
if (!IsUniqueName)
LOG_ERROR_AND_THROW("Geometry name must be unique!");
}
@@ -127,7 +127,7 @@ public:
for (Uint32 i = 0; i < Desc.TriangleCount; ++i)
{
pBoxes[i].GeometryName = m_StringPool.CopyString(pBoxes[i].GeometryName);
- bool IsUniqueName = m_NameToIndex.insert({StringView{pBoxes[i].GeometryName}, i}).second;
+ bool IsUniqueName = m_NameToIndex.emplace(pBoxes[i].GeometryName, i).second;
if (!IsUniqueName)
LOG_ERROR_AND_THROW("Geometry name must be unique!");
}
@@ -151,7 +151,7 @@ public:
{
VERIFY_EXPR(Name != nullptr && Name[0] != '\0');
- auto iter = m_NameToIndex.find(StringView{Name});
+ auto iter = m_NameToIndex.find(Name);
if (iter != m_NameToIndex.end())
return iter->second;
@@ -185,8 +185,9 @@ protected:
IMPLEMENT_QUERY_INTERFACE_IN_PLACE(IID_BottomLevelAS, TDeviceObjectBase)
protected:
- std::map<StringView, Uint32> m_NameToIndex; // TODO (AZ): use unordered_map?
- StringPool m_StringPool;
+ std::unordered_map<HashMapStringKey, Uint32, HashMapStringKey::Hasher> m_NameToIndex;
+
+ StringPool m_StringPool;
};
} // namespace Diligent
diff --git a/Graphics/GraphicsEngine/include/ShaderBindingTableBase.hpp b/Graphics/GraphicsEngine/include/ShaderBindingTableBase.hpp
index 44c99c7c..cce40b11 100644
--- a/Graphics/GraphicsEngine/include/ShaderBindingTableBase.hpp
+++ b/Graphics/GraphicsEngine/include/ShaderBindingTableBase.hpp
@@ -30,13 +30,13 @@
/// \file
/// Implementation of the Diligent::ShaderBindingTableBase template class
-#include <map>
+#include <unordered_map>
#include "ShaderBindingTable.h"
#include "DeviceObjectBase.hpp"
#include "RenderDeviceBase.hpp"
#include "StringPool.hpp"
-#include "StringView.hpp"
+#include "HashUtils.hpp"
namespace Diligent
{
@@ -92,9 +92,10 @@ protected:
IMPLEMENT_QUERY_INTERFACE_IN_PLACE(IID_ShaderBindingTable, TDeviceObjectBase)
protected:
- std::map<StringView, Uint32> m_NameToIndex; // TODO (AZ): use unordered_map?
- StringPool m_StringPool;
- std::map<StringView, TLASInstanceDesc> m_Instances; // TODO (AZ): use unordered_map?
+ StringPool m_StringPool;
+
+ std::unordered_map<HashMapStringKey, Uint32, HashMapStringKey::Hasher> m_NameToIndex;
+ std::unordered_map<HashMapStringKey, TLASInstanceDesc, HashMapStringKey::Hasher> m_Instances;
};
} // namespace Diligent
diff --git a/Graphics/GraphicsEngine/include/TopLevelASBase.hpp b/Graphics/GraphicsEngine/include/TopLevelASBase.hpp
index 7c207a9d..2d2049af 100644
--- a/Graphics/GraphicsEngine/include/TopLevelASBase.hpp
+++ b/Graphics/GraphicsEngine/include/TopLevelASBase.hpp
@@ -30,12 +30,13 @@
/// \file
/// Implementation of the Diligent::TopLevelASBase template class
+#include <unordered_map>
+
#include "TopLevelAS.h"
#include "DeviceObjectBase.hpp"
#include "RenderDeviceBase.hpp"
#include "StringPool.hpp"
-#include "StringView.hpp"
-#include <map>
+#include "HashUtils.hpp"
namespace Diligent
{
@@ -92,7 +93,7 @@ public:
Desc.contributionToHitGroupIndex = inst.contributionToHitGroupIndex;
Desc.pBLAS = inst.pBLAS;
- bool IsUniqueName = m_Instances.emplace(StringView{NameCopy}, Desc).second;
+ bool IsUniqueName = m_Instances.emplace(NameCopy, Desc).second;
if (!IsUniqueName)
LOG_ERROR_AND_THROW("Instance name must be unique!");
}
@@ -104,7 +105,7 @@ public:
TLASInstanceDesc Result = {};
- auto iter = m_Instances.find(StringView{Name});
+ auto iter = m_Instances.find(Name);
if (iter != m_Instances.end())
{
Result.ContributionToHitGroupIndex = iter->second.contributionToHitGroupIndex;
@@ -146,8 +147,9 @@ protected:
mutable RefCntAutoPtr<IBottomLevelAS> pBLAS;
};
- StringPool m_StringPool;
- std::map<StringView, InstanceDesc> m_Instances; // TODO(AZ): use unordered_map?
+ StringPool m_StringPool;
+
+ std::unordered_map<HashMapStringKey, InstanceDesc, HashMapStringKey::Hasher> m_Instances;
};
} // namespace Diligent