Commit 64ac5d9e by Luc Ferron Committed by Commit Bot

Vulkan: Quick rename of member variable in DynamicBuffer

The new name mNxtAllocationOffset instead of mNextWriteOffset makes more sense. Also merged the 2 offset tracking vars since the user of DynamicBuffer should know to flush or invalidate correctly. Bug: angleproject:2480 Change-Id: If7a04b633794484ad88e73fd6f802fcfe0e3705a Reviewed-on: https://chromium-review.googlesource.com/1069107Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
parent 671be629
...@@ -97,9 +97,8 @@ uint32_t GetImageLayerCount(gl::TextureType textureType) ...@@ -97,9 +97,8 @@ uint32_t GetImageLayerCount(gl::TextureType textureType)
DynamicBuffer::DynamicBuffer(VkBufferUsageFlags usage, size_t minSize) DynamicBuffer::DynamicBuffer(VkBufferUsageFlags usage, size_t minSize)
: mUsage(usage), : mUsage(usage),
mMinSize(minSize), mMinSize(minSize),
mNextWriteOffset(0), mNextAllocationOffset(0),
mLastFlushOffset(0), mLastFlushOrInvalidateOffset(0),
mLastInvalidatedOffset(0),
mSize(0), mSize(0),
mAlignment(0), mAlignment(0),
mMappedMemory(nullptr) mMappedMemory(nullptr)
...@@ -135,7 +134,7 @@ Error DynamicBuffer::allocate(RendererVk *renderer, ...@@ -135,7 +134,7 @@ Error DynamicBuffer::allocate(RendererVk *renderer,
size_t sizeToAllocate = roundUp(sizeInBytes, mAlignment); size_t sizeToAllocate = roundUp(sizeInBytes, mAlignment);
angle::base::CheckedNumeric<size_t> checkedNextWriteOffset = mNextWriteOffset; angle::base::CheckedNumeric<size_t> checkedNextWriteOffset = mNextAllocationOffset;
checkedNextWriteOffset += sizeToAllocate; checkedNextWriteOffset += sizeToAllocate;
if (!checkedNextWriteOffset.IsValid() || checkedNextWriteOffset.ValueOrDie() > mSize) if (!checkedNextWriteOffset.IsValid() || checkedNextWriteOffset.ValueOrDie() > mSize)
...@@ -166,9 +165,8 @@ Error DynamicBuffer::allocate(RendererVk *renderer, ...@@ -166,9 +165,8 @@ Error DynamicBuffer::allocate(RendererVk *renderer,
&mMemory, &mSize)); &mMemory, &mSize));
ANGLE_TRY(mMemory.map(device, 0, mSize, 0, &mMappedMemory)); ANGLE_TRY(mMemory.map(device, 0, mSize, 0, &mMappedMemory));
mNextWriteOffset = 0; mNextAllocationOffset = 0;
mLastFlushOffset = 0; mLastFlushOrInvalidateOffset = 0;
mLastInvalidatedOffset = 0;
if (newBufferAllocatedOut != nullptr) if (newBufferAllocatedOut != nullptr)
{ {
...@@ -188,42 +186,42 @@ Error DynamicBuffer::allocate(RendererVk *renderer, ...@@ -188,42 +186,42 @@ Error DynamicBuffer::allocate(RendererVk *renderer,
} }
ASSERT(mMappedMemory); ASSERT(mMappedMemory);
*ptrOut = mMappedMemory + mNextWriteOffset; *ptrOut = mMappedMemory + mNextAllocationOffset;
*offsetOut = mNextWriteOffset; *offsetOut = mNextAllocationOffset;
mNextWriteOffset += static_cast<uint32_t>(sizeToAllocate); mNextAllocationOffset += static_cast<uint32_t>(sizeToAllocate);
return NoError(); return NoError();
} }
Error DynamicBuffer::flush(VkDevice device) Error DynamicBuffer::flush(VkDevice device)
{ {
if (mNextWriteOffset > mLastFlushOffset) if (mNextAllocationOffset > mLastFlushOrInvalidateOffset)
{ {
VkMappedMemoryRange range; VkMappedMemoryRange range;
range.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE; range.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
range.pNext = nullptr; range.pNext = nullptr;
range.memory = mMemory.getHandle(); range.memory = mMemory.getHandle();
range.offset = mLastFlushOffset; range.offset = mLastFlushOrInvalidateOffset;
range.size = mNextWriteOffset - mLastFlushOffset; range.size = mNextAllocationOffset - mLastFlushOrInvalidateOffset;
ANGLE_VK_TRY(vkFlushMappedMemoryRanges(device, 1, &range)); ANGLE_VK_TRY(vkFlushMappedMemoryRanges(device, 1, &range));
mLastFlushOffset = mNextWriteOffset; mLastFlushOrInvalidateOffset = mNextAllocationOffset;
} }
return NoError(); return NoError();
} }
Error DynamicBuffer::invalidate(VkDevice device) Error DynamicBuffer::invalidate(VkDevice device)
{ {
if (mNextWriteOffset > mLastInvalidatedOffset) if (mNextAllocationOffset > mLastFlushOrInvalidateOffset)
{ {
VkMappedMemoryRange range; VkMappedMemoryRange range;
range.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE; range.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
range.pNext = nullptr; range.pNext = nullptr;
range.memory = mMemory.getHandle(); range.memory = mMemory.getHandle();
range.offset = mLastInvalidatedOffset; range.offset = mLastFlushOrInvalidateOffset;
range.size = mNextWriteOffset - mLastInvalidatedOffset; range.size = mNextAllocationOffset - mLastFlushOrInvalidateOffset;
ANGLE_VK_TRY(vkInvalidateMappedMemoryRanges(device, 1, &range)); ANGLE_VK_TRY(vkInvalidateMappedMemoryRanges(device, 1, &range));
mLastInvalidatedOffset = mNextWriteOffset; mLastFlushOrInvalidateOffset = mNextAllocationOffset;
} }
return NoError(); return NoError();
} }
......
...@@ -74,9 +74,8 @@ class DynamicBuffer : angle::NonCopyable ...@@ -74,9 +74,8 @@ class DynamicBuffer : angle::NonCopyable
size_t mMinSize; size_t mMinSize;
Buffer mBuffer; Buffer mBuffer;
DeviceMemory mMemory; DeviceMemory mMemory;
uint32_t mNextWriteOffset; uint32_t mNextAllocationOffset;
uint32_t mLastFlushOffset; uint32_t mLastFlushOrInvalidateOffset;
uint32_t mLastInvalidatedOffset;
size_t mSize; size_t mSize;
size_t mAlignment; size_t mAlignment;
uint8_t *mMappedMemory; uint8_t *mMappedMemory;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment