Depend directly on libfdio.so

This was just moved outside the sysroot. Also depend on the sdk export
target, because that's what causes the sysroot to be copied to the
location this needs as an input.

Also, move the autogenerated resource list to resources.gni, so it's
simpler to modify BUILD.gn.

Change-Id: I6690d7be2b9ff8f28e35d28a4644c1c81081fb35
diff --git a/framework/delibs/deutil/CMakeLists.txt b/framework/delibs/deutil/CMakeLists.txt
index 32dac71..2850ed8 100644
--- a/framework/delibs/deutil/CMakeLists.txt
+++ b/framework/delibs/deutil/CMakeLists.txt
@@ -22,7 +22,8 @@
 if (DE_OS_IS_FUCHSIA)
 	set(DEUTIL_SRCS ${DEUTIL_SRCS} deFuchsiaProcess.cc)
 	include_directories("${FUCHSIA_ROOT}/zircon/system/ulib/launchpad/include")
-	set(DEUTIL_LIBS ${DEUTIL_LIBS} ${FUCHSIA_LIB_DIR}/liblaunchpad.so zircon)
+	include_directories("${FUCHSIA_ROOT}/zircon/system/ulib/fdio/include")
+	set(DEUTIL_LIBS ${DEUTIL_LIBS} ${FUCHSIA_LIB_DIR}/liblaunchpad.so ${FUCHSIA_LIB_DIR}/libfdio.so zircon)
 else ()
 	set(DEUTIL_SRCS ${DEUTIL_SRCS} deProcess.c)
 endif ()
diff --git a/fuchsia/BUILD.gn b/fuchsia/BUILD.gn
index afdbd8a..dbe07e7 100644
--- a/fuchsia/BUILD.gn
+++ b/fuchsia/BUILD.gn
@@ -1,625 +1,48 @@
-### NOTE: This file auto-generated from gen.py
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 
 import("//build/package.gni")
