diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-10-05 02:47:00 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-10-05 02:47:00 +0000 |
| commit | b21d0b773414c462569ad1d9e3970bc07637babf (patch) | |
| tree | 01a748e4dbce2d2f4620a8d6c7b9d4ca609c7b7b /Graphics/GraphicsEngine | |
| parent | Merge branch 'master' (diff) | |
| download | DiligentCore-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.hpp | 15 | ||||
| -rw-r--r-- | Graphics/GraphicsEngine/include/ShaderBindingTableBase.hpp | 11 | ||||
| -rw-r--r-- | Graphics/GraphicsEngine/include/TopLevelASBase.hpp | 14 |
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 |
