This blog post will be a tutorial of sorts (we won't have a functioning Vulkan driver in the end, sorry), showing off a bunch of those helpers and demonstrating the latest Mesa best practices for Vulkan drivers. VKAPI_ATTR VkResult VKAPI_CALL nvk_CreateInstance (const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkInstance *pInstance) { struct nvk_instance *instance; VkResult result; if (pAllocator == NULL ) pAllocator = vk_default_allocator(); instance = vk_alloc(pAllocator, sizeof(*instance), 8 , VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE); if (!instance) return vk_error( NULL , VK_ERROR_OUT_OF_HOST_MEMORY); struct vk_instance_dispatch _table dispatch_table; vk_instance_dispatch_table_from_entrypoints( &dispatch_table, &nvk_instance_entrypoints, true ); result =…