+import("resources.gni")
 
 action("build") {
   script = "build.sh"
   args = [ rebase_path(root_out_dir) ]
   deps = [
+    "//garnet/public/sdk:zircon_sysroot_export",
     "//third_party/vulkan_loader_and_validation_layers:vulkan",
-    "//garnet/public/sdk:zircon_sysroot",
+    "//zircon/public/lib/fdio:fdio_sdk",
     "//zircon/public/lib/launchpad:launchpad_sdk",
   ]
 
   depfile = "$root_out_dir/build-vulkancts/vulkan-cts.d"
-  outputs = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]
+  outputs = [
+    "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk",
+  ]
 }
 
 copy("copy") {
-  sources = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]
-  outputs = [ "$root_build_dir/deqp-vk" ]
-  deps = [ ":build" ]
+  sources = [
+    "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk",
+  ]
+  outputs = [
+    "$root_build_dir/deqp-vk",
+  ]
+  deps = [
+    ":build",
+  ]
 }
 
 package("vulkan-cts") {
-  deps = [ ":copy" ]
-  binary = "deqp-vk"
-  meta = [ {
-    path = rebase_path("meta/sandbox")
-    dest = "sandbox"
-  } ]
-  resources = [
-  {
-    path=rebase_path("../external/vulkancts/mustpass/1.0.2/vk-default.txt")
-    dest="vk-default.txt"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/dynamic_state/VertexFetch.vert")
-    dest="vulkan/dynamic_state/VertexFetch.vert"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/dynamic_state/VertexFetch.frag")
-    dest="vulkan/dynamic_state/VertexFetch.frag"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/dynamic_state/ViewportArray.geom")
-    dest="vulkan/dynamic_state/ViewportArray.geom"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetch.vert")
-    dest="vulkan/draw/VertexFetch.vert"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetch.frag")
-    dest="vulkan/draw/VertexFetch.frag"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert")
-    dest="vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchInstanced.vert")
-    dest="vulkan/draw/VertexFetchInstanced.vert"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParameters.vert")
-    dest="vulkan/draw/VertexFetchShaderDrawParameters.vert"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchInstancedFirstInstance.vert")
-    dest="vulkan/draw/VertexFetchInstancedFirstInstance.vert"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id_in.png")
-    dest="vulkan/data/geometry/primitive_id_in.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_1_end_1.png")
-    dest="vulkan/data/geometry/line_strip_emit_1_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_10.png")
-    dest="vulkan/data/geometry/vertex_count_10.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_adjacency.png")
-    dest="vulkan/data/geometry/triangles_adjacency.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_2.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_0_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_attribute_instancing.png")
-    dest="vulkan/data/geometry/output_vary_by_attribute_instancing.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_uniform_instancing.png")
-    dest="vulkan/data/geometry/output_vary_by_uniform_instancing.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_2.png")
-    dest="vulkan/data/geometry/line_strip_emit_0_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_0_geometry_out_1.png")
-    dest="vulkan/data/geometry/vertex_out_0_geometry_out_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_10_and_100.png")
-    dest="vulkan/data/geometry/output_10_and_100.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_0_geometry_out_2.png")
-    dest="vulkan/data/geometry/vertex_out_0_geometry_out_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_1_geometry_out_0.png")
-    dest="vulkan/data/geometry/vertex_out_1_geometry_out_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_2.png")
-    dest="vulkan/data/geometry/points_emit_0_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_1_end_2.png")
-    dest="vulkan/data/geometry/points_emit_1_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_to_lines.png")
-    dest="vulkan/data/geometry/points_to_lines.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_0.png")
-    dest="vulkan/data/geometry/vertex_count_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_100_and_10.png")
-    dest="vulkan/data/geometry/output_100_and_10.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_to_lines.png")
-    dest="vulkan/data/geometry/triangles_to_lines.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_0.png")
-    dest="vulkan/data/geometry/line_strip_emit_0_end_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_to_triangles.png")
-    dest="vulkan/data/geometry/lines_to_triangles.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_128_and_0.png")
-    dest="vulkan/data/geometry/output_128_and_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_8.png")
-    dest="vulkan/data/geometry/vertex_count_8.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_2_end_2.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_2_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_1_end_1.png")
-    dest="vulkan/data/geometry/points_emit_1_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_9.png")
-    dest="vulkan/data/geometry/vertex_count_9.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_2.png")
-    dest="vulkan/data/geometry/line_strip_emit_2_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_to_points.png")
-    dest="vulkan/data/geometry/triangles_to_points.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_uniform.png")
-    dest="vulkan/data/geometry/output_vary_by_uniform.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_adjacency.png")
-    dest="vulkan/data/geometry/line_strip_adjacency.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_max.png")
-    dest="vulkan/data/geometry/output_max.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_0.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_0_end_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines.png")
-    dest="vulkan/data/geometry/lines.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_texture_instancing.png")
-    dest="vulkan/data/geometry/output_vary_by_texture_instancing.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_attribute.png")
-    dest="vulkan/data/geometry/output_vary_by_attribute.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_1.png")
-    dest="vulkan/data/geometry/points_emit_0_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_2.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_3_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_no_op_geometry_out_1.png")
-    dest="vulkan/data/geometry/vertex_no_op_geometry_out_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png")
-    dest="vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_128.png")
-    dest="vulkan/data/geometry/output_128.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_10.png")
-    dest="vulkan/data/geometry/output_10.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_5.png")
-    dest="vulkan/data/geometry/vertex_count_5.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id_in_restarted.png")
-    dest="vulkan/data/geometry/primitive_id_in_restarted.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_6.png")
-    dest="vulkan/data/geometry/vertex_count_6.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_1.png")
-    dest="vulkan/data/geometry/line_strip_emit_0_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_3.png")
-    dest="vulkan/data/geometry/vertex_count_3.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points.png")
-    dest="vulkan/data/geometry/points.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_1_end_2.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_1_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_1_geometry_out_2.png")
-    dest="vulkan/data/geometry/vertex_out_1_geometry_out_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_1.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_0_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_11.png")
-    dest="vulkan/data/geometry/vertex_count_11.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_fan.png")
-    dest="vulkan/data/geometry/triangle_fan.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_2.png")
-    dest="vulkan/data/geometry/vertex_count_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_adjacency.png")
-    dest="vulkan/data/geometry/lines_adjacency.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/point_size.png")
-    dest="vulkan/data/geometry/point_size.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_2_end_1.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_2_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_12.png")
-    dest="vulkan/data/geometry/vertex_count_12.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip.png")
-    dest="vulkan/data/geometry/line_strip.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id.png")
-    dest="vulkan/data/geometry/primitive_id.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip.png")
-    dest="vulkan/data/geometry/triangle_strip.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_texture.png")
-    dest="vulkan/data/geometry/output_vary_by_texture.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_to_triangles.png")
-    dest="vulkan/data/geometry/points_to_triangles.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_1_end_2.png")
-    dest="vulkan/data/geometry/line_strip_emit_1_end_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles.png")
-    dest="vulkan/data/geometry/triangles.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_0_and_128.png")
-    dest="vulkan/data/geometry/output_0_and_128.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_1.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_3_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_7.png")
-    dest="vulkan/data/geometry/vertex_count_7.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_to_points.png")
-    dest="vulkan/data/geometry/lines_to_points.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_4.png")
-    dest="vulkan/data/geometry/vertex_count_4.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_1.png")
-    dest="vulkan/data/geometry/line_strip_emit_2_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_0.png")
-    dest="vulkan/data/geometry/points_emit_0_end_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_1_end_1.png")
-    dest="vulkan/data/geometry/triangle_strip_emit_1_end_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_1.png")
-    dest="vulkan/data/geometry/vertex_count_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/brick.png")
-    dest="vulkan/data/brick.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/gl_position_ref.png")
-    dest="vulkan/data/tessellation/gl_position_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/isolines_equal_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_isolines_ref.png")
-    dest="vulkan/data/tessellation/user_defined_io_isolines_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/primitive_id_tcs_ref.png")
-    dest="vulkan/data/tessellation/primitive_id_tcs_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/isolines_equal_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png")
-    dest="vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/barrier_ref.png")
-    dest="vulkan/data/tessellation/barrier_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_quads_ref.png")
-    dest="vulkan/data/tessellation/user_defined_io_quads_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png")
-    dest="vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/primitive_id_tes_ref.png")
-    dest="vulkan/data/tessellation/primitive_id_tes_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/isolines_equal_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png")
-    dest="vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_triangles_ref.png")
-    dest="vulkan/data/tessellation/user_defined_io_triangles_ref.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png")
-    dest="vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png")
-    dest="vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/.gitignore")
-    dest="vulkan/.gitignore"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/constant_expressions.test")
-    dest="vulkan/glsl/es310/constant_expressions.test"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/swizzles.test")
-    dest="vulkan/glsl/es310/swizzles.test"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/conversions.test")
-    dest="vulkan/glsl/es310/conversions.test"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/scoping.test")
-    dest="vulkan/glsl/es310/scoping.test"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/functions.test")
-    dest="vulkan/glsl/es310/functions.test"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/constants.test")
-    dest="vulkan/glsl/es310/constants.test"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/linkage.test")
-    dest="vulkan/glsl/es310/linkage.test"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/arrays.test")
-    dest="vulkan/glsl/es310/arrays.test"
-  },
-  {
-    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/conditionals.test")
-    dest="vulkan/glsl/es310/conditionals.test"
-  },
+  deps = [
+    ":copy",
   ]
