[runtime][flutter_runner] Handle non-linear image tiling correctly

Tiling::LINEAR was incorrectly passed to Scenic for tiled images.

This happen to work as Scenic ignores this value and
assumes that Tiling::GPU_OPTIMAL is always used. In order to
have Scenic support Tiling::LINEAR we need flutter runner to
pass image info to Scenic with correct tiling value.

Use VkImageCreateInfo tiling value to determine the tiling
parameter to pass to Scenic.

Test: linear image support in Scenic doesn't break flutter runner
Change-Id: Ib4b0575c70c3b0ca90d3c29aa6597add177a58f5
diff --git a/runtime/flutter_runner/vulkan_surface.cc b/runtime/flutter_runner/vulkan_surface.cc
index e2c0e8e..3f8d8c5 100644
--- a/runtime/flutter_runner/vulkan_surface.cc
+++ b/runtime/flutter_runner/vulkan_surface.cc
@@ -336,7 +336,18 @@
   image_info.stride = 4 * sk_surface_->width();
   image_info.pixel_format = fuchsia::images::PixelFormat::BGRA_8;
   image_info.color_space = fuchsia::images::ColorSpace::SRGB;
-  image_info.tiling = fuchsia::images::Tiling::LINEAR;
+  switch (vulkan_image_.vk_image_create_info.tiling) {
+    case VK_IMAGE_TILING_OPTIMAL:
+      image_info.tiling = fuchsia::images::Tiling::GPU_OPTIMAL;
+      break;
+    case VK_IMAGE_TILING_LINEAR:
+      image_info.tiling = fuchsia::images::Tiling::LINEAR;
+      break;
+    default:
+      FML_DLOG(ERROR) << "Bad image tiling: "
+                      << vulkan_image_.vk_image_create_info.tiling;
+      return false;
+  }
 
   session_image_ = std::make_unique<scenic::Image>(
       *scenic_memory_, 0 /* memory offset */, std::move(image_info));