[vr] Query Vulkan extensions for OpenVR at runtime

This commit is contained in:
Philip Rebohle 2018-05-18 16:47:44 +02:00
parent 707967ac1d
commit d1d829c09b
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
3 changed files with 22 additions and 0 deletions

View File

@ -171,6 +171,8 @@ namespace dxvk {
// Generate list of extensions that we're actually going to use
vk::NameSet enabledExtensionSet = extensions->getEnabledExtensionNames();
enabledExtensionSet.merge(m_instance->queryExtraDeviceExtensions(this));
vk::NameList enabledExtensionList = enabledExtensionSet.getNameList();
Logger::info("Enabled device extensions:");

View File

@ -1,4 +1,5 @@
#include "dxvk_instance.h"
#include "dxvk_openvr.h"
#include <algorithm>
@ -39,6 +40,11 @@ namespace dxvk {
}
vk::NameSet DxvkInstance::queryExtraDeviceExtensions(const DxvkAdapter* adapter) const {
return m_vr.queryDeviceExtensions(adapter->handle());
}
VkInstance DxvkInstance::createInstance() {
// Query available extensions and enable the ones that are needed
vk::NameSet availableExtensions = vk::NameSet::enumerateInstanceExtensions(*m_vkl);
@ -51,6 +57,8 @@ namespace dxvk {
// Generate list of extensions that we're actually going to use
vk::NameSet enabledExtensionSet = extensionsToEnable.getEnabledExtensionNames();
enabledExtensionSet.merge(m_vr.queryInstanceExtensions());
vk::NameList enabledExtensionList = enabledExtensionSet.getNameList();
Logger::info("Enabled instance extensions:");

View File

@ -2,6 +2,7 @@
#include "dxvk_adapter.h"
#include "dxvk_device.h"
#include "dxvk_openvr.h"
namespace dxvk {
@ -41,8 +42,19 @@ namespace dxvk {
*/
std::vector<Rc<DxvkAdapter>> enumAdapters();
/**
* \brief Queries extra device extensions
*
* \param [in] adapter The device to query
* \returns Extra device extensions
*/
vk::NameSet queryExtraDeviceExtensions(
const DxvkAdapter* adapter) const;
private:
VrInstance m_vr;
Rc<vk::LibraryFn> m_vkl;
Rc<vk::InstanceFn> m_vki;