gpt4 book ai didi

c++ - Vulkan Dynamic Loader-函数调用上的访问冲突

转载 作者:行者123 更新时间:2023-12-02 10:27:26 28 4
gpt4 key购买 nike

我正在尝试运行以下Nvidia示例:https://github.com/nvpro-samples/gl_render_vk_direct_display
问题在于通话中:

std::vector<vk::PhysicalDevice> devices = m_instance->enumeratePhysicalDevices();
应用程序因错误而崩溃

Access violation executing location 0x00007FF953BA88E0


如果我在此位置的VS调试器中检查过程变量,则存储 vkEnumeratePhysicalDevices方法地址。奇怪的是,如果我直接调用Vulkan C API的 vkEnumeratePhysicalDevices方法而不是C++ api调用 m_instance->enumeratePhysicalDevices(),则不会收到任何访问冲突消息。我有点怀疑问题可能出在新的Vulkan Dynamic加载程序中,但我只是在猜测。创建 vk::Instance时,将以这种方式执行加载程序:
  vk::DynamicLoader         dl;
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr =
dl.getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr");
VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr);

// check for required instance extensions
std::vector<vk::ExtensionProperties> availableInstanceExtensions = vk::enumerateInstanceExtensionProperties();
for(const auto& required : requiredInstanceExtensions)
{
bool found = false;
for(const auto& available : availableInstanceExtensions)
{
if(std::string(required) == available.extensionName)
{
found = true;
break;
}
}
if(!found)
{
throw std::exception(("Required instance extension not found: " + std::string(required)).c_str());
}
}
vk::InstanceCreateInfo createInfo{
vk::InstanceCreateFlags(), nullptr, 0, nullptr, uint32_t(requiredInstanceExtensions.size()),
requiredInstanceExtensions.data()};
m_instance = vk::createInstanceUnique(createInfo);

VULKAN_HPP_DEFAULT_DISPATCHER.init(m_instance.get());
使用动态调度程序加载时,我做错什么了吗?
VULKAN_HPP_DEFAULT_DISPATCHER.init(device);
我需要对设备执行相同的初始化吗?就像我在这里看到的 https://github.com/KhronosGroup/Vulkan-Hpp/blob/master/tests/DispatchLoaderDynamic/DispatchLoaderDynamic.cpp一样。这对我来说是完全模糊的,例如,在“Vulkan最小示例”中,此人只是通过实例proc地址( https://github.com/dokipen3d/vulkanHppMinimalExample/blob/master/main.cpp)通过调度程序加载。

最佳答案

我不知道为什么,但是突然之间C++ api调用开始起作用。关于VulkanSDK,我没有做任何更改。我所做的唯一一件事就是重新安装了GPU驱动程序,但是我敢肯定甚至以前也安装了相同的驱动程序。因此,重新安装驱动程序可以解决问题,但对我来说还是个谜。

关于c++ - Vulkan Dynamic Loader-函数调用上的访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63704207/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com