diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index 486d616fb..7490e8f6b 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1964,7 +1964,12 @@ namespace dxvk { Rc D3D11DXGIDevice::CreateDevice(D3D_FEATURE_LEVEL FeatureLevel) { DxvkDeviceFeatures deviceFeatures = D3D11Device::GetDeviceFeatures(m_dxvkAdapter, FeatureLevel); - return m_dxvkAdapter->createDevice(deviceFeatures); + + uint32_t flHi = (uint32_t(FeatureLevel) >> 12); + uint32_t flLo = (uint32_t(FeatureLevel) >> 8) & 0x7; + + std::string apiName = str::format("D3D11 FL ", flHi, "_", flLo); + return m_dxvkAdapter->createDevice(apiName, deviceFeatures); } } diff --git a/src/dxvk/dxvk_adapter.cpp b/src/dxvk/dxvk_adapter.cpp index 59234a574..e9272ac4c 100644 --- a/src/dxvk/dxvk_adapter.cpp +++ b/src/dxvk/dxvk_adapter.cpp @@ -231,7 +231,7 @@ namespace dxvk { } - Rc DxvkAdapter::createDevice(DxvkDeviceFeatures enabledFeatures) { + Rc DxvkAdapter::createDevice(std::string clientApi, DxvkDeviceFeatures enabledFeatures) { DxvkDeviceExtensions devExtensions; std::array devExtensionList = {{ @@ -337,7 +337,7 @@ namespace dxvk { if (m_vki->vkCreateDevice(m_handle, &info, nullptr, &device) != VK_SUCCESS) throw DxvkError("DxvkAdapter: Failed to create device"); - Rc result = new DxvkDevice(this, + Rc result = new DxvkDevice(clientApi, this, new vk::DeviceFn(true, m_vki->instance(), device), devExtensions, enabledFeatures); result->initResources(); diff --git a/src/dxvk/dxvk_adapter.h b/src/dxvk/dxvk_adapter.h index 6d54a90c6..4901fbe77 100644 --- a/src/dxvk/dxvk_adapter.h +++ b/src/dxvk/dxvk_adapter.h @@ -197,10 +197,12 @@ namespace dxvk { * \brief Creates a DXVK device * * Creates a logical device for this adapter. + * \param [in] clientApi Name of the client API * \param [in] enabledFeatures Device features * \returns Device handle */ Rc createDevice( + std::string clientApi, DxvkDeviceFeatures enabledFeatures); /** diff --git a/src/dxvk/dxvk_device.cpp b/src/dxvk/dxvk_device.cpp index a8e46435d..8580709ea 100644 --- a/src/dxvk/dxvk_device.cpp +++ b/src/dxvk/dxvk_device.cpp @@ -4,11 +4,13 @@ namespace dxvk { DxvkDevice::DxvkDevice( + std::string clientApi, const Rc& adapter, const Rc& vkd, const DxvkDeviceExtensions& extensions, const DxvkDeviceFeatures& features) - : m_options (adapter->instance()->options()), + : m_clientApi (clientApi), + m_options (adapter->instance()->options()), m_adapter (adapter), m_vkd (vkd), m_extensions (extensions), diff --git a/src/dxvk/dxvk_device.h b/src/dxvk/dxvk_device.h index 1059e05ef..ae08bf572 100644 --- a/src/dxvk/dxvk_device.h +++ b/src/dxvk/dxvk_device.h @@ -64,6 +64,7 @@ namespace dxvk { public: DxvkDevice( + std::string clientApi, const Rc& adapter, const Rc& vkd, const DxvkDeviceExtensions& extensions, @@ -87,6 +88,14 @@ namespace dxvk { return m_vkd->device(); } + /** + * \brief Client API + * \returns Name of the client API + */ + const std::string& clientApi() const { + return m_clientApi; + } + /** * \brief Device options * \returns Device options @@ -369,6 +378,7 @@ namespace dxvk { private: + std::string m_clientApi; DxvkOptions m_options; Rc m_adapter;