فهرست منبع

Vulkan: Fix more bugs

Panagiotis Christopoulos Charitos 8 سال پیش
والد
کامیت
fe6ac40d54
4فایلهای تغییر یافته به همراه13 افزوده شده و 2 حذف شده
  1. 3 1
      src/anki/core/Trace.cpp
  2. 3 1
      src/anki/core/Trace.h
  3. 5 0
      src/anki/gr/vulkan/DescriptorSet.cpp
  4. 2 0
      src/anki/gr/vulkan/Pipeline.cpp

+ 3 - 1
src/anki/core/Trace.cpp

@@ -43,11 +43,13 @@ static Array<const char*, U(TraceEventType::COUNT)> eventNames = {{"SCENE_UPDATE
 static Array<const char*, U(TraceCounterType::COUNT)> counterNames = {{"GR_DRAWCALLS",
 	"GR_VERTICES",
 	"GL_PROGS_SKIPPED",
-	"VK_PIPELINES_CREATED",
 	"VK_PIPELINE_BARRIERS",
 	"VK_CMD_BUFFER_CREATE",
 	"VK_FENCE_CREATE",
 	"VK_SEMAPHORE_CREATE",
+	"VK_DESCRIPTOR_POOL_CREATE",
+	"VK_DESCRIPTOR_SET_CREATE",
+	"VK_PIPELINE_CREATE",
 	"RENDERER_LIGHTS",
 	"RENDERER_SHADOW_PASSES",
 	"RENDERER_MERGED_DRAWCALLS",

+ 3 - 1
src/anki/core/Trace.h

@@ -62,11 +62,13 @@ enum class TraceCounterType
 	GR_DRAWCALLS,
 	GR_VERTICES,
 	GL_PROGS_SKIPPED,
-	VK_PIPELINES_CREATED,
 	VK_PIPELINE_BARRIERS,
 	VK_CMD_BUFFER_CREATE,
 	VK_FENCE_CREATE,
 	VK_SEMAPHORE_CREATE,
+	VK_DESCRIPTOR_POOL_CREATE,
+	VK_DESCRIPTOR_SET_CREATE,
+	VK_PIPELINE_CREATE,
 	RENDERER_LIGHTS,
 	RENDERER_SHADOW_PASSES,
 	RENDERER_MERGED_DRAWCALLS,

+ 5 - 0
src/anki/gr/vulkan/DescriptorSet.cpp

@@ -8,6 +8,7 @@
 #include <anki/gr/vulkan/BufferImpl.h>
 #include <anki/util/List.h>
 #include <anki/util/HashMap.h>
+#include <anki/core/Trace.h>
 #include <algorithm>
 
 namespace anki
@@ -148,6 +149,7 @@ Error DSThreadAllocator::createNewPool()
 	// Create
 	VkDescriptorPool pool;
 	ANKI_VK_CHECK(vkCreateDescriptorPool(m_layoutEntry->m_factory->m_dev, &ci, nullptr, &pool));
+	ANKI_TRACE_INC_COUNTER(VK_DESCRIPTOR_POOL_CREATE, 1);
 
 	// Push back
 	m_pools.resize(m_layoutEntry->m_factory->m_alloc, m_pools.getSize() + 1);
@@ -215,6 +217,8 @@ Error DSThreadAllocator::newSet(
 			ANKI_CHECK(createNewPool());
 		}
 
+		--m_lastPoolFreeDSCount;
+
 		VkDescriptorSetAllocateInfo ci = {};
 		ci.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
 		ci.descriptorPool = m_pools.getBack();
@@ -225,6 +229,7 @@ Error DSThreadAllocator::newSet(
 		VkResult rez = vkAllocateDescriptorSets(m_layoutEntry->m_factory->m_dev, &ci, &handle);
 		(void)rez;
 		ANKI_ASSERT(rez == VK_SUCCESS && "That allocation can't fail");
+		ANKI_TRACE_INC_COUNTER(VK_DESCRIPTOR_SET_CREATE, 1);
 
 		out = m_layoutEntry->m_factory->m_alloc.newInstance<DS>();
 		out->m_handle = handle;

+ 2 - 0
src/anki/gr/vulkan/Pipeline.cpp

@@ -5,6 +5,7 @@
 
 #include <anki/gr/vulkan/Pipeline.h>
 #include <anki/gr/common/Misc.h>
+#include <anki/core/Trace.h>
 
 namespace anki
 {
@@ -414,6 +415,7 @@ void PipelineFactory::newPipeline(PipelineStateTracker& state, Pipeline& ppline,
 		const VkGraphicsPipelineCreateInfo& ci = state.updatePipelineCreateInfo();
 
 		ANKI_VK_CHECKF(vkCreateGraphicsPipelines(m_dev, m_pplineCache, 1, &ci, nullptr, &pp.m_handle));
+		ANKI_TRACE_INC_COUNTER(VK_PIPELINE_CREATE, 1);
 
 		m_pplines.pushBack(m_alloc, hash, pp);
 		ppline.m_handle = pp.m_handle;