mirror of
https://github.com/love2d/love.git
synced 2026-08-17 11:00:31 +02:00
vulkan: fix incorrect uniform values
This commit is contained in:
@@ -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{};
|
||||||
|
|||||||
@@ -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;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user