| 249 | } |
| 250 | |
| 251 | void createInstance(VkInstance* instance) |
| 252 | { |
| 253 | // https://vulkan.lunarg.com/doc/view/1.1.108.0/windows/validation_layers.html |
| 254 | const std::vector<const char*> ValidationLayers = |
| 255 | { |
| 256 | "VK_LAYER_KHRONOS_validation" |
| 257 | }; |
| 258 | |
| 259 | const std::vector<const char*> exts = |
| 260 | { |
| 261 | "VK_KHR_surface", |
| 262 | #if defined (_WIN32) |
| 263 | "VK_KHR_win32_surface" |
| 264 | #endif |
| 265 | #if defined (__APPLE__) |
| 266 | "VK_MVK_macos_surface" |
| 267 | #endif |
| 268 | #if defined (__linux__) |
| 269 | "VK_KHR_xcb_surface" |
| 270 | #endif |
| 271 | , VK_EXT_DEBUG_UTILS_EXTENSION_NAME |
| 272 | , VK_EXT_DEBUG_REPORT_EXTENSION_NAME |
| 273 | /* for indexed textures */ |
| 274 | , VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME |
| 275 | }; |
| 276 | |
| 277 | const VkApplicationInfo appinfo = |
| 278 | { |
| 279 | .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO, |
| 280 | .pNext = nullptr, |
| 281 | .pApplicationName = "Vulkan", |
| 282 | .applicationVersion = VK_MAKE_VERSION(1, 0, 0), |
| 283 | .pEngineName = "No Engine", |
| 284 | .engineVersion = VK_MAKE_VERSION(1, 0, 0), |
| 285 | .apiVersion = VK_API_VERSION_1_1 |
| 286 | }; |
| 287 | |
| 288 | const VkInstanceCreateInfo createInfo = |
| 289 | { |
| 290 | .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, |
| 291 | .pNext = nullptr, |
| 292 | .flags = 0, |
| 293 | .pApplicationInfo = &appinfo, |
| 294 | .enabledLayerCount = static_cast<uint32_t>(ValidationLayers.size()), |
| 295 | .ppEnabledLayerNames = ValidationLayers.data(), |
| 296 | .enabledExtensionCount = static_cast<uint32_t>(exts.size()), |
| 297 | .ppEnabledExtensionNames = exts.data() |
| 298 | }; |
| 299 | |
| 300 | VK_CHECK(vkCreateInstance(&createInfo, nullptr, instance)); |
| 301 | |
| 302 | volkLoadInstance(*instance); |
| 303 | } |
| 304 | |
| 305 | VkResult createDevice(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures deviceFeatures, uint32_t graphicsFamily, VkDevice* device) |
| 306 | { |
no outgoing calls
no test coverage detected