summaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2022-03-11 01:49:19 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2022-03-11 01:49:19 +0100
commit328dd3ebff3025fb565c45b32e92c5c2090f04dd (patch)
tree4720781abc1e04fbc360460f093ab1a4270079c8
parent9e037ab70f5cfb6b54ec842e098ab7ae929dd289 (diff)
don't enable deferredResolve if sample count=1
-rw-r--r--src/vkvg_device.c17
-rw-r--r--src/vkvg_surface.c8
-rw-r--r--src/vkvg_surface_internal.c1
3 files changed, 17 insertions, 9 deletions
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");