diff --git a/src/DeviceManagerOverride/DeviceManagerOverride.h b/src/DeviceManagerOverride/DeviceManagerOverride.h index d30436ec..473d6901 100644 --- a/src/DeviceManagerOverride/DeviceManagerOverride.h +++ b/src/DeviceManagerOverride/DeviceManagerOverride.h @@ -77,5 +77,8 @@ class DeviceManagerOverride_VK : public DeviceManager_VK vk::PhysicalDevice GetPhysicalDevice() { return m_VulkanPhysicalDevice; } const donut::app::DeviceCreationParameters& GetDeviceParams() { return m_DeviceParams; } DeviceManagerOverride_VK(); + +private: + bool CreateDevice() final; }; #endif diff --git a/src/DeviceManagerOverride/DeviceManagerOverride_VK.cpp b/src/DeviceManagerOverride/DeviceManagerOverride_VK.cpp index f2facc34..4e006b76 100644 --- a/src/DeviceManagerOverride/DeviceManagerOverride_VK.cpp +++ b/src/DeviceManagerOverride/DeviceManagerOverride_VK.cpp @@ -75,6 +75,25 @@ using namespace donut::app; DeviceManagerOverride_VK::DeviceManagerOverride_VK() { } +bool DeviceManagerOverride_VK::CreateDevice() +{ + bool ok = DeviceManager_VK::CreateDevice(); + + if (ok) + { + sl::VulkanInfo vulkanInfo; + vulkanInfo.device = m_VulkanDevice; + vulkanInfo.instance = m_VulkanInstance; + vulkanInfo.physicalDevice = m_VulkanPhysicalDevice; + vulkanInfo.computeQueueIndex = 0; + vulkanInfo.computeQueueFamily = m_ComputeQueueFamily; + vulkanInfo.graphicsQueueIndex = 0; + vulkanInfo.graphicsQueueFamily = m_GraphicsQueueFamily; + NVWrapper::Get().SetDevice_raw(&vulkanInfo); + } + + return ok; +} DeviceManager* CreateVK() { diff --git a/src/SLWrapper.cpp b/src/SLWrapper.cpp index 95976ec2..0fb40194 100644 --- a/src/SLWrapper.cpp +++ b/src/SLWrapper.cpp @@ -222,6 +222,9 @@ bool SLWrapper::Initialize_preDevice(nvrhi::GraphicsAPI api) #endif #ifdef STREAMLINE_FEATURE_LATEWARP sl::kFeatureLatewarp, +#endif +#ifdef STREAMLINE_FEATURE_IMGUI + sl::kFeatureImGUI, #endif // PCL is always implicitly loaded, but request it to ensure we never have 0-sized array sl::kFeaturePCL