forked from suyu/suyu
renderer_vulkan/nsight_aftermath_tracker: Move to vulkan_common
This commit is contained in:
parent
3753553b6a
commit
d235cf3933
5 changed files with 21 additions and 30 deletions
|
@ -115,8 +115,6 @@ add_library(video_core STATIC
|
||||||
renderer_vulkan/fixed_pipeline_state.h
|
renderer_vulkan/fixed_pipeline_state.h
|
||||||
renderer_vulkan/maxwell_to_vk.cpp
|
renderer_vulkan/maxwell_to_vk.cpp
|
||||||
renderer_vulkan/maxwell_to_vk.h
|
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.h
|
||||||
renderer_vulkan/renderer_vulkan.cpp
|
renderer_vulkan/renderer_vulkan.cpp
|
||||||
renderer_vulkan/vk_blit_screen.cpp
|
renderer_vulkan/vk_blit_screen.cpp
|
||||||
|
@ -265,6 +263,8 @@ add_library(video_core STATIC
|
||||||
vulkan_common/vulkan_surface.h
|
vulkan_common/vulkan_surface.h
|
||||||
vulkan_common/vulkan_wrapper.cpp
|
vulkan_common/vulkan_wrapper.cpp
|
||||||
vulkan_common/vulkan_wrapper.h
|
vulkan_common/vulkan_wrapper.h
|
||||||
|
vulkan_common/nsight_aftermath_tracker.cpp
|
||||||
|
vulkan_common/nsight_aftermath_tracker.h
|
||||||
)
|
)
|
||||||
|
|
||||||
create_target_directory_groups(video_core)
|
create_target_directory_groups(video_core)
|
||||||
|
|
|
@ -32,20 +32,11 @@ namespace Vulkan {
|
||||||
|
|
||||||
static constexpr char AFTERMATH_LIB_NAME[] = "GFSDK_Aftermath_Lib.x64.dll";
|
static constexpr char AFTERMATH_LIB_NAME[] = "GFSDK_Aftermath_Lib.x64.dll";
|
||||||
|
|
||||||
NsightAftermathTracker::NsightAftermathTracker() = default;
|
NsightAftermathTracker::NsightAftermathTracker() {
|
||||||
|
|
||||||
NsightAftermathTracker::~NsightAftermathTracker() {
|
|
||||||
if (initialized) {
|
|
||||||
(void)GFSDK_Aftermath_DisableGpuCrashDumps();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool NsightAftermathTracker::Initialize() {
|
|
||||||
if (!dl.Open(AFTERMATH_LIB_NAME)) {
|
if (!dl.Open(AFTERMATH_LIB_NAME)) {
|
||||||
LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath DLL");
|
LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath DLL");
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dl.GetSymbol("GFSDK_Aftermath_DisableGpuCrashDumps",
|
if (!dl.GetSymbol("GFSDK_Aftermath_DisableGpuCrashDumps",
|
||||||
&GFSDK_Aftermath_DisableGpuCrashDumps) ||
|
&GFSDK_Aftermath_DisableGpuCrashDumps) ||
|
||||||
!dl.GetSymbol("GFSDK_Aftermath_EnableGpuCrashDumps",
|
!dl.GetSymbol("GFSDK_Aftermath_EnableGpuCrashDumps",
|
||||||
|
@ -64,27 +55,28 @@ bool NsightAftermathTracker::Initialize() {
|
||||||
LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath function pointers");
|
LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath function pointers");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
dump_dir = Common::FS::GetUserPath(Common::FS::UserPath::LogDir) + "gpucrash";
|
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)) {
|
if (!Common::FS::CreateDir(dump_dir)) {
|
||||||
LOG_ERROR(Render_Vulkan, "Failed to create Nsight Aftermath dump directory");
|
LOG_ERROR(Render_Vulkan, "Failed to create Nsight Aftermath dump directory");
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GFSDK_Aftermath_SUCCEED(GFSDK_Aftermath_EnableGpuCrashDumps(
|
if (!GFSDK_Aftermath_SUCCEED(GFSDK_Aftermath_EnableGpuCrashDumps(
|
||||||
GFSDK_Aftermath_Version_API, GFSDK_Aftermath_GpuCrashDumpWatchedApiFlags_Vulkan,
|
GFSDK_Aftermath_Version_API, GFSDK_Aftermath_GpuCrashDumpWatchedApiFlags_Vulkan,
|
||||||
GFSDK_Aftermath_GpuCrashDumpFeatureFlags_Default, GpuCrashDumpCallback,
|
GFSDK_Aftermath_GpuCrashDumpFeatureFlags_Default, GpuCrashDumpCallback,
|
||||||
ShaderDebugInfoCallback, CrashDumpDescriptionCallback, this))) {
|
ShaderDebugInfoCallback, CrashDumpDescriptionCallback, this))) {
|
||||||
LOG_ERROR(Render_Vulkan, "GFSDK_Aftermath_EnableGpuCrashDumps failed");
|
LOG_ERROR(Render_Vulkan, "GFSDK_Aftermath_EnableGpuCrashDumps failed");
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO(Render_Vulkan, "Nsight Aftermath dump directory is \"{}\"", dump_dir);
|
LOG_INFO(Render_Vulkan, "Nsight Aftermath dump directory is \"{}\"", dump_dir);
|
||||||
|
|
||||||
initialized = true;
|
initialized = true;
|
||||||
return true;
|
}
|
||||||
|
|
||||||
|
NsightAftermathTracker::~NsightAftermathTracker() {
|
||||||
|
if (initialized) {
|
||||||
|
(void)GFSDK_Aftermath_DisableGpuCrashDumps();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NsightAftermathTracker::SaveShader(const std::vector<u32>& spirv) const {
|
void NsightAftermathTracker::SaveShader(const std::vector<u32>& spirv) const {
|
|
@ -34,8 +34,6 @@ public:
|
||||||
NsightAftermathTracker(NsightAftermathTracker&&) = delete;
|
NsightAftermathTracker(NsightAftermathTracker&&) = delete;
|
||||||
NsightAftermathTracker& operator=(NsightAftermathTracker&&) = delete;
|
NsightAftermathTracker& operator=(NsightAftermathTracker&&) = delete;
|
||||||
|
|
||||||
bool Initialize();
|
|
||||||
|
|
||||||
void SaveShader(const std::vector<u32>& spirv) const;
|
void SaveShader(const std::vector<u32>& spirv) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -78,9 +76,6 @@ private:
|
||||||
#ifndef HAS_NSIGHT_AFTERMATH
|
#ifndef HAS_NSIGHT_AFTERMATH
|
||||||
inline NsightAftermathTracker::NsightAftermathTracker() = default;
|
inline NsightAftermathTracker::NsightAftermathTracker() = default;
|
||||||
inline NsightAftermathTracker::~NsightAftermathTracker() = default;
|
inline NsightAftermathTracker::~NsightAftermathTracker() = default;
|
||||||
inline bool NsightAftermathTracker::Initialize() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
inline void NsightAftermathTracker::SaveShader(const std::vector<u32>&) const {}
|
inline void NsightAftermathTracker::SaveShader(const std::vector<u32>&) const {}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "core/settings.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_device.h"
|
||||||
#include "video_core/vulkan_common/vulkan_wrapper.h"
|
#include "video_core/vulkan_common/vulkan_wrapper.h"
|
||||||
|
|
||||||
|
@ -412,7 +413,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
||||||
|
|
||||||
VkDeviceDiagnosticsConfigCreateInfoNV diagnostics_nv;
|
VkDeviceDiagnosticsConfigCreateInfoNV diagnostics_nv;
|
||||||
if (nv_device_diagnostics_config) {
|
if (nv_device_diagnostics_config) {
|
||||||
nsight_aftermath_tracker.Initialize();
|
nsight_aftermath_tracker = std::make_unique<NsightAftermathTracker>();
|
||||||
|
|
||||||
diagnostics_nv = {
|
diagnostics_nv = {
|
||||||
.sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_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 {
|
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 {
|
bool Device::IsOptimalAstcSupported(const VkPhysicalDeviceFeatures& features) const {
|
||||||
|
|
|
@ -10,11 +10,12 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
#include "video_core/renderer_vulkan/nsight_aftermath_tracker.h"
|
|
||||||
#include "video_core/vulkan_common/vulkan_wrapper.h"
|
#include "video_core/vulkan_common/vulkan_wrapper.h"
|
||||||
|
|
||||||
namespace Vulkan {
|
namespace Vulkan {
|
||||||
|
|
||||||
|
class NsightAftermathTracker;
|
||||||
|
|
||||||
/// Format usage descriptor.
|
/// Format usage descriptor.
|
||||||
enum class FormatType { Linear, Optimal, Buffer };
|
enum class FormatType { Linear, Optimal, Buffer };
|
||||||
|
|
||||||
|
@ -300,7 +301,7 @@ private:
|
||||||
std::unordered_map<VkFormat, VkFormatProperties> format_properties;
|
std::unordered_map<VkFormat, VkFormatProperties> format_properties;
|
||||||
|
|
||||||
/// Nsight Aftermath GPU crash tracker
|
/// Nsight Aftermath GPU crash tracker
|
||||||
NsightAftermathTracker nsight_aftermath_tracker;
|
std::unique_ptr<NsightAftermathTracker> nsight_aftermath_tracker;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Vulkan
|
} // namespace Vulkan
|
||||||
|
|
Loading…
Reference in a new issue