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);
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;
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));
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,
_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);
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));
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);
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);
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);
-Subproject commit 7249166d085a99b42a11f5d44c6f127de0bc6d1c
+Subproject commit f9a1b07cbafbb8b96fc47a25cb27d8f8218c96c8