diff --git a/src/modules/graphics/vulkan/StreamBuffer.cpp b/src/modules/graphics/vulkan/StreamBuffer.cpp index b94892f12..3e87ecdea 100644 --- a/src/modules/graphics/vulkan/StreamBuffer.cpp +++ b/src/modules/graphics/vulkan/StreamBuffer.cpp @@ -95,13 +95,13 @@ love::graphics::StreamBuffer::MapInfo StreamBuffer::map(size_t /*minsize*/) MapInfo info; info.size = bufferSize - frameGPUReadOffset; - info.data = (uint8*)allocInfo.pMappedData + (vgfx->getFrameIndex() * bufferSize) + frameGPUReadOffset; + info.data = (uint8*)allocInfo.pMappedData + (frameIndex * bufferSize) + frameGPUReadOffset; return info; } size_t StreamBuffer::unmap(size_t /*usedSize*/) { - size_t offset = (vgfx->getFrameIndex() * bufferSize) + frameGPUReadOffset; + size_t offset = (frameIndex * bufferSize) + frameGPUReadOffset; return offset; } @@ -112,6 +112,7 @@ void StreamBuffer::markUsed(size_t usedSize) void StreamBuffer::nextFrame() { + frameIndex = (frameIndex + 1) % MAX_FRAMES_IN_FLIGHT; frameGPUReadOffset = 0; } diff --git a/src/modules/graphics/vulkan/StreamBuffer.h b/src/modules/graphics/vulkan/StreamBuffer.h index 1dadf6a5c..b86548066 100644 --- a/src/modules/graphics/vulkan/StreamBuffer.h +++ b/src/modules/graphics/vulkan/StreamBuffer.h @@ -61,6 +61,7 @@ private: VmaAllocation allocation; VmaAllocationInfo allocInfo; VkBuffer buffer = VK_NULL_HANDLE; + int frameIndex = 0; };