Я только начинаю изучать Вулкана. У меня есть книга «Руководство по программированию Vulkan» от Graham Sellers и RX 480 с драйверами AMDGPU pro в моей системе. Я запускаю Arch Linux, и мне удалось запустить некоторые демо-версии Vulkan в моей системе.vkCreateInstance, вызывающий ошибку сегментации
У меня есть минимальный код, который вызывает ошибку сегментации. Как ни странно, на моем пути к генерации этого блока, чтобы задать этот вопрос, у меня есть он работает с вызовом vkCreateInstance() из конструктора и впервые заметил ошибку сегментации, когда я добавил try/catch в свой код.
Теперь, даже не пытаться/поймать это вызывает ошибку сегментации:
#include <iostream>
#include <vulkan/vulkan.h>
int main(int argv, char* argc[])
{
VkInstance* instance;
VkApplicationInfo appInfo = { .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
.pNext = NULL,
.pApplicationName = "Step 1",
.applicationVersion = 1,
.pEngineName = NULL,
.engineVersion = 0,
.apiVersion = VK_MAKE_VERSION(1, 0, 26) }; //This is what vulkanCapsViewer says my API version is.
VkInstanceCreateInfo createInfo = { .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.pNext = NULL,
.flags = 0 };
createInfo.pApplicationInfo = &appInfo;
createInfo.enabledExtensionCount = 0;
createInfo.ppEnabledExtensionNames = NULL;
createInfo.enabledLayerCount = 0;
createInfo.ppEnabledLayerNames = NULL;
std::cout << "1\n";
VkResult result = vkCreateInstance(&createInfo, NULL, instance);
std::cout << "2\n";
if(result != VK_SUCCESS) std::cout << "Failed to create a Vulkan instance: " << result << std::endl;
std::cout << "3\n";
return 0;
}
Выход есть:
93> ./create_seg_fault
1
Segmentation fault (core dumped)
Назначенные инициализаторы не являются (пока) функцией C++. Таким образом, ваш код использует некоторый гибрид C и C++. –