]> O.S.I.I.S - jp/vkhelpers.git/commitdiff
swaphain create as public in presenter
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 3 Sep 2019 12:22:50 +0000 (14:22 +0200)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 3 Sep 2019 12:22:50 +0000 (14:22 +0200)
include/vkh.h
src/vkh_presenter.c

index ca212b7e1ba8f47151c55ecae322087ca5ce274f..ef4ef4d6041fa0404ea13e044a8518948e72f143 100644 (file)
@@ -96,6 +96,7 @@ void        vkh_presenter_destroy (VkhPresenter r);
 bool        vkh_presenter_draw    (VkhPresenter r);
 bool        vkh_presenter_acquireNextImage  (VkhPresenter r, VkFence fence);
 void        vkh_presenter_build_blit_cmd    (VkhPresenter r, VkImage blitSource, uint32_t width, uint32_t height);
+void        vkh_presenter_create_swapchain  (VkhPresenter r);
 /************
  * VkhImage *
  ************/
index 532ae54cb45bccb18dcc2193348f0de5f359094a..8826fc02bee43e43c3c2cc3e1773004609535fbf 100644 (file)
@@ -31,7 +31,7 @@
 # define MAX(a,b) (((a) > (b)) ? (a) : (b))
 #endif
 
-void _swapchain_create  (VkhPresenter r);
+void vkh_presenter_create_swapchain  (VkhPresenter r);
 void _swapchain_destroy (VkhPresenter r);
 void _init_phy_surface  (VkhPresenter r, VkFormat preferedFormat, VkPresentModeKHR presentMode);
 
@@ -52,7 +52,7 @@ VkhPresenter vkh_presenter_create (VkhDevice dev, uint32_t presentQueueFamIdx, V
 
     _init_phy_surface (r, preferedFormat, presentMode);
 
-    _swapchain_create (r);
+    vkh_presenter_create_swapchain (r);
 
     return r;
 }
@@ -73,17 +73,15 @@ bool vkh_presenter_acquireNextImage (VkhPresenter r, VkFence fence) {
     // Get the index of the next available swapchain image:
     VkResult err = vkAcquireNextImageKHR
             (r->dev->dev, r->swapChain, UINT64_MAX, r->semaPresentEnd, fence, &r->currentScBufferIndex);
-    if ((err == VK_ERROR_OUT_OF_DATE_KHR) || (err == VK_SUBOPTIMAL_KHR)){
-        _swapchain_create (r);
-        return false;
-    }
-    return true;
+    return ((err != VK_ERROR_OUT_OF_DATE_KHR) && (err != VK_SUBOPTIMAL_KHR));
 }
 
 
 bool vkh_presenter_draw (VkhPresenter r) {
-    if (!vkh_presenter_acquireNextImage (r, VK_NULL_HANDLE))
+    if (!vkh_presenter_acquireNextImage (r, VK_NULL_HANDLE)){
+        vkh_presenter_create_swapchain (r);
         return false;
+    }
 
     VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
     VkSubmitInfo submit_info = { .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
@@ -178,7 +176,7 @@ void _init_phy_surface(VkhPresenter r, VkFormat preferedFormat, VkPresentModeKHR
     assert (r->presentMode >= 0);
 }
 
-void _swapchain_create (VkhPresenter r){
+void vkh_presenter_create_swapchain (VkhPresenter r){
     // Ensure all operations on the device have been finished before destroying resources
     vkDeviceWaitIdle(r->dev->dev);