Browse Source

Minor additions for tracing

Panagiotis Christopoulos Charitos 2 years ago
parent
commit
c270b6ff0b

+ 9 - 2
AnKi/Core/CVarSet.h

@@ -147,14 +147,21 @@ public:
 
 
 	void set(CString name)
 	void set(CString name)
 	{
 	{
-		ANKI_ASSERT(name.getLength() > 0);
 		if(m_str)
 		if(m_str)
 		{
 		{
 			free(m_str);
 			free(m_str);
 		}
 		}
 		const U len = name.getLength();
 		const U len = name.getLength();
 		m_str = static_cast<Char*>(malloc(len + 1));
 		m_str = static_cast<Char*>(malloc(len + 1));
-		memcpy(m_str, name.cstr(), len + 1);
+
+		if(len == 0)
+		{
+			m_str[0] = '\0';
+		}
+		else
+		{
+			memcpy(m_str, name.cstr(), len + 1);
+		}
 	}
 	}
 
 
 	CString get() const
 	CString get() const

+ 8 - 3
AnKi/Gr/Vulkan/GrManagerImpl.cpp

@@ -27,6 +27,7 @@ static BoolCVar g_vrsCVar(CVarSubsystem::kGr, "Vrs", false, "Enable or not VRS")
 static BoolCVar g_asyncComputeCVar(CVarSubsystem::kGr, "AsyncCompute", true, "Enable or not async compute");
 static BoolCVar g_asyncComputeCVar(CVarSubsystem::kGr, "AsyncCompute", true, "Enable or not async compute");
 static NumericCVar<U8> g_vkMinorCVar(CVarSubsystem::kGr, "VkMinor", 1, 1, 1, "Vulkan minor version");
 static NumericCVar<U8> g_vkMinorCVar(CVarSubsystem::kGr, "VkMinor", 1, 1, 1, "Vulkan minor version");
 static NumericCVar<U8> g_vkMajorCVar(CVarSubsystem::kGr, "VkMajor", 1, 1, 1, "Vulkan major version");
 static NumericCVar<U8> g_vkMajorCVar(CVarSubsystem::kGr, "VkMajor", 1, 1, 1, "Vulkan major version");
+static StringCVar g_vkLayers(CVarSubsystem::kGr, "VkLayers", "", "VK layers to enable. Seperated by :");
 
 
 // DLSS related
 // DLSS related
 #define ANKI_VK_NVX_BINARY_IMPORT "VK_NVX_binary_import"
 #define ANKI_VK_NVX_BINARY_IMPORT "VK_NVX_binary_import"
@@ -238,6 +239,7 @@ Error GrManagerImpl::initInstance()
 
 
 	// Instance layers
 	// Instance layers
 	GrDynamicArray<const char*> layersToEnable;
 	GrDynamicArray<const char*> layersToEnable;
+	GrList<GrString> layersToEnableStrings;
 	{
 	{
 		U32 layerCount;
 		U32 layerCount;
 		vkEnumerateInstanceLayerProperties(&layerCount, nullptr);
 		vkEnumerateInstanceLayerProperties(&layerCount, nullptr);
@@ -254,10 +256,13 @@ Error GrManagerImpl::initInstance()
 				ANKI_VK_LOGV("\t%s", layer.layerName);
 				ANKI_VK_LOGV("\t%s", layer.layerName);
 				CString layerName = layer.layerName;
 				CString layerName = layer.layerName;
 
 
-				static constexpr const Char* kValidationName = "VK_LAYER_KHRONOS_validation";
-				if((g_validationCVar.get() || g_debugMarkersCVar.get()) && layerName == kValidationName)
+				Bool enableLayer = (g_validationCVar.get() || g_debugMarkersCVar.get()) && layerName == "VK_LAYER_KHRONOS_validation";
+				enableLayer = enableLayer || (!g_vkLayers.get().isEmpty() && g_vkLayers.get().find(layerName) != CString::kNpos);
+
+				if(enableLayer)
 				{
 				{
-					layersToEnable.emplaceBack(kValidationName);
+					layersToEnableStrings.emplaceBack(layer.layerName);
+					layersToEnable.emplaceBack(layersToEnableStrings.getBack().cstr());
 				}
 				}
 			}
 			}
 		}
 		}

+ 6 - 0
AnKi/Scene/StatsUiNode.cpp

@@ -121,6 +121,12 @@ void StatsUiNode::draw(CanvasPtr& canvas)
 					{
 					{
 						category = c;
 						category = c;
 						ImGui::Text("-- %s --", kStatCategoryTexts[c].cstr());
 						ImGui::Text("-- %s --", kStatCategoryTexts[c].cstr());
+
+						// Hack
+						if(c == StatCategory::kMisc)
+						{
+							ImGui::Text("Frame: %zu", GlobalFrameIndex::getSingleton().m_value);
+						}
 					}
 					}
 
 
 					if(!!(flags & StatFlag::kBytes))
 					if(!!(flags & StatFlag::kBytes))

+ 1 - 0
Tools/Android/app/src/main/AndroidManifest.xml

@@ -25,4 +25,5 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+	<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
 </manifest>
 </manifest>