VkInstance
使用する layer と instance extension を決める必用がある。
dependencies
PLATFORM 共通
VK_KHR_surface
PLATFORM android
#define VK_USE_PLATFORM_ANDROID_KHR 1
VK_KHR_android_surface
PLATFORM windows
#define VK_USE_PLATFORM_WIN32_KHR 1
VK_KHR_win32_surface
Validation
Debug / Release などに応じて。
VK_LAYER_KHRONOS_validation
VK_EXT_debug_utils
もしくはVK_EXT_debug_report
(旧: callback の様式が違う)
https://developer.android.com/ndk/guides/graphics/validation-layer?hl=ja
1.1.106.0 Vulkan SDK リリース以降では、アプリで単一の検証レイヤ VK_LAYER_KHRONOS_validation を有効にするだけで、旧バージョンの検証レイヤの機能をすべて取得できます。
code
cpp
std::vector<const char*> instanceLayers = {"VK_LAYER_KHRONOS_validation"};
std::vector<const char*> instanceExtensions = {
"VK_KHR_surface", "VK_KHR_android_surface"
"VK_EXT_debug_utils", // VK_LAYER_KHRONOS_validation の print
};
VkInstanceCreateInfo instanceInfo = {
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.pApplicationInfo = &app,
.enabledLayerCount =
static_cast<uint32_t>(instanceLayers.size()),
.ppEnabledLayerNames = instanceLayers.data(),
.enabledExtensionCount =
static_cast<uint32_t>(instanceExtensions.size()),
.ppEnabledExtensionNames = instanceExtensions.data(),
};
VkInstance instance;
VkResult res = vkCreateInstance(&instanceInfo, nullptr, &instance);
// ~~~
vkDestroyInstance(Instance, nullptr);