Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/doitsujin/dxvk.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Ashton <joshua@froggi.es>2019-12-18 07:09:15 +0300
committerJoshua Ashton <joshua@froggi.es>2019-12-18 07:34:09 +0300
commita810f12a2fec675914e29c52f8fe062dd4735af9 (patch)
tree1533993e92d93fd0cfcfe80063c5afd654029ada
parent784abe5cf4b7e95e9a992cf44400bd66e3f37fcd (diff)
[hud] Add sysmem hud itemDisplays info about system memory allocationdxvk-hud-sysmem
-rw-r--r--meson.build1
-rw-r--r--src/dxvk/hud/dxvk_hud.cpp1
-rw-r--r--src/dxvk/hud/dxvk_hud_item.cpp56
-rw-r--r--src/dxvk/hud/dxvk_hud_item.h25
-rw-r--r--src/dxvk/meson.build2
5 files changed, 84 insertions, 1 deletions
diff --git a/meson.build b/meson.build
index b282060f..0c0b6a41 100644
--- a/meson.build
+++ b/meson.build
@@ -67,6 +67,7 @@ else
lib_d3d9 = dxvk_compiler.find_library('d3d9')
lib_d3d11 = dxvk_compiler.find_library('d3d11')
lib_dxgi = dxvk_compiler.find_library('dxgi')
+ lib_psapi = dxvk_compiler.find_library('psapi')
lib_d3dcompiler_43 = dxvk_compiler.find_library('d3dcompiler_43', dirs : dxvk_library_path)
if dxvk_compiler.get_id() == 'msvc'
diff --git a/src/dxvk/hud/dxvk_hud.cpp b/src/dxvk/hud/dxvk_hud.cpp
index 6f9c2e64..9133bcb8 100644
--- a/src/dxvk/hud/dxvk_hud.cpp
+++ b/src/dxvk/hud/dxvk_hud.cpp
@@ -40,6 +40,7 @@ namespace dxvk::hud {
addItem<HudMemoryStatsItem>("memory", device);
addItem<HudGpuLoadItem>("gpuload", device);
addItem<HudCompilerActivityItem>("compiler", device);
+ addItem<HudSysmemItem>("sysmem", device);
}
diff --git a/src/dxvk/hud/dxvk_hud_item.cpp b/src/dxvk/hud/dxvk_hud_item.cpp
index 9d3f0d6a..9b96df43 100644
--- a/src/dxvk/hud/dxvk_hud_item.cpp
+++ b/src/dxvk/hud/dxvk_hud_item.cpp
@@ -3,6 +3,9 @@
#include <iomanip>
#include <version.h>
+#include <windows.h>
+#include <psapi.h>
+
namespace dxvk::hud {
HudItem::~HudItem() {
@@ -584,4 +587,57 @@ namespace dxvk::hud {
return position;
}
+
+ HudSysmemItem::HudSysmemItem(const Rc<DxvkDevice>& device) {
+
+ }
+
+
+ HudSysmemItem::~HudSysmemItem() {
+
+ }
+
+
+ void HudSysmemItem::update(dxvk::high_resolution_clock::time_point time) {
+ PROCESS_MEMORY_COUNTERS_EX stats = { };
+ stats.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX);
+
+ ::GetProcessMemoryInfo(GetCurrentProcess(),
+ reinterpret_cast<PROCESS_MEMORY_COUNTERS*>(&stats),
+ sizeof(stats));
+
+ m_workingSet = stats.WorkingSetSize;
+ m_privateUsage = stats.PagefileUsage;
+ }
+
+
+ HudPos HudSysmemItem::render(
+ HudRenderer& renderer,
+ HudPos position) {
+ position.y += 16.0f;
+ renderer.drawText(16.0f,
+ { position.x, position.y },
+ { 1.0f, 0.5f, 0.25f, 1.0f },
+ "Working set:");
+
+ renderer.drawText(16.0f,
+ { position.x + 180.0f, position.y },
+ { 1.0f, 1.0f, 1.0f, 1.0f },
+ str::format(m_workingSet / (1 << 20), " MB"));
+
+ position.y += 20.0f;
+ renderer.drawText(16.0f,
+ { position.x, position.y },
+ { 1.0f, 0.5f, 0.25f, 1.0f },
+ "Private usage:");
+
+ renderer.drawText(16.0f,
+ { position.x + 180.0f, position.y },
+ { 1.0f, 1.0f, 1.0f, 1.0f },
+ str::format(m_privateUsage / (1 << 20), " MB"));
+
+ position.y += 8.0f;
+ return position;
+ }
+
}
diff --git a/src/dxvk/hud/dxvk_hud_item.h b/src/dxvk/hud/dxvk_hud_item.h
index 9844a0fe..7cef24d9 100644
--- a/src/dxvk/hud/dxvk_hud_item.h
+++ b/src/dxvk/hud/dxvk_hud_item.h
@@ -393,4 +393,29 @@ namespace dxvk::hud {
};
+
+ /**
+ * \brief HUD item to display system memory usage
+ */
+ class HudSysmemItem : public HudItem {
+
+ public:
+
+ HudSysmemItem(const Rc<DxvkDevice>& device);
+
+ ~HudSysmemItem();
+
+ void update(dxvk::high_resolution_clock::time_point time);
+
+ HudPos render(
+ HudRenderer& renderer,
+ HudPos position);
+
+ private:
+
+ uint32_t m_workingSet = 0;
+ uint32_t m_privateUsage = 0;
+
+ };
+
} \ No newline at end of file
diff --git a/src/dxvk/meson.build b/src/dxvk/meson.build
index 1dc113c3..1c2e859a 100644
--- a/src/dxvk/meson.build
+++ b/src/dxvk/meson.build
@@ -111,7 +111,7 @@ thread_dep = dependency('threads')
dxvk_lib = static_library('dxvk', dxvk_src, glsl_generator.process(dxvk_shaders), dxvk_version,
link_with : [ util_lib, spirv_lib ],
- dependencies : [ thread_dep, vkcommon_dep ] + dxvk_extradep,
+ dependencies : [ lib_psapi, thread_dep, vkcommon_dep ] + dxvk_extradep,
include_directories : [ dxvk_include_path ],
override_options : ['cpp_std='+dxvk_cpp_std])