mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[d3d9] Fix invalid strings returned by GetInstanceExtensions
This commit is contained in:
parent
d5832c3075
commit
5b7726cf6f
@ -115,18 +115,18 @@ namespace dxvk {
|
|||||||
|
|
||||||
void DxvkInstance::createInstanceLoader(const DxvkInstanceImportInfo& args, DxvkInstanceFlags flags) {
|
void DxvkInstance::createInstanceLoader(const DxvkInstanceImportInfo& args, DxvkInstanceFlags flags) {
|
||||||
DxvkNameList layerList;
|
DxvkNameList layerList;
|
||||||
DxvkNameSet extensionSet;
|
m_extensionSet = DxvkNameSet();
|
||||||
|
|
||||||
bool enablePerfEvents = false;
|
bool enablePerfEvents = false;
|
||||||
bool enableValidation = false;
|
bool enableValidation = false;
|
||||||
|
|
||||||
if (args.instance) {
|
if (args.instance) {
|
||||||
m_extensionNames = DxvkNameList(args.extensionCount, args.extensionNames);
|
m_extensionNames = DxvkNameList(args.extensionCount, args.extensionNames);
|
||||||
extensionSet = getExtensionSet(m_extensionNames);
|
m_extensionSet = getExtensionSet(m_extensionNames);
|
||||||
|
|
||||||
auto extensionInfos = getExtensionList(m_extensions, true);
|
auto extensionInfos = getExtensionList(m_extensions, true);
|
||||||
|
|
||||||
if (!extensionSet.enableExtensions(extensionInfos.size(), extensionInfos.data(), nullptr))
|
if (!m_extensionSet.enableExtensions(extensionInfos.size(), extensionInfos.data(), nullptr))
|
||||||
throw DxvkError("DxvkInstance: Required instance extensions not enabled");
|
throw DxvkError("DxvkInstance: Required instance extensions not enabled");
|
||||||
} else {
|
} else {
|
||||||
// Hide VK_EXT_debug_utils behind an environment variable.
|
// Hide VK_EXT_debug_utils behind an environment variable.
|
||||||
@ -160,14 +160,14 @@ namespace dxvk {
|
|||||||
auto extensionInfos = getExtensionList(m_extensions, enableDebug);
|
auto extensionInfos = getExtensionList(m_extensions, enableDebug);
|
||||||
DxvkNameSet extensionsAvailable = DxvkNameSet::enumInstanceExtensions(m_vkl);
|
DxvkNameSet extensionsAvailable = DxvkNameSet::enumInstanceExtensions(m_vkl);
|
||||||
|
|
||||||
if (!extensionsAvailable.enableExtensions(extensionInfos.size(), extensionInfos.data(), &extensionSet))
|
if (!extensionsAvailable.enableExtensions(extensionInfos.size(), extensionInfos.data(), &m_extensionSet))
|
||||||
throw DxvkError("DxvkInstance: Required instance extensions not supported");
|
throw DxvkError("DxvkInstance: Required instance extensions not supported");
|
||||||
|
|
||||||
for (const auto& provider : m_extProviders)
|
for (const auto& provider : m_extProviders)
|
||||||
extensionSet.merge(provider->getInstanceExtensions());
|
m_extensionSet.merge(provider->getInstanceExtensions());
|
||||||
|
|
||||||
// Generate list of extensions to enable
|
// Generate list of extensions to enable
|
||||||
m_extensionNames = extensionSet.toNameList();
|
m_extensionNames = m_extensionSet.toNameList();
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::info("Enabled instance extensions:");
|
Logger::info("Enabled instance extensions:");
|
||||||
|
@ -165,6 +165,7 @@ namespace dxvk {
|
|||||||
Rc<vk::LibraryFn> m_vkl;
|
Rc<vk::LibraryFn> m_vkl;
|
||||||
Rc<vk::InstanceFn> m_vki;
|
Rc<vk::InstanceFn> m_vki;
|
||||||
DxvkInstanceExtensions m_extensions;
|
DxvkInstanceExtensions m_extensions;
|
||||||
|
DxvkNameSet m_extensionSet;
|
||||||
DxvkNameList m_extensionNames;
|
DxvkNameList m_extensionNames;
|
||||||
|
|
||||||
VkDebugUtilsMessengerEXT m_messenger = VK_NULL_HANDLE;
|
VkDebugUtilsMessengerEXT m_messenger = VK_NULL_HANDLE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user