Minor improvement: Additional protection with asserts in Allocation::PackedData setters.
diff --git a/src/D3D12MemAlloc.cpp b/src/D3D12MemAlloc.cpp
index f70ddf7..73da744 100644
--- a/src/D3D12MemAlloc.cpp
+++ b/src/D3D12MemAlloc.cpp
@@ -4514,6 +4514,34 @@
////////////////////////////////////////////////////////////////////////////////
// Public class Allocation implementation
+void Allocation::PackedData::SetType(Type type)
+{
+ const uint32_t u = (UINT)type;
+ D3D12MA_ASSERT(u < (1u << 2));
+ m_Type = u;
+}
+
+void Allocation::PackedData::SetResourceDimension(D3D12_RESOURCE_DIMENSION resourceDimension)
+{
+ const uint32_t u = (UINT)resourceDimension;
+ D3D12MA_ASSERT(u < (1u << 3));
+ m_ResourceDimension = u;
+}
+
+void Allocation::PackedData::SetResourceFlags(D3D12_RESOURCE_FLAGS resourceFlags)
+{
+ const uint32_t u = (UINT)resourceFlags;
+ D3D12MA_ASSERT(u < (1u << 7));
+ m_ResourceFlags = u;
+}
+
+void Allocation::PackedData::SetTextureLayout(D3D12_TEXTURE_LAYOUT textureLayout)
+{
+ const uint32_t u = (UINT)textureLayout;
+ D3D12MA_ASSERT(u < (1u << 2));
+ m_TextureLayout = u;
+}
+
void Allocation::Release()
{
if(this == NULL)
diff --git a/src/D3D12MemAlloc.h b/src/D3D12MemAlloc.h
index 841a2d0..4e70df2 100644
--- a/src/D3D12MemAlloc.h
+++ b/src/D3D12MemAlloc.h
@@ -561,10 +561,10 @@
D3D12_RESOURCE_FLAGS GetResourceFlags() const { return (D3D12_RESOURCE_FLAGS)m_ResourceFlags; }
D3D12_TEXTURE_LAYOUT GetTextureLayout() const { return (D3D12_TEXTURE_LAYOUT)m_TextureLayout; }
- void SetType(Type type) { m_Type = (UINT)type; }
- void SetResourceDimension(D3D12_RESOURCE_DIMENSION resourceDimension) { m_ResourceDimension = (UINT)resourceDimension; }
- void SetResourceFlags(D3D12_RESOURCE_FLAGS resourceFlags) { m_ResourceFlags = (UINT)resourceFlags; }
- void SetTextureLayout(D3D12_TEXTURE_LAYOUT textureLayout) { m_TextureLayout = (UINT)textureLayout; }
+ void SetType(Type type);
+ void SetResourceDimension(D3D12_RESOURCE_DIMENSION resourceDimension);
+ void SetResourceFlags(D3D12_RESOURCE_FLAGS resourceFlags);
+ void SetTextureLayout(D3D12_TEXTURE_LAYOUT textureLayout);
private:
UINT m_Type : 2; // enum Type