From: Jean-Philippe Bruyère Date: Fri, 11 Mar 2022 00:49:19 +0000 (+0100) Subject: don't enable deferredResolve if sample count=1 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=328dd3ebff3025fb565c45b32e92c5c2090f04dd;p=jp%2Fvkvg.git don't enable deferredResolve if sample count=1 --- diff --git a/src/vkvg_device.c b/src/vkvg_device.c index 94f0c11..5b5538a 100644 --- a/src/vkvg_device.c +++ b/src/vkvg_device.c @@ -36,7 +36,10 @@ void _device_init (VkvgDevice dev, VkInstance inst, VkPhysicalDevice phy, VkDevi dev->hdpi = 72; dev->vdpi = 72; dev->samples= samples; - dev->deferredResolve = deferredResolve; + if (dev->samples == VK_SAMPLE_COUNT_1_BIT) + dev->deferredResolve = false; + else + dev->deferredResolve = deferredResolve; dev->vkDev = vkdev; dev->phy = phy; @@ -76,13 +79,13 @@ void _device_init (VkvgDevice dev, VkInstance inst, VkPhysicalDevice phy, VkDevi _device_create_pipeline_cache (dev); _fonts_cache_create (dev); if (dev->deferredResolve || dev->samples == VK_SAMPLE_COUNT_1_BIT){ - dev->renderPass = _device_createRenderPassNoResolve (dev, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_LOAD); - dev->renderPass_ClearStencil = _device_createRenderPassNoResolve (dev, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_CLEAR); - dev->renderPass_ClearAll = _device_createRenderPassNoResolve (dev, VK_ATTACHMENT_LOAD_OP_CLEAR, VK_ATTACHMENT_LOAD_OP_CLEAR); + dev->renderPass = _device_createRenderPassNoResolve (dev, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_LOAD); + dev->renderPass_ClearStencil = _device_createRenderPassNoResolve (dev, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_CLEAR); + dev->renderPass_ClearAll = _device_createRenderPassNoResolve (dev, VK_ATTACHMENT_LOAD_OP_CLEAR, VK_ATTACHMENT_LOAD_OP_CLEAR); }else{ - dev->renderPass = _device_createRenderPassMS (dev, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_LOAD); - dev->renderPass_ClearStencil = _device_createRenderPassMS (dev, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_CLEAR); - dev->renderPass_ClearAll = _device_createRenderPassMS (dev, VK_ATTACHMENT_LOAD_OP_CLEAR, VK_ATTACHMENT_LOAD_OP_CLEAR); + dev->renderPass = _device_createRenderPassMS (dev, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_LOAD); + dev->renderPass_ClearStencil = _device_createRenderPassMS (dev, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_CLEAR); + dev->renderPass_ClearAll = _device_createRenderPassMS (dev, VK_ATTACHMENT_LOAD_OP_CLEAR, VK_ATTACHMENT_LOAD_OP_CLEAR); } _device_createDescriptorSetLayout (dev); _device_setupPipelines (dev); diff --git a/src/vkvg_surface.c b/src/vkvg_surface.c index 21c08de..cae040a 100644 --- a/src/vkvg_surface.c +++ b/src/vkvg_surface.c @@ -242,7 +242,9 @@ VkImage vkvg_surface_get_vk_image(VkvgSurface surf) _explicit_ms_resolve(surf); return vkh_image_get_vkimage (surf->img); } -void vkvg_multisample_surface_resolve (VkvgSurface surf){ +void vkvg_surface_resolve (VkvgSurface surf){ + if (surf->status || !surf->dev->deferredResolve) + return; _explicit_ms_resolve(surf); } VkFormat vkvg_surface_get_vk_format(VkvgSurface surf) @@ -261,6 +263,10 @@ vkvg_status_t vkvg_surface_write_to_png (VkvgSurface surf, const char* path){ LOG(VKVG_LOG_ERR, "vkvg_surface_write_to_png failed, invalid status: %d\n", surf->status); return VKVG_STATUS_INVALID_STATUS; } + if (surf->dev->status) { + LOG(VKVG_LOG_ERR, "vkvg_surface_write_to_png failed, invalid device status: %d\n", surf->dev->status); + return VKVG_STATUS_INVALID_STATUS; + } if (surf->dev->pngStagFormat == VK_FORMAT_UNDEFINED) { LOG(VKVG_LOG_ERR, "no suitable image format for png write\n"); return VKVG_STATUS_INVALID_FORMAT; diff --git a/src/vkvg_surface_internal.c b/src/vkvg_surface_internal.c index 4bcb0c1..2076f7b 100644 --- a/src/vkvg_surface_internal.c +++ b/src/vkvg_surface_internal.c @@ -166,7 +166,6 @@ void _create_surface_images (VkvgSurface surf) { _create_surface_secondary_images(surf); _create_framebuffer (surf); - //_clear_surface (surf, VK_IMAGE_ASPECT_STENCIL_BIT); #if defined(DEBUG) && defined(ENABLE_VALIDATION) vkh_image_set_name(surf->img, "surfImg"); vkh_image_set_name(surf->imgMS, "surfImgMS");