+  binary = "deqp-vk"
+  meta = [
+    {
+      path = rebase_path("meta/sandbox")
+      dest = "sandbox"
+    },
+  ]
+  resources = cts_resources
 }
diff --git a/fuchsia/gen.py b/fuchsia/gen.py
index f06cb69..edc78d6 100644
--- a/fuchsia/gen.py
+++ b/fuchsia/gen.py
@@ -5,39 +5,12 @@
 import os
 import subprocess
 
-out_file = open("BUILD.gn", "w")
+out_file = open("resources.gni", "w")
 
 out_file.write("""\
 ### NOTE: This file auto-generated from gen.py
 
-import("//build/package.gni")
-
-action("build") {
-  script = "build.sh"
-  args = [ rebase_path(root_out_dir) ]
-  deps = [
-    "//third_party/vulkan_loader_and_validation_layers:vulkan",
-    "//garnet/public/sdk:zircon_sysroot",
-  ]
-
-  depfile = "$root_out_dir/build-vulkancts/vulkan-cts.d"
-  outputs = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]
-}
-
-copy("copy") {
-  sources = [ "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk" ]
-  outputs = [ "$root_build_dir/deqp-vk" ]
-  deps = [ ":build" ]
-}
-
-package("vulkan-cts") {
-  deps = [ ":copy" ]
-  binary = "deqp-vk"
-  meta = [ {
-    path = rebase_path("meta/sandbox")
-    dest = "sandbox"
-  } ]
-  resources = [
+  cts_resources = [
   {
     path=rebase_path("../external/vulkancts/mustpass/1.0.2/vk-default.txt")
     dest="vk-default.txt"
@@ -56,5 +29,4 @@
 	out_file.write('  },\n')
 
 out_file.write('  ]\n')
-out_file.write('}\n')
 out_file.close()
diff --git a/fuchsia/resources.gni b/fuchsia/resources.gni
new file mode 100644
index 0000000..b00baee
--- /dev/null
+++ b/fuchsia/resources.gni
@@ -0,0 +1,596 @@
+### NOTE: This file auto-generated from gen.py
+
+  cts_resources = [
+  {
+    path=rebase_path("../external/vulkancts/mustpass/1.0.2/vk-default.txt")
+    dest="vk-default.txt"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/dynamic_state/VertexFetch.vert")
+    dest="vulkan/dynamic_state/VertexFetch.vert"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/dynamic_state/VertexFetch.frag")
+    dest="vulkan/dynamic_state/VertexFetch.frag"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/dynamic_state/ViewportArray.geom")
+    dest="vulkan/dynamic_state/ViewportArray.geom"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetch.vert")
+    dest="vulkan/draw/VertexFetch.vert"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetch.frag")
+    dest="vulkan/draw/VertexFetch.frag"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert")
+    dest="vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchInstanced.vert")
+    dest="vulkan/draw/VertexFetchInstanced.vert"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParameters.vert")
+    dest="vulkan/draw/VertexFetchShaderDrawParameters.vert"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchInstancedFirstInstance.vert")
+    dest="vulkan/draw/VertexFetchInstancedFirstInstance.vert"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id_in.png")
+    dest="vulkan/data/geometry/primitive_id_in.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_1_end_1.png")
+    dest="vulkan/data/geometry/line_strip_emit_1_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_10.png")
+    dest="vulkan/data/geometry/vertex_count_10.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_adjacency.png")
+    dest="vulkan/data/geometry/triangles_adjacency.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_2.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_0_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_attribute_instancing.png")
+    dest="vulkan/data/geometry/output_vary_by_attribute_instancing.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_uniform_instancing.png")
+    dest="vulkan/data/geometry/output_vary_by_uniform_instancing.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_2.png")
+    dest="vulkan/data/geometry/line_strip_emit_0_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_0_geometry_out_1.png")
+    dest="vulkan/data/geometry/vertex_out_0_geometry_out_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_10_and_100.png")
+    dest="vulkan/data/geometry/output_10_and_100.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_0_geometry_out_2.png")
+    dest="vulkan/data/geometry/vertex_out_0_geometry_out_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_1_geometry_out_0.png")
+    dest="vulkan/data/geometry/vertex_out_1_geometry_out_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_2.png")
+    dest="vulkan/data/geometry/points_emit_0_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_1_end_2.png")
+    dest="vulkan/data/geometry/points_emit_1_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_to_lines.png")
+    dest="vulkan/data/geometry/points_to_lines.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_0.png")
+    dest="vulkan/data/geometry/vertex_count_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_100_and_10.png")
+    dest="vulkan/data/geometry/output_100_and_10.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_to_lines.png")
+    dest="vulkan/data/geometry/triangles_to_lines.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_0.png")
+    dest="vulkan/data/geometry/line_strip_emit_0_end_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_to_triangles.png")
+    dest="vulkan/data/geometry/lines_to_triangles.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_128_and_0.png")
+    dest="vulkan/data/geometry/output_128_and_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_8.png")
+    dest="vulkan/data/geometry/vertex_count_8.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_2_end_2.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_2_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_1_end_1.png")
+    dest="vulkan/data/geometry/points_emit_1_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_9.png")
+    dest="vulkan/data/geometry/vertex_count_9.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_2.png")
+    dest="vulkan/data/geometry/line_strip_emit_2_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_to_points.png")
+    dest="vulkan/data/geometry/triangles_to_points.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_uniform.png")
+    dest="vulkan/data/geometry/output_vary_by_uniform.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_adjacency.png")
+    dest="vulkan/data/geometry/line_strip_adjacency.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_max.png")
+    dest="vulkan/data/geometry/output_max.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_0.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_0_end_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines.png")
+    dest="vulkan/data/geometry/lines.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_texture_instancing.png")
+    dest="vulkan/data/geometry/output_vary_by_texture_instancing.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_attribute.png")
+    dest="vulkan/data/geometry/output_vary_by_attribute.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_1.png")
+    dest="vulkan/data/geometry/points_emit_0_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_2.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_3_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_no_op_geometry_out_1.png")
+    dest="vulkan/data/geometry/vertex_no_op_geometry_out_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png")
+    dest="vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_128.png")
+    dest="vulkan/data/geometry/output_128.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_10.png")
+    dest="vulkan/data/geometry/output_10.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_5.png")
+    dest="vulkan/data/geometry/vertex_count_5.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id_in_restarted.png")
+    dest="vulkan/data/geometry/primitive_id_in_restarted.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_6.png")
+    dest="vulkan/data/geometry/vertex_count_6.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_1.png")
+    dest="vulkan/data/geometry/line_strip_emit_0_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_3.png")
+    dest="vulkan/data/geometry/vertex_count_3.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points.png")
+    dest="vulkan/data/geometry/points.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_1_end_2.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_1_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_1_geometry_out_2.png")
+    dest="vulkan/data/geometry/vertex_out_1_geometry_out_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_1.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_0_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_11.png")
+    dest="vulkan/data/geometry/vertex_count_11.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_fan.png")
+    dest="vulkan/data/geometry/triangle_fan.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_2.png")
+    dest="vulkan/data/geometry/vertex_count_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_adjacency.png")
+    dest="vulkan/data/geometry/lines_adjacency.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/point_size.png")
+    dest="vulkan/data/geometry/point_size.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_2_end_1.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_2_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_12.png")
+    dest="vulkan/data/geometry/vertex_count_12.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip.png")
+    dest="vulkan/data/geometry/line_strip.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id.png")
+    dest="vulkan/data/geometry/primitive_id.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip.png")
+    dest="vulkan/data/geometry/triangle_strip.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_texture.png")
+    dest="vulkan/data/geometry/output_vary_by_texture.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_to_triangles.png")
+    dest="vulkan/data/geometry/points_to_triangles.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_1_end_2.png")
+    dest="vulkan/data/geometry/line_strip_emit_1_end_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles.png")
+    dest="vulkan/data/geometry/triangles.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_0_and_128.png")
+    dest="vulkan/data/geometry/output_0_and_128.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_1.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_3_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_7.png")
+    dest="vulkan/data/geometry/vertex_count_7.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_to_points.png")
+    dest="vulkan/data/geometry/lines_to_points.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_4.png")
+    dest="vulkan/data/geometry/vertex_count_4.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_1.png")
+    dest="vulkan/data/geometry/line_strip_emit_2_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_0.png")
+    dest="vulkan/data/geometry/points_emit_0_end_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_1_end_1.png")
+    dest="vulkan/data/geometry/triangle_strip_emit_1_end_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_1.png")
+    dest="vulkan/data/geometry/vertex_count_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/brick.png")
+    dest="vulkan/data/brick.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/gl_position_ref.png")
+    dest="vulkan/data/tessellation/gl_position_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/isolines_equal_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_isolines_ref.png")
+    dest="vulkan/data/tessellation/user_defined_io_isolines_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/primitive_id_tcs_ref.png")
+    dest="vulkan/data/tessellation/primitive_id_tcs_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/isolines_equal_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png")
+    dest="vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/barrier_ref.png")
+    dest="vulkan/data/tessellation/barrier_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_quads_ref.png")
+    dest="vulkan/data/tessellation/user_defined_io_quads_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png")
+    dest="vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/primitive_id_tes_ref.png")
+    dest="vulkan/data/tessellation/primitive_id_tes_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/isolines_equal_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png")
+    dest="vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_triangles_ref.png")
+    dest="vulkan/data/tessellation/user_defined_io_triangles_ref.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png")
+    dest="vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png")
+    dest="vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/.gitignore")
+    dest="vulkan/.gitignore"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/constant_expressions.test")
+    dest="vulkan/glsl/es310/constant_expressions.test"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/swizzles.test")
+    dest="vulkan/glsl/es310/swizzles.test"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/conversions.test")
+    dest="vulkan/glsl/es310/conversions.test"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/scoping.test")
+    dest="vulkan/glsl/es310/scoping.test"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/functions.test")
+    dest="vulkan/glsl/es310/functions.test"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/constants.test")
+    dest="vulkan/glsl/es310/constants.test"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/linkage.test")
+    dest="vulkan/glsl/es310/linkage.test"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/arrays.test")
+    dest="vulkan/glsl/es310/arrays.test"
+  },
+  {
+    path=rebase_path("../external/vulkancts/data/vulkan/glsl/es310/conditionals.test")
+    dest="vulkan/glsl/es310/conditionals.test"
+  },
+  ]
diff --git a/targets/fuchsia/fuchsia.cmake b/targets/fuchsia/fuchsia.cmake
index 6b387f0..8d2d46a 100644
--- a/targets/fuchsia/fuchsia.cmake
+++ b/targets/fuchsia/fuchsia.cmake
@@ -7,4 +7,4 @@
 set(DEQP_SUPPORT_OPENGL	OFF)
 set(DEQP_SUPPORT_EGL	OFF)
 
-set(DEQP_PLATFORM_LIBRARIES fdio)
+set(DEQP_PLATFORM_LIBRARIES "")