From fb6ed485b100d935c542be8369308c887914ab4f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Mon, 29 Apr 2019 17:21:40 +0200 Subject: [PATCH] add debug report, resolve some img layout err msg --- src/vkvg_device_internal.c | 2 +- src/vkvg_fonts.c | 13 +++++++++++-- src/vkvg_surface.c | 5 +++++ tests/common/vkengine.c | 32 +++++++++++++++++++++++++++++--- vkh | 2 +- 5 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/vkvg_device_internal.c b/src/vkvg_device_internal.c index dec08f8..ad8b0dd 100644 --- a/src/vkvg_device_internal.c +++ b/src/vkvg_device_internal.c @@ -408,7 +408,7 @@ void _create_empty_texture (VkvgDevice dev) { vkh_cmd_begin (dev->cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); vkh_image_set_layout (dev->cmd, dev->emptyImg, VK_IMAGE_ASPECT_COLOR_BIT, - VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); vkh_cmd_end (dev->cmd); _submit_cmd (dev, &dev->cmd, dev->fence); diff --git a/src/vkvg_fonts.c b/src/vkvg_fonts.c index 670560f..6c7d177 100644 --- a/src/vkvg_fonts.c +++ b/src/vkvg_fonts.c @@ -53,7 +53,7 @@ void _init_fonts_cache (VkvgDevice dev){ vkh_image_create_descriptor (cache->texture, VK_IMAGE_VIEW_TYPE_2D_ARRAY, VK_IMAGE_ASPECT_COLOR_BIT, VK_FILTER_NEAREST, VK_FILTER_NEAREST, VK_SAMPLER_MIPMAP_MODE_NEAREST, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER); - cache->uploadFence = vkh_fence_create_signaled((VkhDevice)dev); + cache->uploadFence = vkh_fence_create((VkhDevice)dev); uint32_t buffLength = FONT_PAGE_SIZE*FONT_PAGE_SIZE*cache->texPixelSize; @@ -64,6 +64,15 @@ void _init_fonts_cache (VkvgDevice dev){ cache->cmd = vkh_cmd_buff_create((VkhDevice)dev,dev->cmdPool,VK_COMMAND_BUFFER_LEVEL_PRIMARY); + //Set texture cache initial layout to shaderReadOnly to prevent error msg if cache is not fill + VkImageSubresourceRange subres = {VK_IMAGE_ASPECT_COLOR_BIT,0,1,0,cache->texLength}; + vkh_cmd_begin (cache->cmd,VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); + vkh_image_set_layout_subres(cache->cmd, cache->texture, subres, + VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); + VK_CHECK_RESULT(vkEndCommandBuffer(cache->cmd)); + _submit_cmd (dev, &cache->cmd, cache->uploadFence); + cache->hostBuff = (uint8_t*)malloc(buffLength); cache->pensY = (int*)calloc(cache->texLength, sizeof(int)); @@ -90,7 +99,7 @@ void _increase_font_tex_array (VkvgDevice dev){ vkh_cmd_begin (cache->cmd,VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); vkh_image_set_layout_subres(cache->cmd, newImg, subresNew, - VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT); vkh_image_set_layout_subres(cache->cmd, cache->texture, subres, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, diff --git a/src/vkvg_surface.c b/src/vkvg_surface.c index 0dd14aa..ddcaf54 100644 --- a/src/vkvg_surface.c +++ b/src/vkvg_surface.c @@ -145,6 +145,11 @@ void _init_surface (VkvgSurface surf) { _create_framebuffer (surf); _clear_surface (surf, VK_IMAGE_ASPECT_STENCIL_BIT); +#if DEBUG + vkh_image_set_name(surf->img, "surfImg"); + vkh_image_set_name(surf->imgMS, "surfImgMS"); + vkh_image_set_name(surf->stencilMS, "surfStencil"); +#endif } void vkvg_surface_clear (VkvgSurface surf) { _clear_surface(surf, VK_IMAGE_ASPECT_STENCIL_BIT|VK_IMAGE_ASPECT_COLOR_BIT); diff --git a/tests/common/vkengine.c b/tests/common/vkengine.c index 6d0f0ef..8ea68e0 100644 --- a/tests/common/vkengine.c +++ b/tests/common/vkengine.c @@ -77,6 +77,9 @@ void vkengine_dump_Infos (VkEngine e){ printf("\n"); } } + +static VkDebugReportCallbackEXT dbgReport; + vk_engine_t* vkengine_create (VkPhysicalDeviceType preferedGPU, VkPresentModeKHR presentMode, uint32_t width, uint32_t height) { vk_engine_t* e = (vk_engine_t*)calloc(1,sizeof(vk_engine_t)); @@ -84,7 +87,18 @@ vk_engine_t* vkengine_create (VkPhysicalDeviceType preferedGPU, VkPresentModeKHR assert (glfwVulkanSupported()==GLFW_TRUE); uint32_t enabledExtsCount = 0, phyCount = 0; - const char ** enabledExts = glfwGetRequiredInstanceExtensions (&enabledExtsCount); + const char** gflwExts = glfwGetRequiredInstanceExtensions (&enabledExtsCount); + + const char* enabledExts [enabledExtsCount+2]; + + for (uint i=0;iapp = vkh_app_create("vkvgTest", enabledExtsCount, enabledExts); @@ -166,8 +180,16 @@ vk_engine_t* vkengine_create (VkPhysicalDeviceType preferedGPU, VkPresentModeKHR VkDevice dev; VK_CHECK_RESULT(vkCreateDevice (pi->phy, &device_info, NULL, &dev)); - e->dev = vkh_device_create(pi->phy, dev); - e->dev->instance = vkh_app_get_inst (e->app); + e->dev = vkh_device_create(vkh_app_get_inst (e->app), pi->phy, dev); + +#if DEBUG + dbgReport = vkh_device_create_debug_report (e->dev, + VK_DEBUG_REPORT_ERROR_BIT_EXT| + VK_DEBUG_REPORT_INFORMATION_BIT_EXT| + VK_DEBUG_REPORT_WARNING_BIT_EXT| + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT| + VK_DEBUG_REPORT_DEBUG_BIT_EXT); +#endif e->renderer = vkh_presenter_create (e->dev, (uint32_t) pi->pQueue, surf, width, height, VK_FORMAT_B8G8R8A8_UNORM, presentMode); @@ -187,6 +209,10 @@ void vkengine_destroy (VkEngine e) { vkh_presenter_destroy (e->renderer); vkDestroySurfaceKHR (e->app->inst, surf, NULL); +#if DEBUG + vkh_device_destroy_debug_report(e->dev, dbgReport); +#endif + vkh_device_destroy (e->dev); glfwDestroyWindow (e->window); diff --git a/vkh b/vkh index 7249166..f9a1b07 160000 --- a/vkh +++ b/vkh @@ -1 +1 @@ -Subproject commit 7249166d085a99b42a11f5d44c6f127de0bc6d1c +Subproject commit f9a1b07cbafbb8b96fc47a25cb27d8f8218c96c8 -- 2.47.3