diff --git a/src/dxvk/hud/dxvk_hud.cpp b/src/dxvk/hud/dxvk_hud.cpp index 860c6a6c..50c6564d 100644 --- a/src/dxvk/hud/dxvk_hud.cpp +++ b/src/dxvk/hud/dxvk_hud.cpp @@ -36,6 +36,7 @@ namespace dxvk::hud { addItem("version"); addItem("api", m_device); + addItem("devinfo", m_device); } @@ -91,9 +92,6 @@ namespace dxvk::hud { HudPos position = { 8.0f, 24.0f }; - if (m_config.elements.test(HudElement::DeviceInfo)) - position = m_hudDeviceInfo.render(m_renderer, position); - position = m_hudFramerate.render(m_renderer, position); position = m_hudStats .render(m_renderer, position); } diff --git a/src/dxvk/hud/dxvk_hud_item.cpp b/src/dxvk/hud/dxvk_hud_item.cpp index 54bc9b20..34c90bb4 100644 --- a/src/dxvk/hud/dxvk_hud_item.cpp +++ b/src/dxvk/hud/dxvk_hud_item.cpp @@ -101,4 +101,50 @@ namespace dxvk::hud { return position; } + + HudDeviceInfoItem::HudDeviceInfoItem(const Rc& device) { + VkPhysicalDeviceProperties props = device->adapter()->deviceProperties(); + + m_deviceName = props.deviceName; + m_driverVer = str::format("Driver: ", + VK_VERSION_MAJOR(props.driverVersion), ".", + VK_VERSION_MINOR(props.driverVersion), ".", + VK_VERSION_PATCH(props.driverVersion)); + m_vulkanVer = str::format("Vulkan: ", + VK_VERSION_MAJOR(props.apiVersion), ".", + VK_VERSION_MINOR(props.apiVersion), ".", + VK_VERSION_PATCH(props.apiVersion)); + } + + + HudDeviceInfoItem::~HudDeviceInfoItem() { + + } + + + HudPos HudDeviceInfoItem::render( + HudRenderer& renderer, + HudPos position) { + position.y += 16.0f; + renderer.drawText(16.0f, + { position.x, position.y }, + { 1.0f, 1.0f, 1.0f, 1.0f }, + m_deviceName); + + position.y += 24.0f; + renderer.drawText(16.0f, + { position.x, position.y }, + { 1.0f, 1.0f, 1.0f, 1.0f }, + m_driverVer); + + position.y += 20.0f; + renderer.drawText(16.0f, + { position.x, position.y }, + { 1.0f, 1.0f, 1.0f, 1.0f }, + m_vulkanVer); + + 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 3b70699d..476b8e18 100644 --- a/src/dxvk/hud/dxvk_hud_item.h +++ b/src/dxvk/hud/dxvk_hud_item.h @@ -136,4 +136,28 @@ namespace dxvk::hud { }; + /** + * \brief HUD item to display device info + */ + class HudDeviceInfoItem : public HudItem { + + public: + + HudDeviceInfoItem(const Rc& device); + + ~HudDeviceInfoItem(); + + HudPos render( + HudRenderer& renderer, + HudPos position); + + private: + + std::string m_deviceName; + std::string m_driverVer; + std::string m_vulkanVer; + + }; + + } \ No newline at end of file