diff options
| author | 2020-12-26 01:26:52 -0300 | |
|---|---|---|
| committer | 2021-01-04 02:22:22 -0300 | |
| commit | d235cf393399c386a59b5e39d39bc9efb161aea0 (patch) | |
| tree | 4b8a3420a94b972dfc0781ed1ba8b197b8b02c95 /src | |
| parent | renderer_vulkan: Move device abstraction to vulkan_common (diff) | |
| download | yuzu-d235cf393399c386a59b5e39d39bc9efb161aea0.tar.gz yuzu-d235cf393399c386a59b5e39d39bc9efb161aea0.tar.xz yuzu-d235cf393399c386a59b5e39d39bc9efb161aea0.zip | |
renderer_vulkan/nsight_aftermath_tracker: Move to vulkan_common
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/nsight_aftermath_tracker.cpp (renamed from src/video_core/renderer_vulkan/nsight_aftermath_tracker.cpp) | 30 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/nsight_aftermath_tracker.h (renamed from src/video_core/renderer_vulkan/nsight_aftermath_tracker.h) | 5 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 7 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 5 |
5 files changed, 21 insertions, 30 deletions
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index 3f3181395..f7b9d7f86 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt | |||
| @@ -115,8 +115,6 @@ add_library(video_core STATIC | |||
| 115 | renderer_vulkan/fixed_pipeline_state.h | 115 | renderer_vulkan/fixed_pipeline_state.h |
| 116 | renderer_vulkan/maxwell_to_vk.cpp | 116 | renderer_vulkan/maxwell_to_vk.cpp |
| 117 | renderer_vulkan/maxwell_to_vk.h | 117 | renderer_vulkan/maxwell_to_vk.h |
| 118 | renderer_vulkan/nsight_aftermath_tracker.cpp | ||
| 119 | renderer_vulkan/nsight_aftermath_tracker.h | ||
| 120 | renderer_vulkan/renderer_vulkan.h | 118 | renderer_vulkan/renderer_vulkan.h |
| 121 | renderer_vulkan/renderer_vulkan.cpp | 119 | renderer_vulkan/renderer_vulkan.cpp |
| 122 | renderer_vulkan/vk_blit_screen.cpp | 120 | renderer_vulkan/vk_blit_screen.cpp |
| @@ -265,6 +263,8 @@ add_library(video_core STATIC | |||
| 265 | vulkan_common/vulkan_surface.h | 263 | vulkan_common/vulkan_surface.h |
| 266 | vulkan_common/vulkan_wrapper.cpp | 264 | vulkan_common/vulkan_wrapper.cpp |
| 267 | vulkan_common/vulkan_wrapper.h | 265 | vulkan_common/vulkan_wrapper.h |
| 266 | vulkan_common/nsight_aftermath_tracker.cpp | ||
| 267 | vulkan_common/nsight_aftermath_tracker.h | ||
| 268 | ) | 268 | ) |
| 269 | 269 | ||
| 270 | create_target_directory_groups(video_core) | 270 | create_target_directory_groups(video_core) |
diff --git a/src/video_core/renderer_vulkan/nsight_aftermath_tracker.cpp b/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp index 5b01020ec..8d10ac29e 100644 --- a/src/video_core/renderer_vulkan/nsight_aftermath_tracker.cpp +++ b/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp | |||
| @@ -32,20 +32,11 @@ namespace Vulkan { | |||
| 32 | 32 | ||
| 33 | static constexpr char AFTERMATH_LIB_NAME[] = "GFSDK_Aftermath_Lib.x64.dll"; | 33 | static constexpr char AFTERMATH_LIB_NAME[] = "GFSDK_Aftermath_Lib.x64.dll"; |
| 34 | 34 | ||
| 35 | NsightAftermathTracker::NsightAftermathTracker() = default; | 35 | NsightAftermathTracker::NsightAftermathTracker() { |
| 36 | |||
| 37 | NsightAftermathTracker::~NsightAftermathTracker() { | ||
| 38 | if (initialized) { | ||
| 39 | (void)GFSDK_Aftermath_DisableGpuCrashDumps(); | ||
| 40 | } | ||
| 41 | } | ||
| 42 | |||
| 43 | bool NsightAftermathTracker::Initialize() { | ||
| 44 | if (!dl.Open(AFTERMATH_LIB_NAME)) { | 36 | if (!dl.Open(AFTERMATH_LIB_NAME)) { |
| 45 | LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath DLL"); | 37 | LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath DLL"); |
| 46 | return false; | 38 | return; |
| 47 | } | 39 | } |
| 48 | |||
| 49 | if (!dl.GetSymbol("GFSDK_Aftermath_DisableGpuCrashDumps", | 40 | if (!dl.GetSymbol("GFSDK_Aftermath_DisableGpuCrashDumps", |
| 50 | &GFSDK_Aftermath_DisableGpuCrashDumps) || | 41 | &GFSDK_Aftermath_DisableGpuCrashDumps) || |
| 51 | !dl.GetSymbol("GFSDK_Aftermath_EnableGpuCrashDumps", | 42 | !dl.GetSymbol("GFSDK_Aftermath_EnableGpuCrashDumps", |
| @@ -64,27 +55,28 @@ bool NsightAftermathTracker::Initialize() { | |||
| 64 | LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath function pointers"); | 55 | LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath function pointers"); |
| 65 | return false; | 56 | return false; |
| 66 | } | 57 | } |
| 67 | |||
| 68 | dump_dir = Common::FS::GetUserPath(Common::FS::UserPath::LogDir) + "gpucrash"; | 58 | dump_dir = Common::FS::GetUserPath(Common::FS::UserPath::LogDir) + "gpucrash"; |
| 69 | 59 | ||
| 70 | (void)Common::FS::DeleteDirRecursively(dump_dir); | 60 | void(Common::FS::DeleteDirRecursively(dump_dir)); |
| 71 | if (!Common::FS::CreateDir(dump_dir)) { | 61 | if (!Common::FS::CreateDir(dump_dir)) { |
| 72 | LOG_ERROR(Render_Vulkan, "Failed to create Nsight Aftermath dump directory"); | 62 | LOG_ERROR(Render_Vulkan, "Failed to create Nsight Aftermath dump directory"); |
| 73 | return false; | 63 | return; |
| 74 | } | 64 | } |
| 75 | |||
| 76 | if (!GFSDK_Aftermath_SUCCEED(GFSDK_Aftermath_EnableGpuCrashDumps( | 65 | if (!GFSDK_Aftermath_SUCCEED(GFSDK_Aftermath_EnableGpuCrashDumps( |
| 77 | GFSDK_Aftermath_Version_API, GFSDK_Aftermath_GpuCrashDumpWatchedApiFlags_Vulkan, | 66 | GFSDK_Aftermath_Version_API, GFSDK_Aftermath_GpuCrashDumpWatchedApiFlags_Vulkan, |
| 78 | GFSDK_Aftermath_GpuCrashDumpFeatureFlags_Default, GpuCrashDumpCallback, | 67 | GFSDK_Aftermath_GpuCrashDumpFeatureFlags_Default, GpuCrashDumpCallback, |
| 79 | ShaderDebugInfoCallback, CrashDumpDescriptionCallback, this))) { | 68 | ShaderDebugInfoCallback, CrashDumpDescriptionCallback, this))) { |
| 80 | LOG_ERROR(Render_Vulkan, "GFSDK_Aftermath_EnableGpuCrashDumps failed"); | 69 | LOG_ERROR(Render_Vulkan, "GFSDK_Aftermath_EnableGpuCrashDumps failed"); |
| 81 | return false; | 70 | return; |
| 82 | } | 71 | } |
| 83 | |||
| 84 | LOG_INFO(Render_Vulkan, "Nsight Aftermath dump directory is \"{}\"", dump_dir); | 72 | LOG_INFO(Render_Vulkan, "Nsight Aftermath dump directory is \"{}\"", dump_dir); |
| 85 | |||
| 86 | initialized = true; | 73 | initialized = true; |
| 87 | return true; | 74 | } |
| 75 | |||
| 76 | NsightAftermathTracker::~NsightAftermathTracker() { | ||
| 77 | if (initialized) { | ||
| 78 | (void)GFSDK_Aftermath_DisableGpuCrashDumps(); | ||
| 79 | } | ||
| 88 | } | 80 | } |
| 89 | 81 | ||
| 90 | void NsightAftermathTracker::SaveShader(const std::vector<u32>& spirv) const { | 82 | void NsightAftermathTracker::SaveShader(const std::vector<u32>& spirv) const { |
diff --git a/src/video_core/renderer_vulkan/nsight_aftermath_tracker.h b/src/video_core/vulkan_common/nsight_aftermath_tracker.h index afe7ae99e..cee3847fb 100644 --- a/src/video_core/renderer_vulkan/nsight_aftermath_tracker.h +++ b/src/video_core/vulkan_common/nsight_aftermath_tracker.h | |||
| @@ -34,8 +34,6 @@ public: | |||
| 34 | NsightAftermathTracker(NsightAftermathTracker&&) = delete; | 34 | NsightAftermathTracker(NsightAftermathTracker&&) = delete; |
| 35 | NsightAftermathTracker& operator=(NsightAftermathTracker&&) = delete; | 35 | NsightAftermathTracker& operator=(NsightAftermathTracker&&) = delete; |
| 36 | 36 | ||
| 37 | bool Initialize(); | ||
| 38 | |||
| 39 | void SaveShader(const std::vector<u32>& spirv) const; | 37 | void SaveShader(const std::vector<u32>& spirv) const; |
| 40 | 38 | ||
| 41 | private: | 39 | private: |
| @@ -78,9 +76,6 @@ private: | |||
| 78 | #ifndef HAS_NSIGHT_AFTERMATH | 76 | #ifndef HAS_NSIGHT_AFTERMATH |
| 79 | inline NsightAftermathTracker::NsightAftermathTracker() = default; | 77 | inline NsightAftermathTracker::NsightAftermathTracker() = default; |
| 80 | inline NsightAftermathTracker::~NsightAftermathTracker() = default; | 78 | inline NsightAftermathTracker::~NsightAftermathTracker() = default; |
| 81 | inline bool NsightAftermathTracker::Initialize() { | ||
| 82 | return false; | ||
| 83 | } | ||
| 84 | inline void NsightAftermathTracker::SaveShader(const std::vector<u32>&) const {} | 79 | inline void NsightAftermathTracker::SaveShader(const std::vector<u32>&) const {} |
| 85 | #endif | 80 | #endif |
| 86 | 81 | ||
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 67183eed8..f300f22c9 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | 13 | ||
| 14 | #include "common/assert.h" | 14 | #include "common/assert.h" |
| 15 | #include "core/settings.h" | 15 | #include "core/settings.h" |
| 16 | #include "video_core/vulkan_common/nsight_aftermath_tracker.h" | ||
| 16 | #include "video_core/vulkan_common/vulkan_device.h" | 17 | #include "video_core/vulkan_common/vulkan_device.h" |
| 17 | #include "video_core/vulkan_common/vulkan_wrapper.h" | 18 | #include "video_core/vulkan_common/vulkan_wrapper.h" |
| 18 | 19 | ||
| @@ -412,7 +413,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 412 | 413 | ||
| 413 | VkDeviceDiagnosticsConfigCreateInfoNV diagnostics_nv; | 414 | VkDeviceDiagnosticsConfigCreateInfoNV diagnostics_nv; |
| 414 | if (nv_device_diagnostics_config) { | 415 | if (nv_device_diagnostics_config) { |
| 415 | nsight_aftermath_tracker.Initialize(); | 416 | nsight_aftermath_tracker = std::make_unique<NsightAftermathTracker>(); |
| 416 | 417 | ||
| 417 | diagnostics_nv = { | 418 | diagnostics_nv = { |
| 418 | .sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, | 419 | .sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, |
| @@ -491,7 +492,9 @@ void Device::ReportLoss() const { | |||
| 491 | } | 492 | } |
| 492 | 493 | ||
| 493 | void Device::SaveShader(const std::vector<u32>& spirv) const { | 494 | void Device::SaveShader(const std::vector<u32>& spirv) const { |
| 494 | nsight_aftermath_tracker.SaveShader(spirv); | 495 | if (nsight_aftermath_tracker) { |
| 496 | nsight_aftermath_tracker->SaveShader(spirv); | ||
| 497 | } | ||
| 495 | } | 498 | } |
| 496 | 499 | ||
| 497 | bool Device::IsOptimalAstcSupported(const VkPhysicalDeviceFeatures& features) const { | 500 | bool Device::IsOptimalAstcSupported(const VkPhysicalDeviceFeatures& features) const { |
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index b2651e049..a973c3ce4 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -10,11 +10,12 @@ | |||
| 10 | #include <vector> | 10 | #include <vector> |
| 11 | 11 | ||
| 12 | #include "common/common_types.h" | 12 | #include "common/common_types.h" |
| 13 | #include "video_core/renderer_vulkan/nsight_aftermath_tracker.h" | ||
| 14 | #include "video_core/vulkan_common/vulkan_wrapper.h" | 13 | #include "video_core/vulkan_common/vulkan_wrapper.h" |
| 15 | 14 | ||
| 16 | namespace Vulkan { | 15 | namespace Vulkan { |
| 17 | 16 | ||
| 17 | class NsightAftermathTracker; | ||
| 18 | |||
| 18 | /// Format usage descriptor. | 19 | /// Format usage descriptor. |
| 19 | enum class FormatType { Linear, Optimal, Buffer }; | 20 | enum class FormatType { Linear, Optimal, Buffer }; |
| 20 | 21 | ||
| @@ -300,7 +301,7 @@ private: | |||
| 300 | std::unordered_map<VkFormat, VkFormatProperties> format_properties; | 301 | std::unordered_map<VkFormat, VkFormatProperties> format_properties; |
| 301 | 302 | ||
| 302 | /// Nsight Aftermath GPU crash tracker | 303 | /// Nsight Aftermath GPU crash tracker |
| 303 | NsightAftermathTracker nsight_aftermath_tracker; | 304 | std::unique_ptr<NsightAftermathTracker> nsight_aftermath_tracker; |
| 304 | }; | 305 | }; |
| 305 | 306 | ||
| 306 | } // namespace Vulkan | 307 | } // namespace Vulkan |