aboutsummaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2019-09-03 01:51:33 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2019-09-03 01:51:33 +0200
commit4824a7ec5b113892f2fdac0059f0e0f88a490625 (patch)
treefa35ed6a09b2623632026f2e953807e4018e7015
parent5d84e42590eff42cdb02a3c10227de0c1ca1737a (diff)
split acquire img and draw
-rw-r--r--include/vkh.h14
-rw-r--r--src/vkh_image.c8
-rw-r--r--src/vkh_presenter.c13
3 files changed, 23 insertions, 12 deletions
diff --git a/include/vkh.h b/include/vkh.h
index 2568760..ca212b7 100644
--- a/include/vkh.h
+++ b/include/vkh.h
@@ -89,12 +89,13 @@ void vkh_device_set_object_name (VkhDevice dev, VkDebugReportObjectTypeEXT objec
/****************
* VkhPresenter *
****************/
-VkhPresenter vkh_presenter_create (VkhDevice dev, uint32_t presentQueueFamIdx, VkSurfaceKHR surface,
- uint32_t width, uint32_t height,
- VkFormat preferedFormat, VkPresentModeKHR presentMode);
-void vkh_presenter_destroy (VkhPresenter r);
-bool vkh_presenter_draw (VkhPresenter r);
-void vkh_presenter_build_blit_cmd (VkhPresenter r, VkImage blitSource, uint32_t width, uint32_t height);
+VkhPresenter vkh_presenter_create (VkhDevice dev, uint32_t presentQueueFamIdx, VkSurfaceKHR surface,
+ uint32_t width, uint32_t height,
+ VkFormat preferedFormat, VkPresentModeKHR presentMode);
+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);
/************
* VkhImage *
************/
@@ -114,6 +115,7 @@ void vkh_image_set_layout (VkCommandBuffer cmdBuff, VkhImage image, VkImag
VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages);
void vkh_image_set_layout_subres(VkCommandBuffer cmdBuff, VkhImage image, VkImageSubresourceRange subresourceRange, VkImageLayout old_image_layout,
VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages);
+void vkh_image_destroy_sampler (VkhImage img);
void vkh_image_destroy (VkhImage img);
void* vkh_image_map (VkhImage img);
void vkh_image_unmap (VkhImage img);
diff --git a/src/vkh_image.c b/src/vkh_image.c
index 9522fb5..b7d6ca8 100644
--- a/src/vkh_image.c
+++ b/src/vkh_image.c
@@ -211,7 +211,13 @@ void vkh_image_set_layout_subres(VkCommandBuffer cmdBuff, VkhImage image, VkImag
vkCmdPipelineBarrier(cmdBuff, src_stages, dest_stages, 0, 0, NULL, 0, NULL, 1, &image_memory_barrier);
image->layout = new_image_layout;
}
-
+void vkh_image_destroy_sampler (VkhImage img) {
+ if (img==NULL)
+ return;
+ if(img->sampler != VK_NULL_HANDLE)
+ vkDestroySampler (img->pDev->dev,img->sampler,NULL);
+ img->sampler = VK_NULL_HANDLE;
+}
void vkh_image_destroy(VkhImage img)
{
if (img==NULL)
diff --git a/src/vkh_presenter.c b/src/vkh_presenter.c
index 23680b2..532ae54 100644
--- a/src/vkh_presenter.c
+++ b/src/vkh_presenter.c
@@ -69,18 +69,21 @@ void vkh_presenter_destroy (VkhPresenter r) {
free (r);
}
-bool vkh_presenter_draw (VkhPresenter r) {
-
+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, VK_NULL_HANDLE, &r->currentScBufferIndex);
+ (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;
+}
+
- VK_CHECK_RESULT(err);
+bool vkh_presenter_draw (VkhPresenter r) {
+ if (!vkh_presenter_acquireNextImage (r, VK_NULL_HANDLE))
+ return false;
VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
VkSubmitInfo submit_info = { .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,