]> O.S.I.I.S - jp/vkvg.git/commitdiff
don't enable deferredResolve if sample count=1
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Fri, 11 Mar 2022 00:49:19 +0000 (01:49 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Fri, 11 Mar 2022 00:49:19 +0000 (01:49 +0100)
src/vkvg_device.c
src/vkvg_surface.c
src/vkvg_surface_internal.c

index 94f0c1150665130d0976e55a6e0f0eec7603c2e1..5b5538a7fc41492bd3e90fbaaa781ab65c084607 100644 (file)
@@ -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);
index 21c08de904dbda362d1c554cfd9d1b25b73e3f47..cae040a935a0536024bc961f2bcd5aefd6f7000d 100644 (file)
@@ -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;
index 4bcb0c1facedbb7572bd42375794ef905f25b5a8..2076f7bc6bef8be8517f0744a69db997eca94f17 100644 (file)
@@ -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");