in RenderScriptMigrationSample/app/src/main/cpp/VulkanContext.cpp [82:117]
bool VulkanContext::createInstance(bool enableDebug) {
// Required instance layers
std::vector<const char*> instanceLayers;
if (enableDebug) {
instanceLayers.push_back("VK_LAYER_KHRONOS_validation");
}
// Required instance extensions
std::vector<const char*> instanceExtensions = {
VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
};
if (enableDebug) {
instanceExtensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
}
// Create instance
const VkApplicationInfo applicationDesc = {
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
.pApplicationName = "renderscript_migration_sample",
.applicationVersion = VK_MAKE_VERSION(0, 0, 1),
.apiVersion = static_cast<uint32_t>((VK_VERSION_MINOR(mInstanceVersion) >= 1)
? VK_API_VERSION_1_1
: VK_API_VERSION_1_0),
};
const VkInstanceCreateInfo instanceDesc = {
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.pApplicationInfo = &applicationDesc,
.enabledLayerCount = static_cast<uint32_t>(instanceLayers.size()),
.ppEnabledLayerNames = instanceLayers.data(),
.enabledExtensionCount = static_cast<uint32_t>(instanceExtensions.size()),
.ppEnabledExtensionNames = instanceExtensions.data(),
};
CALL_VK(vkCreateInstance, &instanceDesc, nullptr, mInstance.pHandle());
return true;
}