std::unique_ptr Image::createFromBitmap()

in RenderScriptMigrationSample/app/src/main/cpp/VulkanResources.cpp [86:104]


std::unique_ptr<Image> Image::createFromBitmap(const VulkanContext* context, JNIEnv* env,
                                               jobject bitmap) {
    // Get bitmap info
    AndroidBitmapInfo info;
    if (AndroidBitmap_getInfo(env, bitmap, &info) != ANDROID_BITMAP_RESULT_SUCCESS) {
        LOGE("Image::createFromBitmap: Failed to AndroidBitmap_getInfo");
        return nullptr;
    }

    // Create device local image
    auto image =
            Image::createDeviceLocal(context, info.width, info.height,
                                     VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT);
    if (image == nullptr) return nullptr;

    // Set content from bitmap
    const bool success = image->setContentFromBitmap(env, bitmap);
    return success ? std::move(image) : nullptr;
}