message: Fixing PresentFrame to ensure next image is acquired after present
diff: @@ -269,7 +269,7 @@ namespace NovelRT::Experimental::Graphics::Vulkan
  createInfo.imageColorSpace = surfaceFormat.colorSpace;
  createInfo.imageExtent = extent;
  createInfo.imageArrayLayers = 1;
  - createInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
  + createInfo.imageUsage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
  QueueFamilyIndices indices = Utilities::FindQueueFamilies(GetAdapter()->GetVulkanPhysicalDevice(), _surface);
  uint32_t queueFamilyIndices[] = {indices.graphicsFamily.value(), indices.presentFamily.value()};
  @@ -484,6 +484,15 @@ namespace NovelRT::Experimental::Graphics::Vulkan
  presentInfo.pSwapchains = &vulkanSwapchain;
  presentInfo.pImageIndices = &contextIndex;
  + VkResult presentResult = vkQueuePresentKHR(GetVulkanPresentQueue(), &presentInfo);
  +
  + if (presentResult != VK_SUCCESS)
  + {
  + throw std::runtime_error("Failed to present the data within the present queue!");
  + }
  +
  + Signal(GetCurrentContext()->GetFence());
  +
  auto presentCompletionGraphicsFence = GetPresentCompletionFence();
  VkResult acquireNextImageResult =
  vkAcquireNextImageKHR(GetVulkanDevice(), vulkanSwapchain, std::numeric_limits<uint64_t>::max(),
  @@ -495,15 +504,6 @@ namespace NovelRT::Experimental::Graphics::Vulkan
  std::to_string(acquireNextImageResult));
  }
  - VkResult presentResult = vkQueuePresentKHR(GetVulkanPresentQueue(), &presentInfo);
  -
  - if (presentResult != VK_SUCCESS)
  - {
  - throw std::runtime_error("Failed to present the data within the present queue!");
  - }
  -
  - Signal(GetCurrentContext()->GetFence());
  -
  presentCompletionGraphicsFence->Wait();
  presentCompletionGraphicsFence->Reset();
  