mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-31 14:52:11 +01:00
[dxvk] Move extension provider list to DxvkInstance
This commit is contained in:
parent
6948d18f5f
commit
9f66351b82
@ -1,17 +0,0 @@
|
|||||||
#include "dxvk_extension_provider.h"
|
|
||||||
|
|
||||||
#include "dxvk_openvr.h"
|
|
||||||
#include "dxvk_platform_exts.h"
|
|
||||||
|
|
||||||
namespace dxvk {
|
|
||||||
|
|
||||||
DxvkExtensionProviderList DxvkExtensionProvider::s_extensionProviders = {
|
|
||||||
&DxvkPlatformExts::s_instance,
|
|
||||||
&VrInstance::s_instance,
|
|
||||||
};
|
|
||||||
|
|
||||||
const DxvkExtensionProviderList& DxvkExtensionProvider::getExtensionProviders() {
|
|
||||||
return s_extensionProviders;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -11,8 +11,6 @@ namespace dxvk {
|
|||||||
class DxvkInstance;
|
class DxvkInstance;
|
||||||
class DxvkExtensionProvider;
|
class DxvkExtensionProvider;
|
||||||
|
|
||||||
using DxvkExtensionProviderList = std::vector<DxvkExtensionProvider*>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Extension provider base
|
* \brief Extension provider base
|
||||||
*
|
*
|
||||||
@ -64,15 +62,6 @@ namespace dxvk {
|
|||||||
virtual void initDeviceExtensions(
|
virtual void initDeviceExtensions(
|
||||||
const DxvkInstance* instance) = 0;
|
const DxvkInstance* instance) = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Get list of ptrs to the extension providers
|
|
||||||
*/
|
|
||||||
static const DxvkExtensionProviderList& getExtensionProviders();
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
static DxvkExtensionProviderList s_extensionProviders;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
@ -1,7 +1,8 @@
|
|||||||
#include <version.h>
|
#include <version.h>
|
||||||
|
|
||||||
#include "dxvk_instance.h"
|
#include "dxvk_instance.h"
|
||||||
#include "dxvk_extension_provider.h"
|
#include "dxvk_openvr.h"
|
||||||
|
#include "dxvk_platform_exts.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
@ -15,13 +16,16 @@ namespace dxvk {
|
|||||||
m_config.merge(Config::getAppConfig(env::getExePath()));
|
m_config.merge(Config::getAppConfig(env::getExePath()));
|
||||||
m_config.logOptions();
|
m_config.logOptions();
|
||||||
|
|
||||||
const auto& extProviders = DxvkExtensionProvider::getExtensionProviders();
|
m_options = DxvkOptions(m_config);
|
||||||
|
|
||||||
|
m_extProviders.push_back(&DxvkPlatformExts::s_instance);
|
||||||
|
m_extProviders.push_back(&VrInstance::s_instance);
|
||||||
|
|
||||||
Logger::info("Built-in extension providers:");
|
Logger::info("Built-in extension providers:");
|
||||||
for (const auto& provider : extProviders)
|
for (const auto& provider : m_extProviders)
|
||||||
Logger::info(str::format(" ", provider->getName()));
|
Logger::info(str::format(" ", provider->getName()));
|
||||||
|
|
||||||
for (const auto& provider : extProviders)
|
for (const auto& provider : m_extProviders)
|
||||||
provider->initInstanceExtensions();
|
provider->initInstanceExtensions();
|
||||||
|
|
||||||
m_vkl = new vk::LibraryFn();
|
m_vkl = new vk::LibraryFn();
|
||||||
@ -29,17 +33,15 @@ namespace dxvk {
|
|||||||
|
|
||||||
m_adapters = this->queryAdapters();
|
m_adapters = this->queryAdapters();
|
||||||
|
|
||||||
for (const auto& provider : extProviders)
|
for (const auto& provider : m_extProviders)
|
||||||
provider->initDeviceExtensions(this);
|
provider->initDeviceExtensions(this);
|
||||||
|
|
||||||
for (uint32_t i = 0; i < m_adapters.size(); i++) {
|
for (uint32_t i = 0; i < m_adapters.size(); i++) {
|
||||||
for (const auto& provider : extProviders) {
|
for (const auto& provider : m_extProviders) {
|
||||||
m_adapters[i]->enableExtensions(
|
m_adapters[i]->enableExtensions(
|
||||||
provider->getDeviceExtensions(i));
|
provider->getDeviceExtensions(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_options = DxvkOptions(m_config);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -97,11 +99,10 @@ namespace dxvk {
|
|||||||
extensionsEnabled))
|
extensionsEnabled))
|
||||||
throw DxvkError("DxvkInstance: Failed to create instance");
|
throw DxvkError("DxvkInstance: Failed to create instance");
|
||||||
|
|
||||||
const auto& extProviders = DxvkExtensionProvider::getExtensionProviders();
|
|
||||||
|
|
||||||
// Enable additional extensions if necessary
|
// Enable additional extensions if necessary
|
||||||
for (const auto& provider : extProviders)
|
for (const auto& provider : m_extProviders)
|
||||||
extensionsEnabled.merge(provider->getInstanceExtensions());
|
extensionsEnabled.merge(provider->getInstanceExtensions());
|
||||||
|
|
||||||
DxvkNameList extensionNameList = extensionsEnabled.toNameList();
|
DxvkNameList extensionNameList = extensionsEnabled.toNameList();
|
||||||
|
|
||||||
Logger::info("Enabled instance extensions:");
|
Logger::info("Enabled instance extensions:");
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "dxvk_adapter.h"
|
#include "dxvk_adapter.h"
|
||||||
#include "dxvk_device_filter.h"
|
#include "dxvk_device_filter.h"
|
||||||
|
#include "dxvk_extension_provider.h"
|
||||||
#include "dxvk_options.h"
|
#include "dxvk_options.h"
|
||||||
|
|
||||||
namespace dxvk {
|
namespace dxvk {
|
||||||
@ -105,6 +106,7 @@ namespace dxvk {
|
|||||||
Rc<vk::LibraryFn> m_vkl;
|
Rc<vk::LibraryFn> m_vkl;
|
||||||
Rc<vk::InstanceFn> m_vki;
|
Rc<vk::InstanceFn> m_vki;
|
||||||
|
|
||||||
|
std::vector<DxvkExtensionProvider*> m_extProviders;
|
||||||
std::vector<Rc<DxvkAdapter>> m_adapters;
|
std::vector<Rc<DxvkAdapter>> m_adapters;
|
||||||
|
|
||||||
VkInstance createInstance();
|
VkInstance createInstance();
|
||||||
|
@ -98,7 +98,6 @@ dxvk_src = files([
|
|||||||
'dxvk_stats.cpp',
|
'dxvk_stats.cpp',
|
||||||
'dxvk_unbound.cpp',
|
'dxvk_unbound.cpp',
|
||||||
'dxvk_util.cpp',
|
'dxvk_util.cpp',
|
||||||
'dxvk_extension_provider.cpp',
|
|
||||||
|
|
||||||
'platform/dxvk_win32_exts.cpp',
|
'platform/dxvk_win32_exts.cpp',
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user