59 lines
1.9 KiB
C++
59 lines
1.9 KiB
C++
#include <Orange/Render/RenderContext.h>
|
|
#include <vulkan/vulkan_core.h>
|
|
|
|
namespace orange
|
|
{
|
|
VulkanResult<VkFence> RenderContext::CreateFence(bool signalled)
|
|
{
|
|
VkFenceCreateInfo fenceInfo =
|
|
{
|
|
.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
|
|
.flags = signalled ? VK_FENCE_CREATE_SIGNALED_BIT : 0u,
|
|
};
|
|
|
|
VkFence fence = VK_NULL_HANDLE;
|
|
VkResult res = VK_SUCCESS;
|
|
if ((res = vkCreateFence(m_device, &fenceInfo, nullptr, &fence)) != VK_SUCCESS)
|
|
return VulkanResult<VkFence>::Error(res);
|
|
|
|
return VulkanResult<VkFence>::Success(fence);
|
|
}
|
|
|
|
VulkanResult<VkSemaphore> RenderContext::CreateSemaphore()
|
|
{
|
|
VkSemaphoreCreateInfo semaphoreInfo =
|
|
{
|
|
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
|
|
};
|
|
|
|
VkSemaphore semaphore = VK_NULL_HANDLE;
|
|
VkResult res = VK_SUCCESS;
|
|
if ((res = vkCreateSemaphore(m_device, &semaphoreInfo, nullptr, &semaphore)) != VK_SUCCESS)
|
|
return VulkanResult<VkSemaphore>::Error(res);
|
|
|
|
return VulkanResult<VkSemaphore>::Success(semaphore);
|
|
}
|
|
|
|
VulkanResult<VoidResult> RenderContext::BeginCommandBuffer(VkCommandBuffer buffer)
|
|
{
|
|
VkCommandBufferBeginInfo beginInfo =
|
|
{
|
|
.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
|
|
};
|
|
|
|
VkResult res = VK_SUCCESS;
|
|
if ((res = vkBeginCommandBuffer(buffer, &beginInfo)) != VK_SUCCESS)
|
|
return VulkanResult<VoidResult>::Error(res);
|
|
|
|
return VulkanResult<VoidResult>::Success();
|
|
}
|
|
VulkanResult<VoidResult> RenderContext::EndCommandBuffer(VkCommandBuffer buffer)
|
|
{
|
|
VkResult res = VK_SUCCESS;
|
|
if ((res = vkEndCommandBuffer(buffer)) != VK_SUCCESS)
|
|
return VulkanResult<VoidResult>::Error(res);
|
|
|
|
return VulkanResult<VoidResult>::Success();
|
|
}
|
|
}
|