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;
}