Vulkan更新扩展;Vulkan添加扩展

最近学到了如何更新和添加Vulkan的扩展,就是通过更新驱动的方式。自己写代码制作扩展我不太确定是否可以。

问题是这样的:

const std::vector<const char*> deviceExtensions = {
    VK_KHR_SWAPCHAIN_EXTENSION_NAME,
    VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME,
};
bool checkDeviceExtensionSupport(VkPhysicalDevice device) {
    uint32_t extensionCount;
    vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, nullptr);

    std::vector<VkExtensionProperties> availableExtensions(extensionCount);
    vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, availableExtensions.data());

    std::set<std::string> requiredExtensions(deviceExtensions.begin(), deviceExtensions.end());

    for (const auto& extension : availableExtensions) {
        requiredExtensions.erase(extension.extensionName);
    }

    return requiredExtensions.empty();
}

学习Wicked Engine的时候遇到了bug,它要求的设备扩展有VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME,而我当前的设备没有该扩展。代码中通过vkEnumerateDeviceExtensionProperties可以得知当前有54个扩展,但是还是缺少所需的那个。

该网站列出了设备的有关信息:

https://vulkan.gpuinfo.org/displayreport.php?id=5587

我这里的链接是GTX1080 TI的,Windows10,x64的,筛选的时候注意到不同版本的驱动有不同的Vulkan版本,因此我去查看了我的驱动,大约是399的,而现在最新的是431了。网站上的信息如下:

431的驱动支持1.1.99的Vulkan,更新驱动后,扩展增多了,有77个:

且包含了VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME。

另外,在Windows图标旁边直接输入vulkan就能看到vulkaninfo应用,查看:

这里Vulkan的版本是1.1.106,比驱动中的新,这个是我安装SDK的时候选的版本,且它标明了是Instance Version。

这一点类似Vulkan的扩展,比如Instance Extension和Extension是不一样的:

Extensions可能有七八十,Instance Extensions就十几个。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片