Add IsDebugToolAttached to GPUDevice for detecting gpu debugger tools attached and auto-enable GPU profiler in that case

This commit is contained in:
Wojtek Figat
2024-06-03 09:24:27 +02:00
parent bd819b1f5f
commit 1cbcddf410
7 changed files with 90 additions and 27 deletions

View File

@@ -200,6 +200,16 @@ static bool ListContains(const Array<const char*>& list, const char* name)
return false;
}
static bool ListContains(const Array<StringAnsi>& list, const char* name)
{
for (const StringAnsi& element : list)
{
if (element == name)
return true;
}
return false;
}
void GPUDeviceVulkan::GetInstanceLayersAndExtensions(Array<const char*>& outInstanceExtensions, Array<const char*>& outInstanceLayers, bool& outDebugUtils)
{
VkResult result;
@@ -473,6 +483,10 @@ void GPUDeviceVulkan::GetDeviceExtensionsAndLayers(VkPhysicalDevice gpu, Array<c
}
// Add device layers for debugging
if (ListContains(foundUniqueExtensions, "VK_EXT_tooling_info"))
{
IsDebugToolAttached = true;
}
#if VULKAN_USE_DEBUG_LAYER
bool hasKhronosStandardValidationLayer = false, hasLunargStandardValidationLayer = false;
#if VULKAN_USE_KHRONOS_STANDARD_VALIDATION

View File

@@ -187,8 +187,10 @@ struct RenderTargetLayoutVulkan
uint32 WriteStencil : 1;
uint32 BlendEnable : 1;
};
uint32 Flags;
};
MSAALevel MSAA;
PixelFormat DepthFormat;
PixelFormat RTVsFormats[GPU_MAX_RT_BINDED];
@@ -405,12 +407,13 @@ public:
#endif
};
static void GetInstanceLayersAndExtensions(Array<const char*>& outInstanceExtensions, Array<const char*>& outInstanceLayers, bool& outDebugUtils);
static void GetDeviceExtensionsAndLayers(VkPhysicalDevice gpu, Array<const char*>& outDeviceExtensions, Array<const char*>& outDeviceLayers);
void ParseOptionalDeviceExtensions(const Array<const char*>& deviceExtensions);
static OptionalVulkanDeviceExtensions OptionalDeviceExtensions;
private:
static void GetInstanceLayersAndExtensions(Array<const char*>& outInstanceExtensions, Array<const char*>& outInstanceLayers, bool& outDebugUtils);
void GetDeviceExtensionsAndLayers(VkPhysicalDevice gpu, Array<const char*>& outDeviceExtensions, Array<const char*>& outDeviceLayers);
static void ParseOptionalDeviceExtensions(const Array<const char*>& deviceExtensions);
public:
/// <summary>
/// The Vulkan instance.