From 12368a634fe60ae8efe4a55803f7e85d7b862f52 Mon Sep 17 00:00:00 2001 From: Artem Kharytoniuk Date: Sun, 21 May 2017 13:19:41 +0300 Subject: [PATCH] Vulkan pipelines creation time statistics. --- src/engine/renderer/tr_init.c | 3 +++ src/engine/renderer/vk.cpp | 6 ++---- src/engine/renderer/vk.h | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/engine/renderer/tr_init.c b/src/engine/renderer/tr_init.c index 7c69e73..7646f65 100644 --- a/src/engine/renderer/tr_init.c +++ b/src/engine/renderer/tr_init.c @@ -1117,6 +1117,9 @@ void RE_EndRegistration( void ) { if (!Sys_LowPhysicalMemory()) { RB_ShowImages(); } + + // VULKAN + ri.Printf(PRINT_ALL, "Vulkan: pipelines create time %d msec\n", (int)(vk_resources.pipeline_create_time * 1000)); } diff --git a/src/engine/renderer/vk.cpp b/src/engine/renderer/vk.cpp index 036e336..607eeb1 100644 --- a/src/engine/renderer/vk.cpp +++ b/src/engine/renderer/vk.cpp @@ -1245,8 +1245,6 @@ void vk_shutdown() { deinit_vulkan_library(); } -static float pipeline_create_time; - void vk_release_resources() { vkDeviceWaitIdle(vk.device); auto& res = vk_resources; @@ -1266,7 +1264,7 @@ void vk_release_resources() { for (int i = 0; i < res.num_pipelines; i++) vkDestroyPipeline(vk.device, res.pipelines[i], nullptr); - pipeline_create_time = 0.0f; + vk_resources.pipeline_create_time = 0.0f; for (int i = 0; i < MAX_VK_IMAGES; i++) { Vk_Image& image = res.images[i]; @@ -1916,7 +1914,7 @@ VkPipeline vk_find_pipeline(const Vk_Pipeline_Def& def) { Timer t; VkPipeline pipeline = create_pipeline(def); - pipeline_create_time += t.Elapsed_Seconds(); + vk_resources.pipeline_create_time += t.Elapsed_Seconds(); vk_resources.pipeline_defs[vk_resources.num_pipelines] = def; vk_resources.pipelines[vk_resources.num_pipelines] = pipeline; diff --git a/src/engine/renderer/vk.h b/src/engine/renderer/vk.h index 165f878..5fa00e3 100644 --- a/src/engine/renderer/vk.h +++ b/src/engine/renderer/vk.h @@ -192,6 +192,7 @@ struct Vk_Resources { int num_pipelines = 0; Vk_Pipeline_Def pipeline_defs[MAX_VK_PIPELINES]; VkPipeline pipelines[MAX_VK_PIPELINES]; + float pipeline_create_time; Vk_Image images[MAX_VK_IMAGES];