我在 Big Sur(2014 年中 15" Retina)上使用 Vulkan 1.2.170 和 MoltenVK(和 GLFW)。我创建了实例,VK_LAYER_KHRONOS_validation当我调用时,vkCreateDevice我收到警告
VUID-VkDeviceCreateInfo-pProperties-04451(ERROR / SPEC): msgNum: 976972960 - Validation Error:
[ VUID-VkDeviceCreateInfo-pProperties-04451 ] Object 0: handle = 0x10cfaad00,
type = VK_OBJECT_TYPE_PHYSICAL_DEVICE; | MessageID = 0x3a3b6ca0 | vkCreateDevice:
VK_KHR_portability_subset must be enabled because physical device VkPhysicalDevice 0x10cfaad00[]
supports it The Vulkan spec states: If the [VK_KHR_portability_subset] extension is included in
pProperties of vkEnumerateDeviceExtensionProperties, ppEnabledExtensions must include
"VK_KHR_portability_subset".
Run Code Online (Sandbox Code Playgroud)
好吧,好吧,我将它作为唯一的扩展添加到扩展参数中。然后它说
Missing extension required by the device extension VK_KHR_portability_subset:
VK_KHR_get_physical_device_properties2.
Run Code Online (Sandbox Code Playgroud)
和段错误。如果我添加 …
因此,我尝试在配备 M1 处理器的 Mac 上遵循 Vulkan 教程,但遇到了设备创建问题。
因此,根据教程,我设置设备启用的扩展,如下所示:
const std::vector<const char*> deviceExtensions = {
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
};
VkDeviceCreateInfo createInfo = {};
createInfo.enabledExtensionCount = static_cast<uint32_t>(deviceExtensions.size());
createInfo.ppEnabledExtensionNames = deviceExtensions.data();
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到以下验证错误:
验证层:验证错误:[VUID-VkDeviceCreateInfo-pProperties-04451]对象0:句柄= 0x11bd84d40,类型= VK_OBJECT_TYPE_PHYSICAL_DEVICE;| 消息 ID = 0x3a3b6ca0 | vkCreateDevice:必须启用 VK_KHR_portability_subset,因为物理设备 VkPhysicalDevice 0x11bd84d40[] 支持它 Vulkan 规范规定:如果 VK_KHR_portability_subset 扩展包含在 vkEnumerateDeviceExtensionProperties 的 pProperties 中,则 ppEnabledExtensionNames 必须包含“VK_KHR_portability_subset”( https://vulkan.lunarg.com/doc/查看/1.3.211.0/mac/1.3-extensions/vkspec.html#VUID-VkDeviceCreateInfo-pProperties-04451)
验证层: vkCreateDevice:尝试从 VkPhysicalDevice 创建 VkDevice,该 VkPhysicalDevice 来自可移植性驱动程序,但未设置 VkInstanceCreateInfo 标志中的 VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR 位并启用 VK_KHR_portability_enumeration 扩展。在加载程序的未来版本中,将不会枚举此 VkPhysicalDevice。
所以我尝试添加VK_KHR_portability_subset第一个错误中提到的扩展名:
const std::vector<const char*> deviceExtensions = {
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
"VK_KHR_portability_subset",
}; …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 mac 操作系统上使用 Vulkan API(使用我的 Intel HD Graphics 5000 1536 Mo)。但是当我创建一个实例时VkCreateInstance(...)
结果 VkCreateInstance(...)是 VK_ERROR_INCOMPATIBLE_DRIVER。
这是我初始化 VkInstance 的代码:
VkApplicationInfo vkAppInfo = {};
vkAppInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
vkAppInfo.pApplicationName = "S2Engine";
vkAppInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
vkAppInfo.pEngineName = "No Engine"; //TODO plus tard
vkAppInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
vkAppInfo.apiVersion = VK_API_VERSION_1_0;
//Obligatoire
VkInstanceCreateInfo vkInstanceCreateInfo = {};
vkInstanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
vkInstanceCreateInfo.pApplicationInfo = &vkAppInfo;
uint32_t glfwExtensionCount = 0;
const char** glfwExtensions ;
glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount);
vkInstanceCreateInfo.enabledExtensionCount = glfwExtensionCount;
vkInstanceCreateInfo.ppEnabledExtensionNames = glfwExtensions;
vkInstanceCreateInfo.enabledLayerCount = 0; …Run Code Online (Sandbox Code Playgroud)