1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-21 20:52:12 +01:00
dxvk/src/d3d9/d3d9_hud.cpp
2022-07-29 13:14:33 +01:00

95 lines
2.5 KiB
C++

#include "d3d9_hud.h"
namespace dxvk::hud {
HudSamplerCount::HudSamplerCount(D3D9DeviceEx* device)
: m_device (device)
, m_samplerCount ("0"){
}
void HudSamplerCount::update(dxvk::high_resolution_clock::time_point time) {
m_samplerCount = str::format(m_device->GetSamplerCount());
}
HudPos HudSamplerCount::render(
HudRenderer& renderer,
HudPos position) {
position.y += 16.0f;
renderer.drawText(16.0f,
{ position.x, position.y },
{ 0.0f, 1.0f, 0.75f, 1.0f },
"Samplers:");
renderer.drawText(16.0f,
{ position.x + 120.0f, position.y },
{ 1.0f, 1.0f, 1.0f, 1.0f },
m_samplerCount);
position.y += 8.0f;
return position;
}
HudTextureMemory::HudTextureMemory(D3D9DeviceEx* device)
: m_device (device)
, m_allocatedString ("")
, m_mappedString ("") {}
void HudTextureMemory::update(dxvk::high_resolution_clock::time_point time) {
D3D9MemoryAllocator* allocator = m_device->GetAllocator();
m_maxAllocated = std::max(m_maxAllocated, allocator->AllocatedMemory());
m_maxUsed = std::max(m_maxUsed, allocator->UsedMemory());
m_maxMapped = std::max(m_maxMapped, allocator->MappedMemory());
auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(time - m_lastUpdate);
if (elapsed.count() < UpdateInterval)
return;
m_allocatedString = str::format(m_maxAllocated >> 20, " MB (Used: ", m_maxUsed >> 20, " MB)");
m_mappedString = str::format(m_maxMapped >> 20, " MB");
m_maxAllocated = 0;
m_maxUsed = 0;
m_maxMapped = 0;
m_lastUpdate = time;
}
HudPos HudTextureMemory::render(
HudRenderer& renderer,
HudPos position) {
position.y += 16.0f;
renderer.drawText(16.0f,
{ position.x, position.y },
{ 0.0f, 1.0f, 0.75f, 1.0f },
"Mappable:");
renderer.drawText(16.0f,
{ position.x + 120.0f, position.y },
{ 1.0f, 1.0f, 1.0f, 1.0f },
m_allocatedString);
position.y += 24.0f;
renderer.drawText(16.0f,
{ position.x, position.y },
{ 0.0f, 1.0f, 0.75f, 1.0f },
"Mapped:");
renderer.drawText(16.0f,
{ position.x + 120.0f, position.y },
{ 1.0f, 1.0f, 1.0f, 1.0f },
m_mappedString);
position.y += 8.0f;
return position;
}
}