summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorazhirnov <zh1dron@gmail.com>2020-10-17 17:02:58 +0000
committerazhirnov <zh1dron@gmail.com>2020-10-17 17:02:58 +0000
commite8f439dc0f87f6820e3db53ecd8ee41cc878d90c (patch)
tree65e6bbc267b04c7de10f9b3bec3ed5ca42b033df
parentAdded test for LinearAllocator (diff)
downloadDiligentCore-e8f439dc0f87f6820e3db53ecd8ee41cc878d90c.tar.gz
DiligentCore-e8f439dc0f87f6820e3db53ecd8ee41cc878d90c.zip
Fixed compilation, some fixes after review
-rw-r--r--Common/interface/LinearAllocator.hpp3
-rw-r--r--Graphics/GraphicsEngine/include/PipelineStateBase.hpp2
-rw-r--r--Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.hpp8
-rw-r--r--Tests/DiligentCoreTest/src/Common/AllocatorTest.cpp10
4 files changed, 16 insertions, 7 deletions
diff --git a/Common/interface/LinearAllocator.hpp b/Common/interface/LinearAllocator.hpp
index 9d580f0b..00f94ee3 100644
--- a/Common/interface/LinearAllocator.hpp
+++ b/Common/interface/LinearAllocator.hpp
@@ -98,10 +98,11 @@ public:
VERIFY(m_pBuffer == nullptr, "Memory already allocated");
if (size > 0)
{
+ size = Align(size, align);
m_RequiredSize = Align(m_RequiredSize, align) + size;
// Reserve additional space for pointer alignment
- m_RequiredSize += (align > sizeof(void*) ? align : 0);
+ m_RequiredSize += (align > sizeof(void*) ? align - sizeof(void*) : 0);
}
}
diff --git a/Graphics/GraphicsEngine/include/PipelineStateBase.hpp b/Graphics/GraphicsEngine/include/PipelineStateBase.hpp
index d8cb09bb..ef5b38c2 100644
--- a/Graphics/GraphicsEngine/include/PipelineStateBase.hpp
+++ b/Graphics/GraphicsEngine/include/PipelineStateBase.hpp
@@ -118,7 +118,7 @@ public:
return m_ShaderResourceLayoutHash != ValidatedCast<const PipelineStateBase>(pPSO)->m_ShaderResourceLayoutHash;
}
- const GraphicsPipelineDesc& GetGraphicsPipelineDesc() const override final
+ virtual const GraphicsPipelineDesc& DILIGENT_CALL_TYPE GetGraphicsPipelineDesc() const override final
{
VERIFY_EXPR(this->m_Desc.IsAnyGraphicsPipeline());
VERIFY_EXPR(m_pGraphicsPipelineDesc != nullptr);
diff --git a/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.hpp b/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.hpp
index d23142e0..5c8037c3 100644
--- a/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.hpp
+++ b/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.hpp
@@ -87,12 +87,12 @@ public:
ISampler** ppSampler) override final;
/// Implementation of IRenderDevice::CreateGraphicsPipelineState() in OpenGL backend.
- virtual void CreateGraphicsPipelineState(const GraphicsPipelineStateCreateInfo& PSOCreateInfo,
- IPipelineState** ppPipelineState) override final;
+ virtual void DILIGENT_CALL_TYPE CreateGraphicsPipelineState(const GraphicsPipelineStateCreateInfo& PSOCreateInfo,
+ IPipelineState** ppPipelineState) override final;
/// Implementation of IRenderDevice::CreateComputePipelineState() in OpenGL backend.
- virtual void CreateComputePipelineState(const ComputePipelineStateCreateInfo& PSOCreateInfo,
- IPipelineState** ppPipelineState) override final;
+ virtual void DILIGENT_CALL_TYPE CreateComputePipelineState(const ComputePipelineStateCreateInfo& PSOCreateInfo,
+ IPipelineState** ppPipelineState) override final;
void CreateGraphicsPipelineState(const GraphicsPipelineStateCreateInfo& PSOCreateInfo,
IPipelineState** ppPipelineState,
diff --git a/Tests/DiligentCoreTest/src/Common/AllocatorTest.cpp b/Tests/DiligentCoreTest/src/Common/AllocatorTest.cpp
index 3dc15aaf..96cab29b 100644
--- a/Tests/DiligentCoreTest/src/Common/AllocatorTest.cpp
+++ b/Tests/DiligentCoreTest/src/Common/AllocatorTest.cpp
@@ -123,6 +123,11 @@ TEST(Common_FixedBlockMemoryAllocator, UnalignedSize)
TEST(Common_LinearAllocator, PointerAlignment)
{
+ struct alignas(32) TObj32
+ {
+ char data[64];
+ };
+
LinearAllocator Allocator{DefaultRawMemoryAllocator::GetAllocator()};
const std::string SrcStr = "123456789";
@@ -131,18 +136,21 @@ TEST(Common_LinearAllocator, PointerAlignment)
Allocator.AddRequiredSize<uint32_t>(5);
Allocator.AddRequiredSize<uint64_t>(3);
Allocator.AddRequiredSize<float>(6);
+ Allocator.AddRequiredSize<TObj32>(4);
Allocator.Reserve();
- char* DstStr = Allocator.CopyString(SrcStr.c_str());
+ char* DstStr = Allocator.CopyString(SrcStr.c_str());
size_t IntPtrUint32 = reinterpret_cast<size_t>(Allocator.Allocate<uint32_t>(5));
size_t IntPtrUint64 = reinterpret_cast<size_t>(Allocator.Allocate<uint64_t>(3));
size_t IntPtrFloat = reinterpret_cast<size_t>(Allocator.Allocate<float>(6));
+ size_t IntPtrTObj32 = reinterpret_cast<size_t>(Allocator.Allocate<TObj32>(4));
EXPECT_EQ(SrcStr, DstStr);
EXPECT_EQ(IntPtrUint32, Align(IntPtrUint32, alignof(uint32_t)));
EXPECT_EQ(IntPtrUint64, Align(IntPtrUint64, alignof(uint64_t)));
EXPECT_EQ(IntPtrFloat, Align(IntPtrFloat, alignof(float)));
+ EXPECT_EQ(IntPtrTObj32, Align(IntPtrTObj32, alignof(TObj32)));
}
} // namespace