diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index cbb6498be..6056f25dc 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -161,6 +161,7 @@ Instance::Instance(Frontend::EmuWindow& window, u32 physical_device_index) CreateDevice(); CreateFormatTable(); + CollectToolingInfo(); CreateCustomFormatTable(); CreateAttribTable(); } @@ -641,4 +642,35 @@ void Instance::CreateAllocator() { } } +void Instance::CollectToolingInfo() { + if (!tooling_info) { + return; + } + const vk::StructureChain property_chain = + physical_device + .getProperties2(); + const vk::PhysicalDeviceDriverProperties driver = + property_chain.get(); + + driver_id = driver.driverID; + vendor_name = driver.driverName.data(); + + const std::string model_name{GetModelName()}; + const std::string driver_version = GetDriverVersionName(); + const std::string driver_name = fmt::format("{} {}", vendor_name, driver_version); + const std::string api_version = GetReadableVersion(properties.apiVersion); + const std::string extensions = fmt::format("{}", fmt::join(available_extensions, ", ")); + + LOG_INFO(Render_Vulkan, "VK_DRIVER: {}", driver_name); + LOG_INFO(Render_Vulkan, "VK_DEVICE: {}", model_name); + LOG_INFO(Render_Vulkan, "VK_VERSION: {}", api_version); + const auto tools = physical_device.getToolPropertiesEXT(); + for (const vk::PhysicalDeviceToolProperties& tool : tools) { + const std::string_view name = tool.name; + LOG_INFO(Render_Vulkan, "Attached debugging tool: {}", name); + has_renderdoc = has_renderdoc || name == "RenderDoc"; + has_nsight_graphics = has_nsight_graphics || name == "NVIDIA Nsight Graphics"; + } +} + } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_instance.h b/src/video_core/renderer_vulkan/vk_instance.h index 31f7a70c8..b3509c502 100644 --- a/src/video_core/renderer_vulkan/vk_instance.h +++ b/src/video_core/renderer_vulkan/vk_instance.h @@ -284,6 +284,9 @@ private: /// Creates the VMA allocator handle void CreateAllocator(); + + //Collects logging gpu info + void CollectToolingInfo(); private: std::shared_ptr library; @@ -325,4 +328,4 @@ private: bool has_renderdoc{}; }; -} // namespace Vulkan +} // namespace Vulkan \ No newline at end of file