mirror of
https://github.com/love2d/love.git
synced 2026-08-19 12:14:20 +02:00
vulkan: implement Buffer::copyTo
This commit is contained in:
@@ -86,8 +86,18 @@ void Buffer::unmap(size_t usedoffset, size_t usedsize) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Buffer::copyTo(love::graphics::Buffer* dest, size_t sourceoffset, size_t destoffset, size_t size) {
|
void Buffer::copyTo(love::graphics::Buffer* dest, size_t sourceoffset, size_t destoffset, size_t size) {
|
||||||
throw love::Exception("not implemented yet");
|
Graphics* vgfx = (Graphics*)gfx;
|
||||||
|
|
||||||
|
vgfx->queueDatatransfer([buffer = buffer, dest = dest, sourceoffset, destoffset, size](VkCommandBuffer commandBuffer){
|
||||||
|
VkBufferCopy bufferCopy{};
|
||||||
|
bufferCopy.srcOffset = sourceoffset;
|
||||||
|
bufferCopy.dstOffset = destoffset;
|
||||||
|
bufferCopy.size = size;
|
||||||
|
|
||||||
|
vkCmdCopyBuffer(commandBuffer, buffer, (VkBuffer) dest->getHandle(), 1, &bufferCopy);
|
||||||
|
}, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // vulkan
|
} // vulkan
|
||||||
} // graphics
|
} // graphics
|
||||||
} // love
|
} // love
|
||||||
|
|||||||
@@ -564,7 +564,9 @@ const PFN_vkCmdPushDescriptorSetKHR Graphics::getVkCmdPushDescriptorSetKHRFuncti
|
|||||||
|
|
||||||
void Graphics::queueDatatransfer(std::function<void(VkCommandBuffer)> command, std::function<void()> cleanUp) {
|
void Graphics::queueDatatransfer(std::function<void(VkCommandBuffer)> command, std::function<void()> cleanUp) {
|
||||||
command(dataTransferCommandBuffers.at(currentFrame));
|
command(dataTransferCommandBuffers.at(currentFrame));
|
||||||
cleanUpFunctions.at(currentFrame).push_back(std::move(cleanUp));
|
if (cleanUp) {
|
||||||
|
cleanUpFunctions.at(currentFrame).push_back(std::move(cleanUp));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Graphics::queueCleanUp(std::function<void()> cleanUp) {
|
void Graphics::queueCleanUp(std::function<void()> cleanUp) {
|
||||||
|
|||||||
Reference in New Issue
Block a user