最近学到了如何更新和添加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
暂无评论内容