]> O.S.I.I.S - jp/vkhelpers.git/commitdiff
dont exess src or dest texture size for region in copy operation
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 8 Aug 2018 07:53:32 +0000 (09:53 +0200)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 8 Aug 2018 07:53:32 +0000 (09:53 +0200)
src/vkh_presenter.c

index 7f21d053f73b8a1e4b7f33a084e1170e5a9562a6..d50754df0c0e2b8c2bb7cbfb0884aef97a8bb6c6 100644 (file)
 #include "vkh_device.h"
 #include "vkh_image.h"
 
+#ifndef MIN
+# define MIN(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#ifndef MAX
+# define MAX(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+
 void _swapchain_create  (VkhPresenter r);
 void _swapchain_destroy (VkhPresenter r);
 void _init_phy_surface  (VkhPresenter r, VkFormat preferedFormat, VkPresentModeKHR presentMode);
@@ -100,6 +108,8 @@ bool vkh_presenter_draw (VkhPresenter r) {
 
 void vkh_presenter_build_blit_cmd (VkhPresenter r, VkImage blitSource, uint32_t width, uint32_t height){
 
+    uint32_t w = MIN(width, r->width), h = MIN(height, r->height);
+
     for (int32_t i = 0; i < r->imgCount; ++i)
     {
         VkImage bltDstImage = r->ScBuffers[i]->image;
@@ -119,7 +129,7 @@ void vkh_presenter_build_blit_cmd (VkhPresenter r, VkImage blitSource, uint32_t
                                 .dstSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1},
                                 .srcOffset = {},
                                 .dstOffset = {0,0,0},
-                                .extent = {width, height,1}};
+                                .extent = {w, h,1}};
 
         vkCmdCopyImage(cb, blitSource, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, bltDstImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
                        1, &cregion);