26 VULKAN_HPP_DEFAULT_DISPATCHER.init();
28 m_layers.push_back(
"VK_LAYER_KHRONOS_validation");
30 vk::ApplicationInfo appInfo;
31 appInfo.setPApplicationName(
"Vulkan Application")
32 .setApplicationVersion(VK_MAKE_VERSION(1, 0, 0))
33 .setPEngineName(
"FCT")
34 .setEngineVersion(VK_MAKE_VERSION(1, 0, 0))
35 .setApiVersion(VK_API_VERSION_1_2);
36 std::vector<vk::ExtensionProperties> availableExtensions = vk::enumerateInstanceExtensionProperties();
39 fout <<
"Available Vulkan extensions:" << std::endl;
40 for (
const auto& extension : availableExtensions) {
41 fout <<
" " << extension.extensionName << std::endl;
43 std::vector<const char*> extensions = {
45 VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME,
49 VK_KHR_ANDROID_SURFACE_EXTENSION_NAME,
52 VK_KHR_WIN32_SURFACE_EXTENSION_NAME,
54 VK_KHR_SURFACE_EXTENSION_NAME,
57 vk::InstanceCreateInfo createInfo;
59 std::vector<vk::ValidationFeatureEnableEXT> enabledValidationFeatures;
60 enabledValidationFeatures.push_back(vk::ValidationFeatureEnableEXT::eSynchronizationValidation);
62 vk::ValidationFeaturesEXT validationFeatures;
63 validationFeatures.setEnabledValidationFeatures(enabledValidationFeatures);
65 createInfo.setPNext(&validationFeatures);
67 createInfo.setPEnabledLayerNames(
m_layers)
68 .setPApplicationInfo(&appInfo)
69 .setPEnabledExtensionNames(extensions);
71 VULKAN_HPP_DEFAULT_DISPATCHER.init(
m_instance);
76 fout <<
"Physical Device: " << it.getProperties().deviceName << std::endl;
77 for (
auto& queueFamily : it.getQueueFamilyProperties()) {
78 fout <<
"Queue Family: " << queueFamily.queueCount << std::endl;