Start record a new frame with vulkan render backend.
Wait for last frame done.
Reset Fences.
Prepare Writing another SwapchainImage.
Confine whether swapchain need recreated.
Instance a VkCommandBufferBeginInfo.
Start recording a Graphic CommandBuffer.
Start recording a Graphic CommandBuffer.
Checkpoint of start primary commandBuffers.
Wait for last frame done.
Reset Fences.
Prepare Writing another SwapchainImage.
Confine whether swapchain need recreated.
Instance a VkCommandBufferBeginInfo.
Start recording a Graphic CommandBuffer.
Start recording a Graphic CommandBuffer.
Checkpoint of start primary commandBuffers.
212 {
214
216
217 {
219
224 }
225
226 {
228
233 }
234
238 const VkResult result = vkAcquireNextImageKHR(
241 UINT64_MAX ,
243 VK_NULL_HANDLE ,
244 &frameInfo.m_ImageIndex
245 );
246
250 if (result == VK_ERROR_OUT_OF_DATE_KHR)
251 {
253 }
254 else if (result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR)
255 {
256 SPICES_CORE_ERROR("Failed to acquire swap chain image!")
257 }
258
259 {
261
263 }
264
265 {
267
268 ThreadModel::Get()->GetRHIThreadPool()->FreeParallelCommandBuffers(frameInfo.m_FrameIndex);
269 }
270
271 {
273
276 }
277
278 {
280
284 VkCommandBufferBeginInfo beginInfo{};
285 beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
286 beginInfo.flags = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT;
287 beginInfo.pInheritanceInfo = nullptr;
288
293
294
297 beginInfo.flags |= VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT;
299
300
304 NSIGHTAFTERMATH_GPUCRASHTRACKER_SETCHECKPOINT(
m_VulkanState.m_GraphicCommandBuffer[frameInfo.m_FrameIndex],
m_VulkanState.m_VkFunc, "BeginPrimaryGraphicCommandBuffer")
305 }
306
307 {
309
311 NSIGHTPERF_GPUPROFILERONESHOT_BEGINRANGE(
m_VulkanState.m_GraphicCommandBuffer[frameInfo.m_FrameIndex], "Frame", 0, frameInfo.m_FrameIndex)
312 }
313 }
#define SPICES_PROFILE_ZONEN(...)
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
static std::shared_ptr< ThreadModel > Get()
Get ThreadModel single instance.
void RecreateSwapChain()
Called OnSlateResize.
static VulkanState m_VulkanState
The VulkanState in use.
VkSwapchainKHR m_SwapChain
std::array< VkFence, MaxFrameInFlight > m_ComputeFence
std::array< VkCommandBuffer, MaxFrameInFlight > m_GraphicCommandBuffer
uint32_t m_GraphicQueueFamily
std::array< VkSemaphore, MaxFrameInFlight > m_GraphicImageSemaphore
std::array< VkCommandBuffer, MaxFrameInFlight > m_ComputeCommandBuffer
std::array< VkFence, MaxFrameInFlight > m_GraphicFence