]> O.S.I.I.S - jp/vkvg.git/commitdiff
add debug report, resolve some img layout err msg
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 29 Apr 2019 15:21:40 +0000 (17:21 +0200)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 29 Apr 2019 15:21:40 +0000 (17:21 +0200)
src/vkvg_device_internal.c
src/vkvg_fonts.c
src/vkvg_surface.c
tests/common/vkengine.c
vkh

index dec08f84707ef29f9d80c73bc413ec98b1fafb43..ad8b0dd1ee30842fc8ed4252159bc5d00fa4fca9 100644 (file)
@@ -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);
index 670560f456aa2de7ad6a9012a6499728a2987449..6c7d177a1cc64384ec91ccbbf39cd55c5f6fa0ee 100644 (file)
@@ -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,
index 0dd14aa77455257896abf8b0a3e9526820b2942f..ddcaf54094b3a7c31489e6b5a635f02f921a1eb5 100644 (file)
@@ -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);
index 6d0f0ef7a00014afebf4c1cf884216761db8a957..8ea68e06183a18fd42437434af2063a65de8b625 100644 (file)
@@ -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;i<enabledExtsCount;i++)
+        enabledExts[i] = gflwExts[i];
+#if DEBUG
+    enabledExts[enabledExtsCount] = "VK_EXT_debug_report";
+    enabledExtsCount++;
+    enabledExts[enabledExtsCount] = "VK_EXT_debug_utils";
+    enabledExtsCount++;
+#endif
 
     e->app = 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 7249166d085a99b42a11f5d44c6f127de0bc6d1c..f9a1b07cbafbb8b96fc47a25cb27d8f8218c96c8 160000 (submodule)
--- a/vkh
+++ b/vkh
@@ -1 +1 @@
-Subproject commit 7249166d085a99b42a11f5d44c6f127de0bc6d1c
+Subproject commit f9a1b07cbafbb8b96fc47a25cb27d8f8218c96c8