47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
|
|
#include "vkn/wrapper/commandbuffer.h"
|
||
|
|
namespace vkn {
|
||
|
|
void CommandBuffer::Reset()
|
||
|
|
{
|
||
|
|
vkResetCommandBuffer(mPtr, VkCommandBufferResetFlagBits::VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT);
|
||
|
|
}
|
||
|
|
void CommandBuffer::BeginRecord(VkCommandBufferUsageFlags flag)
|
||
|
|
{
|
||
|
|
VkCommandBufferBeginInfo beginInfo{
|
||
|
|
VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,//sType
|
||
|
|
nullptr, //pNext
|
||
|
|
flag //flags
|
||
|
|
};
|
||
|
|
vkBeginCommandBuffer(mPtr, &beginInfo);
|
||
|
|
}
|
||
|
|
void CommandBuffer::EndRecord()
|
||
|
|
{
|
||
|
|
vkEndCommandBuffer(mPtr);
|
||
|
|
}
|
||
|
|
void CommandBuffer::CmdCopyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size)
|
||
|
|
{
|
||
|
|
VkBufferCopy copy = {};
|
||
|
|
copy.dstOffset = 0;
|
||
|
|
copy.srcOffset = 0;
|
||
|
|
copy.size = size;
|
||
|
|
vkCmdCopyBuffer(mPtr, srcBuffer, dstBuffer, 1, ©);
|
||
|
|
}
|
||
|
|
void CommandBuffer::Submit(VkQueue& queue, VkFence fence)
|
||
|
|
{
|
||
|
|
VkSubmitInfo submitInfo{};
|
||
|
|
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||
|
|
submitInfo.commandBufferCount = 1;
|
||
|
|
submitInfo.pCommandBuffers = &mPtr;
|
||
|
|
vkQueueSubmit(queue, 1, &submitInfo, fence);
|
||
|
|
}
|
||
|
|
void CommandBuffer::BindVertexBuffer(VkBuffer buffer, uint32_t offset)
|
||
|
|
{
|
||
|
|
VkDeviceSize offsets[] = { offset };
|
||
|
|
vkCmdBindVertexBuffers(mPtr, 0, 1, &buffer, offsets);
|
||
|
|
}
|
||
|
|
void CommandBuffer::BindIndexBuffers(VkBuffer buffer, uint32_t offset, VkIndexType type)
|
||
|
|
{
|
||
|
|
vkCmdBindIndexBuffer(mPtr, buffer, offset, type);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|