1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00
OpenDX/src/dxvk/dxvk_instance.h

74 lines
1.4 KiB
C
Raw Normal View History

2017-10-10 23:32:13 +02:00
#pragma once
#include "dxvk_adapter.h"
#include "dxvk_device.h"
#include "dxvk_openvr.h"
2017-10-10 23:32:13 +02:00
namespace dxvk {
/**
* \brief DXVK instance
*
* Manages a Vulkan instance and stores a list
* of adapters. This also provides methods for
* device creation.
*/
class DxvkInstance : public RcObject {
public:
DxvkInstance();
~DxvkInstance();
/**
* \brief Vulkan instance functions
* \returns Vulkan instance functions
*/
Rc<vk::InstanceFn> vki() const {
return m_vki;
}
/**
* \brief Vulkan instance handle
* \returns The instance handle
*/
VkInstance handle() {
return m_vki->instance();
}
/**
* \brief Retrieves an adapter
*
* \param [in] index Adapter index
* \returns The adapter, or \c nullptr.
2017-10-10 23:32:13 +02:00
*/
Rc<DxvkAdapter> enumAdapters(
uint32_t index) const;
2017-10-10 23:32:13 +02:00
/**
* \brief Queries extra device extensions
*
* \param [in] adapter The device to query
* \returns Extra device extensions
*/
vk::NameSet queryExtraDeviceExtensions(
const DxvkAdapter* adapter) const;
2017-10-10 23:32:13 +02:00
private:
VrInstance m_vr;
2017-10-10 23:32:13 +02:00
Rc<vk::LibraryFn> m_vkl;
Rc<vk::InstanceFn> m_vki;
std::vector<Rc<DxvkAdapter>> m_adapters;
2017-10-10 23:32:13 +02:00
VkInstance createInstance();
void createAdapters();
2017-10-10 23:32:13 +02:00
2017-10-11 00:27:33 +02:00
void logNameList(const vk::NameList& names);
2017-10-10 23:32:13 +02:00
};
}