diff options
| -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      renderer_vulkan/fixed_pipeline_state.h      renderer_vulkan/maxwell_to_vk.cpp      renderer_vulkan/maxwell_to_vk.h -    renderer_vulkan/nsight_aftermath_tracker.cpp -    renderer_vulkan/nsight_aftermath_tracker.h      renderer_vulkan/renderer_vulkan.h      renderer_vulkan/renderer_vulkan.cpp      renderer_vulkan/vk_blit_screen.cpp @@ -265,6 +263,8 @@ add_library(video_core STATIC      vulkan_common/vulkan_surface.h      vulkan_common/vulkan_wrapper.cpp      vulkan_common/vulkan_wrapper.h +    vulkan_common/nsight_aftermath_tracker.cpp +    vulkan_common/nsight_aftermath_tracker.h  )  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 {  static constexpr char AFTERMATH_LIB_NAME[] = "GFSDK_Aftermath_Lib.x64.dll"; -NsightAftermathTracker::NsightAftermathTracker() = default; - -NsightAftermathTracker::~NsightAftermathTracker() { -    if (initialized) { -        (void)GFSDK_Aftermath_DisableGpuCrashDumps(); -    } -} - -bool NsightAftermathTracker::Initialize() { +NsightAftermathTracker::NsightAftermathTracker() {      if (!dl.Open(AFTERMATH_LIB_NAME)) {          LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath DLL"); -        return false; +        return;      } -      if (!dl.GetSymbol("GFSDK_Aftermath_DisableGpuCrashDumps",                        &GFSDK_Aftermath_DisableGpuCrashDumps) ||          !dl.GetSymbol("GFSDK_Aftermath_EnableGpuCrashDumps", @@ -64,27 +55,28 @@ bool NsightAftermathTracker::Initialize() {          LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath function pointers");          return false;      } -      dump_dir = Common::FS::GetUserPath(Common::FS::UserPath::LogDir) + "gpucrash"; -    (void)Common::FS::DeleteDirRecursively(dump_dir); +    void(Common::FS::DeleteDirRecursively(dump_dir));      if (!Common::FS::CreateDir(dump_dir)) {          LOG_ERROR(Render_Vulkan, "Failed to create Nsight Aftermath dump directory"); -        return false; +        return;      } -      if (!GFSDK_Aftermath_SUCCEED(GFSDK_Aftermath_EnableGpuCrashDumps(              GFSDK_Aftermath_Version_API, GFSDK_Aftermath_GpuCrashDumpWatchedApiFlags_Vulkan,              GFSDK_Aftermath_GpuCrashDumpFeatureFlags_Default, GpuCrashDumpCallback,              ShaderDebugInfoCallback, CrashDumpDescriptionCallback, this))) {          LOG_ERROR(Render_Vulkan, "GFSDK_Aftermath_EnableGpuCrashDumps failed"); -        return false; +        return;      } -      LOG_INFO(Render_Vulkan, "Nsight Aftermath dump directory is \"{}\"", dump_dir); -      initialized = true; -    return true; +} + +NsightAftermathTracker::~NsightAftermathTracker() { +    if (initialized) { +        (void)GFSDK_Aftermath_DisableGpuCrashDumps(); +    }  }  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:      NsightAftermathTracker(NsightAftermathTracker&&) = delete;      NsightAftermathTracker& operator=(NsightAftermathTracker&&) = delete; -    bool Initialize(); -      void SaveShader(const std::vector<u32>& spirv) const;  private: @@ -78,9 +76,6 @@ private:  #ifndef HAS_NSIGHT_AFTERMATH  inline NsightAftermathTracker::NsightAftermathTracker() = default;  inline NsightAftermathTracker::~NsightAftermathTracker() = default; -inline bool NsightAftermathTracker::Initialize() { -    return false; -}  inline void NsightAftermathTracker::SaveShader(const std::vector<u32>&) const {}  #endif 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 @@  #include "common/assert.h"  #include "core/settings.h" +#include "video_core/vulkan_common/nsight_aftermath_tracker.h"  #include "video_core/vulkan_common/vulkan_device.h"  #include "video_core/vulkan_common/vulkan_wrapper.h" @@ -412,7 +413,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR      VkDeviceDiagnosticsConfigCreateInfoNV diagnostics_nv;      if (nv_device_diagnostics_config) { -        nsight_aftermath_tracker.Initialize(); +        nsight_aftermath_tracker = std::make_unique<NsightAftermathTracker>();          diagnostics_nv = {              .sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, @@ -491,7 +492,9 @@ void Device::ReportLoss() const {  }  void Device::SaveShader(const std::vector<u32>& spirv) const { -    nsight_aftermath_tracker.SaveShader(spirv); +    if (nsight_aftermath_tracker) { +        nsight_aftermath_tracker->SaveShader(spirv); +    }  }  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 @@  #include <vector>  #include "common/common_types.h" -#include "video_core/renderer_vulkan/nsight_aftermath_tracker.h"  #include "video_core/vulkan_common/vulkan_wrapper.h"  namespace Vulkan { +class NsightAftermathTracker; +  /// Format usage descriptor.  enum class FormatType { Linear, Optimal, Buffer }; @@ -300,7 +301,7 @@ private:      std::unordered_map<VkFormat, VkFormatProperties> format_properties;      /// Nsight Aftermath GPU crash tracker -    NsightAftermathTracker nsight_aftermath_tracker; +    std::unique_ptr<NsightAftermathTracker> nsight_aftermath_tracker;  };  } // namespace Vulkan | 
