vulkan: fix incorrect uniform values

This commit is contained in:
niki
2022-10-05 15:18:27 +02:00
committed by slime73
parent 2466e49fd1
commit 1ab0d819ff
3 changed files with 4 additions and 6 deletions
+2 -2
View File
@@ -325,12 +325,12 @@ void Shader::cmdPushDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBind
auto mapInfo = currentStreamBuffer->map(uniformBufferSizeAligned); auto mapInfo = currentStreamBuffer->map(uniformBufferSizeAligned);
memcpy(mapInfo.data, localUniformData.data(), localUniformData.size()); memcpy(mapInfo.data, localUniformData.data(), localUniformData.size());
currentStreamBuffer->unmap(uniformBufferSizeAligned); auto offset = currentStreamBuffer->unmap(uniformBufferSizeAligned);
currentStreamBuffer->markUsed(uniformBufferSizeAligned); currentStreamBuffer->markUsed(uniformBufferSizeAligned);
VkDescriptorBufferInfo bufferInfo{}; VkDescriptorBufferInfo bufferInfo{};
bufferInfo.buffer = (VkBuffer)currentStreamBuffer->getHandle(); bufferInfo.buffer = (VkBuffer)currentStreamBuffer->getHandle();
bufferInfo.offset = currentUsedUniformStreamBuffersCount * uniformBufferSizeAligned; bufferInfo.offset = offset;
bufferInfo.range = localUniformData.size(); bufferInfo.range = localUniformData.size();
VkWriteDescriptorSet uniformWrite{}; VkWriteDescriptorSet uniformWrite{};
+2 -3
View File
@@ -95,13 +95,13 @@ love::graphics::StreamBuffer::MapInfo StreamBuffer::map(size_t /*minsize*/)
MapInfo info; MapInfo info;
info.size = bufferSize - frameGPUReadOffset; info.size = bufferSize - frameGPUReadOffset;
info.data = (uint8*)allocInfo.pMappedData + (frameIndex * bufferSize) + frameGPUReadOffset; info.data = (uint8*)allocInfo.pMappedData + (vgfx->getFrameIndex() * bufferSize) + frameGPUReadOffset;
return info; return info;
} }
size_t StreamBuffer::unmap(size_t /*usedSize*/) size_t StreamBuffer::unmap(size_t /*usedSize*/)
{ {
size_t offset = (frameIndex * bufferSize) + frameGPUReadOffset; size_t offset = (vgfx->getFrameIndex() * bufferSize) + frameGPUReadOffset;
return offset; return offset;
} }
@@ -112,7 +112,6 @@ void StreamBuffer::markUsed(size_t usedSize)
void StreamBuffer::nextFrame() void StreamBuffer::nextFrame()
{ {
frameIndex = (frameIndex + 1) % MAX_FRAMES_IN_FLIGHT;
frameGPUReadOffset = 0; frameGPUReadOffset = 0;
} }
@@ -61,7 +61,6 @@ private:
VmaAllocation allocation; VmaAllocation allocation;
VmaAllocationInfo allocInfo; VmaAllocationInfo allocInfo;
VkBuffer buffer = VK_NULL_HANDLE; VkBuffer buffer = VK_NULL_HANDLE;
int frameIndex = 0;
}; };