35 if (!test_vulkan_context_) {
36 test_vulkan_context_ = fml::MakeRefCounted<TestVulkanContext>();
40 auto optional_image = test_vulkan_context_->CreateImage(surface_size);
41 if (!optional_image.has_value()) {
42 FML_LOG(ERROR) <<
"Could not create Vulkan image.";
47 GrVkImageInfo image_info = {
49 .fImageTiling = VK_IMAGE_TILING_OPTIMAL,
50 .fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED,
51 .fFormat = VK_FORMAT_R8G8B8A8_UNORM,
52 .fImageUsageFlags = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
53 VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
54 VK_IMAGE_USAGE_TRANSFER_DST_BIT |
55 VK_IMAGE_USAGE_SAMPLED_BIT,
59 auto backend_texture = GrBackendTextures::MakeVk(
60 surface_size.width, surface_size.height, image_info);
62 SkSurfaceProps surface_properties(0, kUnknown_SkPixelGeometry);
64 SkSurfaces::TextureReleaseProc release_vktexture = [](
void*
user_data) {
68 sk_sp<SkSurface>
surface = SkSurfaces::WrapBackendTexture(
71 kTopLeft_GrSurfaceOrigin,
73 kRGBA_8888_SkColorType,
74 SkColorSpace::MakeSRGB(),
81 FML_LOG(ERROR) <<
"Could not create Skia surface from Vulkan image.";
87 image->
image =
reinterpret_cast<uint64_t
>(image_info.fImage);
97 UserData*
d =
reinterpret_cast<UserData*
>(
user_data);