Merge remote-tracking branch 'origin/upstream/vulkan-cts-1.2.6' into main

Change-Id: Ie6af72723ab48cd62938364daabb0807c3383bb3
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4365ada..dc13ae7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -354,3 +354,7 @@
 	set_target_properties(deqp PROPERTIES XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
 	set_target_properties(deqp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: ${DEQP_IOS_CODE_SIGN_IDENTITY}")
 endif ()
+
+if (DE_OS_IS_FUCHSIA)
+	set_target_properties(deqp-vk PROPERTIES LINK_FLAGS "-Wl,-z,stack-size=0x100000")
+endif ()
\ No newline at end of file
diff --git a/execserver/CMakeLists.txt b/execserver/CMakeLists.txt
index b6d0005..5a58de3 100644
--- a/execserver/CMakeLists.txt
+++ b/execserver/CMakeLists.txt
@@ -38,17 +38,17 @@
 
 include_directories(.)
 
-if (DE_OS_IS_WIN32 OR DE_OS_IS_OSX OR DE_OS_IS_UNIX)
+if (DE_OS_IS_WIN32 OR DE_OS_IS_OSX OR DE_OS_IS_UNIX OR DE_OS_IS_FUCHSIA)
 	# Build standalone execserver binary
 	add_executable(execserver tools/xsMain.cpp)
-	target_link_libraries(execserver xscore)
+	target_link_libraries(execserver xscore ${DEQP_PLATFORM_LIBRARIES})
 
 	# Tests
 	add_executable(execserver-test tools/xsTest.cpp)
-	target_link_libraries(execserver-test xscore)
+	target_link_libraries(execserver-test xscore ${DEQP_PLATFORM_LIBRARIES})
 	add_dependencies(execserver-test execserver)
 
 	# Basic client
 	add_executable(execserver-client tools/xsClient.cpp)
-	target_link_libraries(execserver-client xscore)
+	target_link_libraries(execserver-client xscore ${DEQP_PLATFORM_LIBRARIES})
 endif ()
diff --git a/executor/CMakeLists.txt b/executor/CMakeLists.txt
index 2a97049..4722bef 100644
--- a/executor/CMakeLists.txt
+++ b/executor/CMakeLists.txt
@@ -49,9 +49,9 @@
 include_directories(.)
 include_directories(../framework/xexml)
 
-if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX OR DE_OS_IS_ANDROID)
+if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX OR DE_OS_IS_ANDROID OR DE_OS_IS_FUCHSIA)
 	add_executable(executor tools/xeCommandLineExecutor.cpp)
-	target_link_libraries(executor xecore)
+	target_link_libraries(executor xecore ${DEQP_PLATFORM_LIBRARIES})
 endif ()
 
 if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX)
diff --git a/external/fetch_sources.py b/external/fetch_sources.py
index b37ae1d..58c825f 100644
--- a/external/fetch_sources.py
+++ b/external/fetch_sources.py
@@ -298,35 +298,33 @@
 				os.path.join(path, "pnglibconf.h"))
 
 PACKAGES = [
-	SourcePackage(
-		"http://zlib.net/zlib-1.2.11.tar.gz",
-		"zlib-1.2.11.tar.gz",
-		"c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1",
+	GitRepo(
+		"https://fuchsia.googlesource.com/third_party/zlib",
+		None,
+		"master",
 		"zlib"),
-	SourcePackage(
-		"http://prdownloads.sourceforge.net/libpng/libpng-1.6.27.tar.gz",
-		"libpng-1.6.27.tar.gz",
-		"c9d164ec247f426a525a7b89936694aefbc91fb7a50182b198898b8fc91174b4",
-		"libpng",
-		postExtract = postExtractLibpng),
+	GitRepo(
+		"https://fuchsia.googlesource.com/third_party/libpng",
+		None,
+		"master",
+		"libpng"),
 	SourceFile(
 		"https://raw.githubusercontent.com/baldurk/renderdoc/v1.1/renderdoc/api/app/renderdoc_app.h",
 		"renderdoc_app.h",
 		"e7b5f0aa5b1b0eadc63a1c624c0ca7f5af133aa857d6a4271b0ef3d0bdb6868e",
 		"renderdoc"),
 	GitRepo(
-		"https://github.com/KhronosGroup/SPIRV-Tools.git",
+		"https://fuchsia.googlesource.com/third_party/spirv-tools",
 		None,
 		"f11f7434815838bbad349124767b258ce7df41f0",
 		"spirv-tools"),
 	GitRepo(
-		"https://github.com/KhronosGroup/glslang.git",
+		"https://fuchsia.googlesource.com/third_party/glslang",
 		None,
-		"5c4f421121c4d24aad23a507e630dc5dc6c92c7c",
-		"glslang",
-		removeTags = ["master-tot"]),
+		"2849c2bd8cc40867dc1554fef671cf81b55663f5",
+		"glslang"),
 	GitRepo(
-		"https://github.com/KhronosGroup/SPIRV-Headers.git",
+		"https://fuchsia.googlesource.com/third_party/spirv-headers",
 		None,
 		"faa570afbc91ac73d594d787486bcf8f2df1ace0",
 		"spirv-headers"),
diff --git a/external/vulkancts/framework/vulkan/CMakeLists.txt b/external/vulkancts/framework/vulkan/CMakeLists.txt
index 37dc216..efd4c24 100644
--- a/external/vulkancts/framework/vulkan/CMakeLists.txt
+++ b/external/vulkancts/framework/vulkan/CMakeLists.txt
@@ -78,6 +78,16 @@
 	vkRayTracingUtil.cpp
 	)
 
+if (DE_OS_IS_FUCHSIA)
+	set(VKUTILNOSHADER_SRCS
+	${VKUTILNOSHADER_SRCS}
+	vkRenderDocUtilStub.cpp)
+else ()
+	set(VKUTILNOSHADER_SRCS
+	${VKUTILNOSHADER_SRCS}
+	vkRenderDocUtil.cpp)
+endif ()
+
 set(VKUTIL_SRCS
 	vkPrograms.cpp
 	vkPrograms.hpp
diff --git a/external/vulkancts/framework/vulkan/vkBasicTypes.inl b/external/vulkancts/framework/vulkan/vkBasicTypes.inl
index 099d5c0..a656957 100644
--- a/external/vulkancts/framework/vulkan/vkBasicTypes.inl
+++ b/external/vulkancts/framework/vulkan/vkBasicTypes.inl
@@ -3919,7 +3919,7 @@
 VK_DEFINE_PLATFORM_TYPE(Win32MonitorHandle,			void*);
 VK_DEFINE_PLATFORM_TYPE(Win32LPCWSTR,				const void*);
 VK_DEFINE_PLATFORM_TYPE(RROutput,					void*);
-VK_DEFINE_PLATFORM_TYPE(zx_handle_t,				deInt32);
+VK_DEFINE_PLATFORM_TYPE(zx_handle_t,				deUint32);
 VK_DEFINE_PLATFORM_TYPE(GgpFrameToken,				deInt32);
 VK_DEFINE_PLATFORM_TYPE(GgpStreamDescriptor,		deInt32);
 VK_DEFINE_PLATFORM_TYPE(CAMetalLayer,				void*);
diff --git a/external/vulkancts/framework/vulkan/vkRenderDocUtilStub.cpp b/external/vulkancts/framework/vulkan/vkRenderDocUtilStub.cpp
new file mode 100644
index 0000000..6aea047
--- /dev/null
+++ b/external/vulkancts/framework/vulkan/vkRenderDocUtilStub.cpp
@@ -0,0 +1,36 @@
+/*-------------------------------------------------------------------------
+ * Vulkan CTS Framework
+ * --------------------
+ *
+ * Copyright (c) 2018 The Khronos Group Inc.
+ * Copyright (c) 2018 Intel Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief RenderDoc utility- stubs
+ *//*--------------------------------------------------------------------*/
+
+#include "vkRenderDocUtil.hpp"
+
+namespace vk
+{
+
+RenderDocUtil::RenderDocUtil() {}
+RenderDocUtil::~RenderDocUtil() {}
+bool RenderDocUtil::isValid() { return false; }
+void RenderDocUtil::startFrame(vk::VkInstance) {}
+void RenderDocUtil::endFrame(vk::VkInstance) {}
+
+} // namespace
diff --git a/external/vulkancts/modules/vulkan/CMakeLists.txt b/external/vulkancts/modules/vulkan/CMakeLists.txt
index c1236df..68246ce 100644
--- a/external/vulkancts/modules/vulkan/CMakeLists.txt
+++ b/external/vulkancts/modules/vulkan/CMakeLists.txt
@@ -171,3 +171,8 @@
 	add_executable(vk-build-programs vktBuildPrograms.cpp)
 	target_link_libraries(vk-build-programs deqp-vk${MODULE_LIB_TARGET_POSTFIX})
 endif ()
+
+if (DE_OS_IS_FUCHSIA)
+	target_link_libraries(deqp-vk "${FUCHSIA_LIB_DIR}/libvulkan.so")
+endif ()
+
diff --git a/external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
index bffc643..d8037a9 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
@@ -305,6 +305,16 @@
 		useExternalFence = true;
 	}
 
+	if (externalMemoryTypes & vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA)
+	{
+		deviceExtensions.push_back("VK_FUCHSIA_external_memory");
+	}
+
+	if (externalSemaphoreTypes & vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA)
+	{
+		deviceExtensions.push_back("VK_FUCHSIA_external_semaphore");
+	}
+
 	if ((externalMemoryTypes
 			& (vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
 			   | vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
@@ -4397,6 +4407,7 @@
 	semaphoreGroup->addChild(createSemaphoreTests(testCtx, vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT).release());
 	semaphoreGroup->addChild(createSemaphoreTests(testCtx, vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT).release());
 	semaphoreGroup->addChild(createSemaphoreTests(testCtx, vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT).release());
+	semaphoreGroup->addChild(createSemaphoreTests(testCtx, vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA).release());
 
 	return semaphoreGroup;
 }
@@ -4514,6 +4525,7 @@
 	group->addChild(createMemoryTests(testCtx, vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT).release());
 	group->addChild(createMemoryTests(testCtx, vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID).release());
 	group->addChild(createMemoryTests(testCtx, vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT).release());
+	group->addChild(createMemoryTests(testCtx, vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA).release());
 
 	return group;
 }
diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp
index a13b8df..06c091b 100644
--- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp
+++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp
@@ -903,6 +903,12 @@
 	context.getTestContext().getPlatform().getVulkanPlatform().getMemoryLimits(memoryLimits);
 	maxMemory = std::min(maxMemory, VkDeviceSize(memoryLimits.totalSystemMemory));
 
+#ifdef __Fuchsia__
+	// TODO(fxb/45016): remove this workaround
+	constexpr uint64_t kMaxPinnableSizeFuchsia = 512ull * 1024 * 1024;
+	maxMemory = std::min(maxMemory, kMaxPinnableSizeFuchsia);
+#endif
+
 	const VkDeviceSize				deviceMemoryBudget	= std::min(neededMemory, maxMemory);
 	bool							allocationPossible	= false;
 
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsTests.cpp
index 22e6c75..3af3095 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsTests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsTests.cpp
@@ -38,6 +38,11 @@
 #include <limits>
 #include <fenv.h>
 
+// <string> may include fcntl.h which #defines O_TRUNC in musl
+#ifdef O_TRUNC
+#undef O_TRUNC
+#endif
+
 namespace vkt
 {
 namespace SpirVAssembly
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSignedIntCompareTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSignedIntCompareTests.cpp
index 2f3c9a7..38fd9ce 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSignedIntCompareTests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSignedIntCompareTests.cpp
@@ -26,6 +26,7 @@
 
 #include "vktTestGroupUtil.hpp"
 #include "vktAmberTestCase.hpp"
+
 #include "vktSpvAsmSignedIntCompareTests.hpp"
 
 namespace vkt
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSpirvVersion1p4Tests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSpirvVersion1p4Tests.cpp
index 44408b5..9d7c6c5 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSpirvVersion1p4Tests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSpirvVersion1p4Tests.cpp
@@ -30,6 +30,7 @@
 
 #include "vkDefs.hpp"
 #include "vktTestGroupUtil.hpp"
+#include "vktTestCase.hpp"
 #include "vktAmberTestCase.hpp"
 #include "vktSpvAsmSpirvVersion1p4Tests.hpp"
 #include "vktTestGroupUtil.hpp"
diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
index cf19295..77ea763 100644
--- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
+++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
@@ -139,6 +139,13 @@
 			m_context.requireDeviceFunctionality("VK_KHR_external_memory_win32");
 		}
 
+		if (config.memoryHandleType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
+			|| config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA)
+		{
+			m_context.requireDeviceFunctionality("VK_FUCHSIA_external_semaphore");
+			m_context.requireDeviceFunctionality("VK_FUCHSIA_external_memory");
+		}
+
 		TestLog&						log				= context.getTestContext().getLog();
 		const vk::InstanceInterface&	vki				= context.getInstanceInterface();
 		const vk::VkPhysicalDevice		physicalDevice	= context.getPhysicalDevice();
@@ -365,6 +372,11 @@
 	if (context.isDeviceFunctionalitySupported("VK_KHR_external_memory_win32"))
 		extensions.push_back("VK_KHR_external_memory_win32");
 
+	if (context.isDeviceFunctionalitySupported("VK_FUCHSIA_external_semaphore"))
+		extensions.push_back("VK_FUCHSIA_external_semaphore");
+	if (context.isDeviceFunctionalitySupported("VK_FUCHSIA_external_memory"))
+		extensions.push_back("VK_FUCHSIA_external_memory");
+
 	if (context.isDeviceFunctionalitySupported("VK_KHR_timeline_semaphore"))
 	{
 		extensions.push_back("VK_KHR_timeline_semaphore");
@@ -1347,6 +1359,11 @@
 			vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
 			"_dma_buf"
 		},
+		{
+			vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA,
+			vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA,
+			"_zircon_handle"
+		},
 	};
 
 	const std::string semaphoreNames[vk::VK_SEMAPHORE_TYPE_LAST] =
diff --git a/external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.cpp b/external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.cpp
index 9bdb8be..48db797 100644
--- a/external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.cpp
+++ b/external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.cpp
@@ -46,6 +46,12 @@
 #	define BUILT_WITH_ANDROID_HARDWARE_BUFFER 1
 #endif
 
+
+#if (DE_OS == DE_OS_FUCHSIA)
+#	include <zircon/syscalls.h>
+#	include <zircon/types.h>
+#endif
+
 namespace vkt
 {
 namespace ExternalMemoryUtil
@@ -57,6 +63,7 @@
 
 NativeHandle::NativeHandle (void)
 	: m_fd						(-1)
+	, m_zirconHandle	(0)
 	, m_win32HandleType			(WIN32HANDLETYPE_LAST)
 	, m_win32Handle				(DE_NULL)
 	, m_androidHardwareBuffer	(DE_NULL)
@@ -66,6 +73,7 @@
 
 NativeHandle::NativeHandle (const NativeHandle& other)
 	: m_fd						(-1)
+	, m_zirconHandle	(0)
 	, m_win32HandleType			(WIN32HANDLETYPE_LAST)
 	, m_win32Handle				(DE_NULL)
 	, m_androidHardwareBuffer	(DE_NULL)
@@ -82,6 +90,15 @@
 		DE_FATAL("Platform doesn't support file descriptors");
 #endif
 	}
+	else if (other.m_zirconHandle.internal)
+	{
+#if (DE_OS == DE_OS_FUCHSIA)
+		DE_ASSERT(!other.m_win32Handle.internal);
+		zx_handle_duplicate(other.m_zirconHandle.internal, ZX_RIGHT_SAME_RIGHTS, &m_zirconHandle.internal);
+#else
+		DE_FATAL("Platform doesn't support zircon handles");
+#endif
+	}
 	else if (other.m_win32Handle.internal)
 	{
 #if (DE_OS == DE_OS_WIN32)
@@ -126,6 +143,7 @@
 
 NativeHandle::NativeHandle (int fd)
 	: m_fd						(fd)
+	, m_zirconHandle	(DE_NULL)
 	, m_win32HandleType			(WIN32HANDLETYPE_LAST)
 	, m_win32Handle				(DE_NULL)
 	, m_androidHardwareBuffer	(DE_NULL)
@@ -135,6 +153,7 @@
 
 NativeHandle::NativeHandle (Win32HandleType handleType, vk::pt::Win32Handle handle)
 	: m_fd						(-1)
+	, m_zirconHandle	(0)
 	, m_win32HandleType			(handleType)
 	, m_win32Handle				(handle)
 	, m_androidHardwareBuffer	(DE_NULL)
@@ -144,6 +163,7 @@
 
 NativeHandle::NativeHandle (vk::pt::AndroidHardwareBufferPtr buffer)
 	: m_fd						(-1)
+	, m_zirconHandle	(0)
 	, m_win32HandleType			(WIN32HANDLETYPE_LAST)
 	, m_win32Handle				(DE_NULL)
 	, m_androidHardwareBuffer	(buffer)
@@ -169,6 +189,15 @@
 #endif
 	}
 
+	if (m_zirconHandle.internal > 0) {
+#if (DE_OS == DE_OS_FUCHSIA)
+		zx_handle_close(m_zirconHandle.internal);
+#else
+		DE_FATAL("Platform doesn't support fuchsia handles");
+#endif
+	}
+
+
 	if (m_win32Handle.internal)
 	{
 #if (DE_OS == DE_OS_WIN32)
@@ -197,6 +226,7 @@
 		AndroidHardwareBufferExternalApi::getInstance()->release(m_androidHardwareBuffer);
 	}
 	m_fd					= -1;
+	m_zirconHandle		= vk::pt::zx_handle_t(0);
 	m_win32Handle			= vk::pt::Win32Handle(DE_NULL);
 	m_win32HandleType		= WIN32HANDLETYPE_LAST;
 	m_androidHardwareBuffer	= vk::pt::AndroidHardwareBufferPtr(DE_NULL);
@@ -229,6 +259,13 @@
 	m_win32Handle		= handle;
 }
 
+void NativeHandle::setZirconHandle (vk::pt::zx_handle_t zirconHandle)
+{
+	reset();
+
+	m_zirconHandle 	= zirconHandle;
+}
+
 void NativeHandle::setHostPtr(void* hostPtr)
 {
 	reset();
@@ -239,6 +276,7 @@
 void NativeHandle::disown (void)
 {
 	m_fd = -1;
+	m_zirconHandle = vk::pt::zx_handle_t(0);
 	m_win32Handle = vk::pt::Win32Handle(DE_NULL);
 	m_androidHardwareBuffer = vk::pt::AndroidHardwareBufferPtr(DE_NULL);
 	m_hostPtr = DE_NULL;
@@ -261,6 +299,15 @@
 	return m_fd;
 }
 
+vk::pt::zx_handle_t NativeHandle::getZirconHandle (void) const
+{
+	DE_ASSERT(!m_win32Handle.internal);
+	DE_ASSERT(!m_androidHardwareBuffer.internal);
+
+	return m_zirconHandle;
+}
+
+
 vk::pt::AndroidHardwareBufferPtr NativeHandle::getAndroidHardwareBuffer (void) const
 {
 	DE_ASSERT(m_fd == -1);
@@ -295,6 +342,9 @@
 		case vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT:
 			return "sync_fd";
 
+		case vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA:
+			return "zircon_event";
+
 		default:
 			DE_FATAL("Unknown external semaphore type");
 			return DE_NULL;
@@ -357,6 +407,10 @@
 		case vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT:
 			return "host_allocation";
 
+		case vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA:
+			return "zircon_vmo";
+
+
 		default:
 			DE_FATAL("Unknown external memory type");
 			return DE_NULL;
@@ -378,6 +432,9 @@
 		case vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT:
 			return permanence == PERMANENCE_TEMPORARY;
 
+		case vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA:
+			return permanence == PERMANENCE_PERMANENT || permanence == PERMANENCE_TEMPORARY;
+
 		default:
 			DE_FATAL("Unknown external semaphore type");
 			return false;
@@ -398,6 +455,9 @@
 		case vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT:
 			return TRANSFERENCE_COPY;
 
+		case vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA:
+			return TRANSFERENCE_REFERENCE;
+
 		default:
 			DE_FATAL("Unknown external semaphore type");
 			return TRANSFERENCE_REFERENCE;
@@ -489,6 +549,21 @@
 		TCU_CHECK(fd >= 0);
 		nativeHandle = fd;
 	}
+	else if (externalType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA)
+	{
+		const vk::VkMemoryGetZirconHandleInfoFUCHSIA	info	=
+		{
+			vk::VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
+			DE_NULL,
+
+			memory,
+			externalType
+		};
+		vk::pt::zx_handle_t handle(0);
+
+		VK_CHECK(vkd.getMemoryZirconHandleFUCHSIA(device, &info, &handle));
+		nativeHandle.setZirconHandle(handle);
+	}
 	else if (externalType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
 		|| externalType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)
 	{
@@ -798,6 +873,21 @@
 		TCU_CHECK(fd >= 0);
 		nativeHandle = fd;
 	}
+	else if (externalType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA)
+	{
+		const vk::VkSemaphoreGetZirconHandleInfoFUCHSIA	info	=
+		{
+			vk::VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
+			DE_NULL,
+
+			semaphore,
+			externalType
+		};
+		vk::pt::zx_handle_t zirconHandle(0);
+
+		VK_CHECK(vkd.getSemaphoreZirconHandleFUCHSIA(device, &info, &zirconHandle));
+		nativeHandle.setZirconHandle(zirconHandle);
+	}
 	else if (externalType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
 		|| externalType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)
 	{
@@ -854,6 +944,21 @@
 		VK_CHECK(vkd.importSemaphoreFdKHR(device, &importInfo));
 		handle.disown();
 	}
+	else if (externalType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA)
+	{
+		const vk::VkImportSemaphoreZirconHandleInfoFUCHSIA	importInfo	=
+		{
+			vk::VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
+			DE_NULL,
+			semaphore,
+			flags,
+			externalType,
+			handle.getZirconHandle()
+		};
+
+		VK_CHECK(vkd.importSemaphoreZirconHandleFUCHSIA(device, &importInfo));
+		handle.disown();
+	}
 	else if (externalType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
 			|| externalType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)
 	{
@@ -1019,6 +1124,35 @@
 			externalType,
 			handle.getFd()
 		};
+		const vk::VkMemoryDedicatedAllocateInfo	dedicatedInfo	=
+		{
+			vk::VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+			&importInfo,
+			image,
+			buffer,
+		};
+		const vk::VkMemoryAllocateInfo				info			=
+		{
+			vk::VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
+			(isDedicated ? (const void*)&dedicatedInfo : (const void*)&importInfo),
+			requirements.size,
+			(memoryTypeIndex == ~0U) ? chooseMemoryType(requirements.memoryTypeBits) : memoryTypeIndex
+		};
+		vk::Move<vk::VkDeviceMemory> memory (vk::allocateMemory(vkd, device, &info));
+
+		handle.disown();
+
+		return memory;
+	}
+	else if (externalType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA)
+	{
+		const vk::VkImportMemoryZirconHandleInfoFUCHSIA			importInfo		=
+		{
+			vk::VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
+			DE_NULL,
+			externalType,
+			handle.getZirconHandle()
+		};
 		const vk::VkMemoryDedicatedAllocateInfo		dedicatedInfo	=
 		{
 			vk::VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
diff --git a/external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.hpp b/external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.hpp
index 1e7a7b6..65476f6 100644
--- a/external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.hpp
+++ b/external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.hpp
@@ -55,17 +55,20 @@
 	NativeHandle&						operator=					(int fd);
 	NativeHandle&						operator=					(vk::pt::AndroidHardwareBufferPtr buffer);
 
+	void								setZirconHandle			(vk::pt::zx_handle_t zirconHandle);
 	void								setWin32Handle				(Win32HandleType type, vk::pt::Win32Handle handle);
 	vk::pt::Win32Handle					getWin32Handle				(void) const;
 	void								setHostPtr					(void* hostPtr);
 	void*								getHostPtr					(void) const;
 	int									getFd						(void) const;
 	vk::pt::AndroidHardwareBufferPtr	getAndroidHardwareBuffer	(void) const;
+	vk::pt::zx_handle_t					getZirconHandle(void) const;
 	void								disown						(void);
 	void								reset						(void);
 
 private:
 	int									m_fd;
+	vk::pt::zx_handle_t 					m_zirconHandle;
 	Win32HandleType						m_win32HandleType;
 	vk::pt::Win32Handle					m_win32Handle;
 	vk::pt::AndroidHardwareBufferPtr	m_androidHardwareBuffer;
diff --git a/external/vulkancts/modules/vulkan/vktTestCase.cpp b/external/vulkancts/modules/vulkan/vktTestCase.cpp
index f8a426c..4b2dd8c 100644
--- a/external/vulkancts/modules/vulkan/vktTestCase.cpp
+++ b/external/vulkancts/modules/vulkan/vktTestCase.cpp
@@ -77,6 +77,7 @@
 		"VK_AMD_shader_trinary_minmax",
 		"VK_AMD_texture_gather_bias_lod",
 		"VK_ANDROID_external_memory_android_hardware_buffer",
+		"VK_FUCHSIA_",
 	};
 
 	for (size_t extNdx = 0; extNdx < extensions.size(); extNdx++)
diff --git a/external/vulkancts/scripts/gen_framework.py b/external/vulkancts/scripts/gen_framework.py
index 427e062..cae6a14 100755
--- a/external/vulkancts/scripts/gen_framework.py
+++ b/external/vulkancts/scripts/gen_framework.py
@@ -97,7 +97,7 @@
 	# VK_EXT_acquire_xlib_display
 	(["RROutput"],							["RROutput"],					"void*"),
 
-	(["zx_handle_t"],						["zx_handle_t"],				"deInt32"),
+	(["zx_handle_t"],						["zx_handle_t"],				"deUint32"),
 	(["GgpFrameToken"],						["GgpFrameToken"],				"deInt32"),
 	(["GgpStreamDescriptor"],				["GgpStreamDescriptor"],		"deInt32"),
 	(["CAMetalLayer"],						["CAMetalLayer"],				"void*"),
@@ -122,7 +122,7 @@
 	("HANDLE*",		PLATFORM_TYPE_NAMESPACE + "::" + "Win32Handle*"),
 ]
 
-EXTENSION_POSTFIXES				= ["KHR", "EXT", "NV", "NVX", "KHX", "NN", "MVK", "FUCHSIA", "GGP", "AMD"]
+EXTENSION_POSTFIXES				= ["KHR", "EXT", "NV", "NVX", "KHX", "NN", "MVK", "FUCHSIA", "GGP", "AMD", "FUCHSIA"]
 EXTENSION_POSTFIXES_STANDARD	= ["KHR", "EXT"]
 
 def prefixName (prefix, name):
@@ -157,6 +157,7 @@
 	name = name.replace("AABBNV", "AABB_NV")
 	name = name.replace("_H_264_", "_H264_")
 	name = name.replace("_H_265_", "_H265_")
+	name = name.replace("IMAGE_PIPE", "IMAGEPIPE")
 
 	return prefix + name
 
diff --git a/external/zlib/CMakeLists.txt b/external/zlib/CMakeLists.txt
index 40ca18d..cfeeb9e 100644
--- a/external/zlib/CMakeLists.txt
+++ b/external/zlib/CMakeLists.txt
@@ -56,7 +56,7 @@
 	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Wall /wd4127 /wd4131 /wd4242 /wd4244 /wd4996")
 
 elseif (DE_COMPILER_IS_GCC OR DE_COMPILER_IS_CLANG)
-	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-implicit-function-declaration")
+	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-implicit-function-declaration -std=c99")
 
 endif ()
 
diff --git a/framework/common/tcuCommandLine.cpp b/framework/common/tcuCommandLine.cpp
index 83ec331..9efaf7f 100644
--- a/framework/common/tcuCommandLine.cpp
+++ b/framework/common/tcuCommandLine.cpp
@@ -102,6 +102,7 @@
 DE_DECLARE_COMMAND_LINE_OPT(CaseFractionMandatoryTests,	std::string);
 DE_DECLARE_COMMAND_LINE_OPT(WaiverFile,					std::string);
 DE_DECLARE_COMMAND_LINE_OPT(RunnerType,					tcu::TestRunnerType);
+DE_DECLARE_COMMAND_LINE_OPT(MinimizeStdout,					bool);
 
 static void parseIntList (const char* src, std::vector<int>* dst)
 {
@@ -208,7 +209,8 @@
 		<< Option<CaseFraction>					(DE_NULL,	"deqp-fraction",							"Run a fraction of the test cases (e.g. N,M means run group%M==N)",	parseIntList,	"")
 		<< Option<CaseFractionMandatoryTests>	(DE_NULL,	"deqp-fraction-mandatory-caselist-file",	"Case list file that must be run for each fraction",					"")
 		<< Option<WaiverFile>					(DE_NULL,	"deqp-waiver-file",							"Read waived tests from given file",									"")
-		<< Option<RunnerType>					(DE_NULL,	"deqp-runner-type",							"Filter test cases based on runner",				s_runnerTypes,		"any");
+		<< Option<RunnerType>					(DE_NULL,	"deqp-runner-type",							"Filter test cases based on runner",				s_runnerTypes,		"any")
+		<< Option<MinimizeStdout>				(DE_NULL,	"deqp-minimize-stdout",						"Don't print test name if pass or not supported",	s_enableNames,		"disable");
 }
 
 void registerLegacyOptions (de::cmdline::Parser& parser)
@@ -860,6 +862,7 @@
 const char*				CommandLine::getCaseFractionMandatoryTests	(void) const	{ return m_cmdLine.getOption<opt::CaseFractionMandatoryTests>().c_str();	}
 const char*				CommandLine::getArchiveDir					(void) const	{ return m_cmdLine.getOption<opt::ArchiveDir>().c_str();					}
 tcu::TestRunnerType		CommandLine::getRunnerType					(void) const	{ return m_cmdLine.getOption<opt::RunnerType>();							}
+bool					CommandLine::isMinimizeStdoutEnabled		(void) const	{ return m_cmdLine.getOption<opt::MinimizeStdout>();						}
 
 const char* CommandLine::getGLContextType (void) const
 {
diff --git a/framework/common/tcuCommandLine.hpp b/framework/common/tcuCommandLine.hpp
index 2a7c48e..6b6ad43 100644
--- a/framework/common/tcuCommandLine.hpp
+++ b/framework/common/tcuCommandLine.hpp
@@ -266,6 +266,9 @@
 	//! Get runner type (--deqp-runner-type)
 	tcu::TestRunnerType				getRunnerType				(void) const;
 
+	//! Is minimize stdout enabled (--deqp-minimize-stdout)
+	bool							isMinimizeStdoutEnabled				(void) const;
+
 	/*--------------------------------------------------------------------*//*!
 	 * \brief Creates case list filter
 	 * \param archive Resources
diff --git a/framework/common/tcuTestSessionExecutor.cpp b/framework/common/tcuTestSessionExecutor.cpp
index c7524f8..204858b 100644
--- a/framework/common/tcuTestSessionExecutor.cpp
+++ b/framework/common/tcuTestSessionExecutor.cpp
@@ -109,7 +109,7 @@
 								// else remain in TRAVERSING_HIERARCHY => node will be exited from in the next iteration
 							}
 							else
-								leaveTestCase(testCase);
+								leaveTestCase(testCase, m_iterator.getNodePath());
 
 							break;
 						}
@@ -195,7 +195,8 @@
 	const qpTestCaseType	caseType	= nodeTypeToTestCaseType(testCase->getNodeType());
 	bool					initOk		= false;
 
-	print("\nTest case '%s'..\n", casePath.c_str());
+	if (!m_testCtx.getCommandLine().isMinimizeStdoutEnabled())
+		print("\nTest case '%s'..\n", casePath.c_str());
 
 	m_testCtx.setTestResult(QP_TEST_RESULT_LAST, "");
 	m_testCtx.setTerminateAfter(false);
@@ -235,7 +236,7 @@
 	return initOk;
 }
 
-void TestSessionExecutor::leaveTestCase (TestCase* testCase)
+void TestSessionExecutor::leaveTestCase (TestCase* testCase, const std::string& casePath)
 {
 	TestLog&	log		= m_testCtx.getLog();
 
@@ -266,7 +267,17 @@
 		m_testCtx.getLog().endCase(testResult, testResultDesc);
 
 		// Update statistics.
-		print("  %s (%s)\n", qpGetTestResultName(testResult), testResultDesc);
+		if (m_testCtx.getCommandLine().isMinimizeStdoutEnabled()) {
+			switch(testResult) {
+				case QP_TEST_RESULT_PASS:
+				case QP_TEST_RESULT_NOT_SUPPORTED:
+					break;
+				default:
+					print("Test case '%s':  %s (%s)\n", casePath.c_str(), qpGetTestResultName(testResult), testResultDesc);
+			}
+		} else {
+			print("%s (%s)\n", qpGetTestResultName(testResult), testResultDesc);
+		}
 
 		m_status.numExecuted += 1;
 		switch (testResult)
diff --git a/framework/common/tcuTestSessionExecutor.hpp b/framework/common/tcuTestSessionExecutor.hpp
index 0edd99b..d7348ab 100644
--- a/framework/common/tcuTestSessionExecutor.hpp
+++ b/framework/common/tcuTestSessionExecutor.hpp
@@ -80,7 +80,7 @@
 
 	bool							enterTestCase		(TestCase* testCase, const std::string& casePath);
 	TestCase::IterateResult			iterateTestCase		(TestCase* testCase);
-	void							leaveTestCase		(TestCase* testCase);
+	void							leaveTestCase		(TestCase* testCase, const std::string& casePath);
 
 	enum State
 	{
diff --git a/framework/delibs/cmake/CFlags.cmake b/framework/delibs/cmake/CFlags.cmake
index b3abf72..c829601 100644
--- a/framework/delibs/cmake/CFlags.cmake
+++ b/framework/delibs/cmake/CFlags.cmake
@@ -43,7 +43,7 @@
 	set(WARNING_FLAGS			"-Wall -Wextra -Wno-long-long -Wshadow -Wundef -Wconversion -Wno-sign-conversion")
 
 	set(CMAKE_C_FLAGS			"${TARGET_FLAGS} ${WARNING_FLAGS} ${CMAKE_C_FLAGS} -std=c99 -pedantic ")
-	set(CMAKE_CXX_FLAGS			"${TARGET_FLAGS} ${WARNING_FLAGS} ${CMAKE_CXX_FLAGS} -std=c++11 -Wno-delete-non-virtual-dtor")
+	set(CMAKE_CXX_FLAGS			"${TARGET_FLAGS} ${WARNING_FLAGS} ${CMAKE_CXX_FLAGS} -std=c++14 -Wno-delete-non-virtual-dtor")
 
 	# Force compiler to generate code where integers have well defined overflow
 	# Turn on -Wstrict-overflow=5 and check all warnings before removing
diff --git a/framework/delibs/cmake/Defs.cmake b/framework/delibs/cmake/Defs.cmake
index e710856..2e57a43 100644
--- a/framework/delibs/cmake/Defs.cmake
+++ b/framework/delibs/cmake/Defs.cmake
@@ -66,6 +66,7 @@
 DE_MAKE_ENV_BOOL("DE_OS" "OSX")
 DE_MAKE_ENV_BOOL("DE_OS" "ANDROID")
 DE_MAKE_ENV_BOOL("DE_OS" "IOS")
+DE_MAKE_ENV_BOOL("DE_OS" "FUCHSIA")
 
 # Prevent mixed compile with GCC and Clang
 if (NOT (CMAKE_C_COMPILER_ID MATCHES "GNU") EQUAL (CMAKE_CXX_COMPILER_ID MATCHES "GNU"))
diff --git a/framework/delibs/debase/deDefs.c b/framework/delibs/debase/deDefs.c
index 09c1348..1bc0bab 100644
--- a/framework/delibs/debase/deDefs.c
+++ b/framework/delibs/debase/deDefs.c
@@ -126,7 +126,7 @@
 	fprintf(stderr, "Assertion '%s' failed at %s:%d\n", reason, file, line);
 	raise(SIGTRAP);
 	abort();
-#elif (DE_OS == DE_OS_UNIX)
+#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_FUCHSIA)
 	__assert_fail(reason, file, (unsigned int)line, "Unknown function");
 #elif (DE_OS == DE_OS_QNX)
     __assert(reason, file, (unsigned int)line, "Unknown function");
diff --git a/framework/delibs/debase/deDefs.h b/framework/delibs/debase/deDefs.h
index 6289670..98ae34a 100644
--- a/framework/delibs/debase/deDefs.h
+++ b/framework/delibs/debase/deDefs.h
@@ -78,6 +78,7 @@
 #define DE_OS_SYMBIAN	6			/*!< Symbian OS									*/
 #define DE_OS_IOS		7			/*!< iOS										*/
 #define DE_OS_QNX       8           /*!< QNX                                        */
+#define DE_OS_FUCHSIA   9           /*!< Fuchsia									*/
 
 /* OS detection (set to one of DE_OS_*). */
 #if defined(DE_OS)
diff --git a/framework/delibs/decpp/deDirectoryIterator.hpp b/framework/delibs/decpp/deDirectoryIterator.hpp
index 6e5b04d..abd0327 100644
--- a/framework/delibs/decpp/deDirectoryIterator.hpp
+++ b/framework/delibs/decpp/deDirectoryIterator.hpp
@@ -31,7 +31,7 @@
 
 #if (DE_OS == DE_OS_WIN32 && DE_COMPILER == DE_COMPILER_MSC)
 #	define DE_DIRITER DE_DIRITER_WIN32
-#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_QNX) || (DE_OS == DE_OS_WIN32 && DE_COMPILER == DE_COMPILER_CLANG)
+#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_QNX) || (DE_OS == DE_OS_WIN32 && DE_COMPILER == DE_COMPILER_CLANG) || (DE_OS == DE_OS_FUCHSIA)
 #	define DE_DIRITER DE_DIRITER_POSIX
 #endif
 
diff --git a/framework/delibs/decpp/deFilePath.cpp b/framework/delibs/decpp/deFilePath.cpp
index f27098f..553bef7 100644
--- a/framework/delibs/decpp/deFilePath.cpp
+++ b/framework/delibs/decpp/deFilePath.cpp
@@ -246,7 +246,7 @@
 #if (DE_OS == DE_OS_WIN32)
 	if (!CreateDirectory(path, DE_NULL))
 		throw std::runtime_error("Failed to create directory");
-#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_QNX)
+#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_QNX) || (DE_OS == DE_OS_FUCHSIA)
 	if (mkdir(path, 0777) != 0)
 		throw std::runtime_error("Failed to create directory");
 #else
diff --git a/framework/delibs/dethread/CMakeLists.txt b/framework/delibs/dethread/CMakeLists.txt
index 6c14556..f25dfdc 100644
--- a/framework/delibs/dethread/CMakeLists.txt
+++ b/framework/delibs/dethread/CMakeLists.txt
@@ -47,7 +47,7 @@
 	set(DETHREAD_LIBS ${DETHREAD_LIBS} pthread)
 endif ()
 
-if (DE_OS_IS_ANDROID OR DE_OS_IS_OSX OR DE_OS_IS_IOS OR DE_OS_IS_QNX)
+if (DE_OS_IS_ANDROID OR DE_OS_IS_OSX OR DE_OS_IS_IOS OR DE_OS_IS_QNX OR DE_OS_IS_FUCHSIA)
 	add_definitions(-D_XOPEN_SOURCE=600)
 endif ()
 
diff --git a/framework/delibs/dethread/unix/deMutexUnix.c b/framework/delibs/dethread/unix/deMutexUnix.c
index 42ba42a..43d2823 100644
--- a/framework/delibs/dethread/unix/deMutexUnix.c
+++ b/framework/delibs/dethread/unix/deMutexUnix.c
@@ -23,7 +23,7 @@
 
 #include "deMutex.h"
 
-#if (DE_OS == DE_OS_UNIX || DE_OS == DE_OS_ANDROID || DE_OS == DE_OS_SYMBIAN || DE_OS == DE_OS_QNX || DE_OS == DE_OS_OSX || DE_OS == DE_OS_IOS)
+#if (DE_OS == DE_OS_UNIX || DE_OS == DE_OS_ANDROID || DE_OS == DE_OS_SYMBIAN || DE_OS == DE_OS_QNX || DE_OS == DE_OS_OSX || DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_FUCHSIA)
 
 #include "deMemory.h"
 
diff --git a/framework/delibs/dethread/unix/deSemaphoreUnix.c b/framework/delibs/dethread/unix/deSemaphoreUnix.c
index fae2b70..ca67ddc 100644
--- a/framework/delibs/dethread/unix/deSemaphoreUnix.c
+++ b/framework/delibs/dethread/unix/deSemaphoreUnix.c
@@ -23,7 +23,7 @@
 
 #include "deSemaphore.h"
 
-#if (DE_OS == DE_OS_UNIX || DE_OS == DE_OS_ANDROID || DE_OS == DE_OS_SYMBIAN || DE_OS == DE_OS_QNX)
+#if (DE_OS == DE_OS_UNIX || DE_OS == DE_OS_ANDROID || DE_OS == DE_OS_SYMBIAN || DE_OS == DE_OS_QNX) || (DE_OS == DE_OS_FUCHSIA)
 
 #include "deMemory.h"
 
diff --git a/framework/delibs/dethread/unix/deThreadLocalUnix.c b/framework/delibs/dethread/unix/deThreadLocalUnix.c
index c65be59..225cb5e 100644
--- a/framework/delibs/dethread/unix/deThreadLocalUnix.c
+++ b/framework/delibs/dethread/unix/deThreadLocalUnix.c
@@ -23,7 +23,7 @@
 
 #include "deThreadLocal.h"
 
-#if (DE_OS == DE_OS_UNIX || DE_OS == DE_OS_OSX || DE_OS == DE_OS_ANDROID || DE_OS == DE_OS_SYMBIAN || DE_OS == DE_OS_IOS || DE_OS == DE_OS_QNX)
+#if (DE_OS == DE_OS_UNIX || DE_OS == DE_OS_OSX || DE_OS == DE_OS_ANDROID || DE_OS == DE_OS_SYMBIAN || DE_OS == DE_OS_IOS || DE_OS == DE_OS_QNX || DE_OS == DE_OS_FUCHSIA)
 
 #if !defined(_XOPEN_SOURCE) || (_XOPEN_SOURCE < 500)
 #	error You are using too old posix API!
diff --git a/framework/delibs/dethread/unix/deThreadUnix.c b/framework/delibs/dethread/unix/deThreadUnix.c
index 4dd94fa..98b4cce 100644
--- a/framework/delibs/dethread/unix/deThreadUnix.c
+++ b/framework/delibs/dethread/unix/deThreadUnix.c
@@ -23,7 +23,7 @@
 
 #include "deThread.h"
 
-#if (DE_OS == DE_OS_UNIX || DE_OS == DE_OS_OSX || DE_OS == DE_OS_ANDROID || DE_OS == DE_OS_SYMBIAN || DE_OS == DE_OS_IOS || DE_OS == DE_OS_QNX)
+#if (DE_OS == DE_OS_UNIX || DE_OS == DE_OS_OSX || DE_OS == DE_OS_ANDROID || DE_OS == DE_OS_SYMBIAN || DE_OS == DE_OS_IOS || DE_OS == DE_OS_QNX || DE_OS == DE_OS_FUCHSIA)
 
 #include "deMemory.h"
 #include "deInt32.h"
diff --git a/framework/delibs/deutil/CMakeLists.txt b/framework/delibs/deutil/CMakeLists.txt
index fdfcb39..4e3e265 100644
--- a/framework/delibs/deutil/CMakeLists.txt
+++ b/framework/delibs/deutil/CMakeLists.txt
@@ -8,7 +8,6 @@
 	deDynamicLibrary.h
 	deFile.c
 	deFile.h
-	deProcess.c
 	deProcess.h
 	deSocket.c
 	deSocket.h
@@ -20,6 +19,14 @@
 
 set(DEUTIL_LIBS debase dethread depool)
 
+if (DE_OS_IS_FUCHSIA)
+	set(DEUTIL_SRCS ${DEUTIL_SRCS} deFuchsiaProcess.cc)
+	include_directories("${FUCHSIA_ROOT}/sdk/lib/fdio/include")
+	set(DEUTIL_LIBS ${DEUTIL_LIBS} ${FUCHSIA_LIBFDIO} zircon)
+else ()
+	set(DEUTIL_SRCS ${DEUTIL_SRCS} deProcess.c)
+endif ()
+
 include_directories(
 	../debase
 	../dethread
diff --git a/framework/delibs/deutil/deClock.c b/framework/delibs/deutil/deClock.c
index a7f6aa8..22d9db6 100644
--- a/framework/delibs/deutil/deClock.c
+++ b/framework/delibs/deutil/deClock.c
@@ -55,7 +55,7 @@
 		return count.QuadPart / (freq.QuadPart / 1000000);
 	}
 
-#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_QNX)
+#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_QNX) || (DE_OS == DE_OS_FUCHSIA)
 	struct timespec currTime;
 	clock_gettime(CLOCK_MONOTONIC, &currTime);
 	return (deUint64)currTime.tv_sec*1000000 + ((deUint64)currTime.tv_nsec/1000);
diff --git a/framework/delibs/deutil/deCommandLine.c b/framework/delibs/deutil/deCommandLine.c
index d0ebb1c..0c0bf96 100644
--- a/framework/delibs/deutil/deCommandLine.c
+++ b/framework/delibs/deutil/deCommandLine.c
@@ -118,7 +118,7 @@
 	{
 		deCommandLine* cmdLine = (deCommandLine*)deCalloc(sizeof(deCommandLine));
 
-		if (!cmdLine || !(cmdLine->args = (char**)deCalloc(sizeof(char*)*(size_t)CharPtrArray_getNumElements(args))))
+		if (!cmdLine || !(cmdLine->args = (char**)deCalloc(sizeof(char*)*(1 + (size_t)CharPtrArray_getNumElements(args)))))
 		{
 			deFree(cmdLine);
 			deFree(buf);
@@ -131,6 +131,7 @@
 
 		for (argNdx = 0; argNdx < cmdLine->numArgs; argNdx++)
 			cmdLine->args[argNdx] = CharPtrArray_get(args, argNdx);
+		cmdLine->args[cmdLine->numArgs] = 0;
 
 		deMemPool_destroy(tmpPool);
 		return cmdLine;
diff --git a/framework/delibs/deutil/deDynamicLibrary.c b/framework/delibs/deutil/deDynamicLibrary.c
index 8d350ae..e16839b 100644
--- a/framework/delibs/deutil/deDynamicLibrary.c
+++ b/framework/delibs/deutil/deDynamicLibrary.c
@@ -24,7 +24,7 @@
 #include "deDynamicLibrary.h"
 #include "deMemory.h"
 
-#if (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_QNX)
+#if (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_QNX) || (DE_OS == DE_OS_FUCHSIA)
 /* Posix implementation. */
 
 #include <dlfcn.h>
diff --git a/framework/delibs/deutil/deFile.c b/framework/delibs/deutil/deFile.c
index 8cba3ec..10c889d 100644
--- a/framework/delibs/deutil/deFile.c
+++ b/framework/delibs/deutil/deFile.c
@@ -24,7 +24,7 @@
 #include "deFile.h"
 #include "deMemory.h"
 
-#if (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_QNX)
+#if (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_QNX) || (DE_OS == DE_OS_FUCHSIA)
 
 #include <sys/types.h>
 #include <sys/stat.h>
diff --git a/framework/delibs/deutil/deFuchsiaProcess.cc b/framework/delibs/deutil/deFuchsiaProcess.cc
new file mode 100644
index 0000000..66eddaa
--- /dev/null
+++ b/framework/delibs/deutil/deFuchsiaProcess.cc
@@ -0,0 +1,281 @@
+// Copyright 2016 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.
+
+#include <assert.h>
+#include <lib/fdio/io.h>
+#include <lib/fdio/spawn.h>
+#include <memory.h>
+#include <memory>
+#include <string>
+#include <unistd.h>
+#include <vector>
+#include <zircon/process.h>
+#include <zircon/processargs.h>
+#include <zircon/syscalls.h>
+#include <zircon/syscalls/object.h>
+
+#include "deProcess.h"
+
+#if (DE_OS != DE_OS_FUCHSIA)
+#error DE_OS_FUCHSIA expected
+#endif
+
+#include "deCommandLine.h"
+
+struct deProcess_s {
+};
+
+class ModifiedEnviron {
+public:
+    explicit ModifiedEnviron(char** env)
+    {
+        for (size_t i = 0; env[i]; i++) {
+            envs_.push_back(env[i]);
+        }
+    }
+
+    void ReplacePwd(const char* working_directory)
+    {
+        assert(working_directory);
+        char pwd_string[strlen(working_directory) + 4 + 1];
+
+        sprintf(pwd_string, "PWD=%s", working_directory);
+        for (size_t i = 0; i < envs_.size(); i++) {
+            if (strstr(envs_[i].c_str(), "PWD=") == 0) {
+                envs_[i] = pwd_string;
+                return;
+            }
+        }
+        envs_.push_back(pwd_string);
+    }
+
+    // Return value must not outlive ModifiedEnviron. Invalidated if ReplacePwd
+    // is called.
+    std::vector<const char*> GetEnviron()
+    {
+        std::vector<const char*> env;
+        for (size_t i = 0; i < envs_.size(); i++) {
+            env.push_back(envs_[i].c_str());
+        }
+        env.push_back(nullptr);
+        return env;
+    }
+
+private:
+    std::vector<std::string> envs_;
+};
+
+class DeProcess : public deProcess_s {
+public:
+    static std::unique_ptr<DeProcess> Create()
+    {
+        return std::unique_ptr<DeProcess>(new DeProcess());
+    }
+
+    DeProcess() : proc_(ZX_HANDLE_INVALID), fstdin_(nullptr), fstdout_(nullptr), fstderr_(nullptr)
+    {
+    }
+
+    ~DeProcess()
+    {
+        if (proc_ != ZX_HANDLE_INVALID)
+            zx_handle_close(proc_);
+        closeStdIn();
+        closeStdOut();
+        closeStdErr();
+    }
+
+    bool start(const char* commandLine, const char* workingDirectory)
+    {
+        deCommandLine* cmdLine = deCommandLine_parse(commandLine);
+        assert(cmdLine->args[cmdLine->numArgs] == 0);
+        fdio_spawn_action_t spawn_actions[3];
+        int result;
+        int stdin_pipes[2];
+        result = pipe(stdin_pipes);
+        assert(result == 0);
+        int stdout_pipes[2];
+        result = pipe(stdout_pipes);
+        assert(result == 0);
+        int stderr_pipes[2];
+        result = pipe(stderr_pipes);
+        assert(result == 0);
+
+        spawn_actions[0].action = FDIO_SPAWN_ACTION_TRANSFER_FD;
+        spawn_actions[0].fd.local_fd = stdin_pipes[0];
+        spawn_actions[0].fd.target_fd = STDIN_FILENO;
+        fstdin_ = deFile_createFromHandle(stdin_pipes[1]);
+
+        spawn_actions[1].action = FDIO_SPAWN_ACTION_TRANSFER_FD;
+        spawn_actions[1].fd.local_fd = stdout_pipes[1];
+        spawn_actions[1].fd.target_fd = STDOUT_FILENO;
+        fstdout_ = deFile_createFromHandle(stdout_pipes[0]);
+
+#ifndef RAW_STDERR
+        spawn_actions[2].action = FDIO_SPAWN_ACTION_TRANSFER_FD;
+        spawn_actions[2].fd.local_fd = stderr_pipes[1];
+        spawn_actions[2].fd.target_fd = STDERR_FILENO;
+        fstderr_ = deFile_createFromHandle(stderr_pipes[0]);
+#else
+        // Printing to our stderr sometimes works better.
+        spawn_actions[2].action = FDIO_SPAWN_ACTION_CLONE_FD;
+        spawn_actions[2].fd.local_fd = STDERR_FILENO;
+        spawn_actions[2].fd.target_fd = STDERR_FILENO;
+        fstderr_ = deFile_createFromHandle(stderr_pipes[0]);
+#endif
+
+        ModifiedEnviron env(environ);
+        if (workingDirectory)
+            env.ReplacePwd(workingDirectory);
+
+        char err_msg_out[FDIO_SPAWN_ERR_MSG_MAX_LENGTH];
+
+        uint32_t spawn_flags = FDIO_SPAWN_CLONE_NAMESPACE | FDIO_SPAWN_CLONE_ENVIRON |
+                               FDIO_SPAWN_DEFAULT_LDSVC | FDIO_SPAWN_CLONE_JOB;
+        zx_status_t status = fdio_spawn_etc(
+            ZX_HANDLE_INVALID, spawn_flags, cmdLine->args[0], (const char* const*)&cmdLine->args[0],
+            env.GetEnviron().data(), 3, spawn_actions, &proc_, err_msg_out);
+
+        if (status != ZX_OK) {
+            fprintf(stderr, "fdio_spawn error: %d %s\n", status, err_msg_out);
+            return false;
+        }
+
+        return true;
+    }
+
+    bool IsRunning()
+    {
+        zx_signals_t pending = 0;
+        zx_status_t status = zx_object_wait_one(proc_, ZX_TASK_TERMINATED, 0, &pending);
+        if (pending & ZX_TASK_TERMINATED)
+            return false;
+        assert(status == ZX_ERR_TIMED_OUT);
+        return true;
+    }
+
+    bool Wait()
+    {
+        zx_status_t status = zx_object_wait_one(proc_, ZX_TASK_TERMINATED, ZX_TIME_INFINITE, NULL);
+        return status == ZX_OK;
+    }
+
+    int GetExitCode()
+    {
+        zx_info_process_t info;
+        zx_status_t status =
+            zx_object_get_info(proc_, ZX_INFO_PROCESS, &info, sizeof(info), NULL, NULL);
+        assert(status == ZX_OK);
+        return info.return_code;
+    }
+
+    static DeProcess* cast(deProcess* process) { return static_cast<DeProcess*>(process); }
+
+    deFile* fstdin() { return fstdin_; }
+    deFile* fstdout() { return fstdout_; }
+    deFile* fstderr() { return fstderr_; }
+
+    void closeStdIn()
+    {
+        if (fstdin_) {
+            deFile_destroy(fstdin_);
+            fstdin_ = nullptr;
+        }
+    }
+
+    void closeStdOut()
+    {
+        if (fstdout_) {
+            deFile_destroy(fstdout_);
+            fstdout_ = nullptr;
+        }
+    }
+
+    void closeStdErr()
+    {
+        if (fstderr_) {
+            deFile_destroy(fstderr_);
+            fstderr_ = nullptr;
+        }
+    }
+
+private:
+    zx_handle_t proc_;
+    deFile* fstdin_;
+    deFile* fstdout_;
+    deFile* fstderr_;
+};
+
+deProcess* deProcess_create()
+{
+    std::unique_ptr<DeProcess> process = DeProcess::Create();
+    if (!process)
+        return nullptr;
+
+    return process.release();
+}
+
+void deProcess_destroy(deProcess* process) { delete DeProcess::cast(process); }
+
+deBool deProcess_start(deProcess* de_process, const char* commandLine, const char* workingDirectory)
+{
+    (void)workingDirectory;
+
+    DeProcess* process = DeProcess::cast(de_process);
+
+    if (!process->start(commandLine, workingDirectory))
+        return false;
+
+    return true;
+}
+
+deBool deProcess_isRunning(deProcess* process) { return DeProcess::cast(process)->IsRunning(); }
+
+deBool deProcess_waitForFinish(deProcess* process)
+{
+    return DeProcess::cast(process)->Wait() ? DE_TRUE : DE_FALSE;
+}
+
+const char* deProcess_getLastError(const deProcess*) { return nullptr; }
+
+int deProcess_getExitCode(const deProcess* process)
+{
+    return DeProcess::cast((deProcess*)process)->GetExitCode();
+}
+
+deBool deProcess_terminate(deProcess*)
+{
+    printf("%s:%d Not implemented\n", __FILE__, __LINE__);
+    return DE_FALSE;
+}
+
+deBool deProcess_kill(deProcess*)
+{
+    printf("%s:%d Not implemented\n", __FILE__, __LINE__);
+    return DE_FALSE;
+}
+
+deFile* deProcess_getStdIn(deProcess* process) { return DeProcess::cast(process)->fstdin(); }
+
+deFile* deProcess_getStdOut(deProcess* process) { return DeProcess::cast(process)->fstdout(); }
+
+deFile* deProcess_getStdErr(deProcess* process) { return DeProcess::cast(process)->fstderr(); }
+
+deBool deProcess_closeStdIn(deProcess* process)
+{
+    DeProcess::cast(process)->closeStdIn();
+    return DE_TRUE;
+}
+
+deBool deProcess_closeStdOut(deProcess* process)
+{
+    DeProcess::cast(process)->closeStdOut();
+    return DE_TRUE;
+}
+
+deBool deProcess_closeStdErr(deProcess* process)
+{
+    DeProcess::cast(process)->closeStdErr();
+    return DE_TRUE;
+}
diff --git a/framework/delibs/deutil/deProcess.c b/framework/delibs/deutil/deProcess.c
index 2261478..fd9b0ca 100644
--- a/framework/delibs/deutil/deProcess.c
+++ b/framework/delibs/deutil/deProcess.c
@@ -422,6 +422,14 @@
 	return DE_TRUE;
 }
 
+#if (DE_OS == DE_OS_FUCHSIA)
+static deBool deProcess_sendSignal (deProcess* process, int sigNum)
+{
+	deProcess_setError(process, "Fuchsia doesn't support signals");
+	(void)sigNum;
+	return DE_FALSE;
+}
+#else
 static deBool deProcess_sendSignal (deProcess* process, int sigNum)
 {
 	if (process->state != PROCESSSTATE_RUNNING)
@@ -438,6 +446,7 @@
 		return DE_FALSE;
 	}
 }
+#endif
 
 deBool deProcess_terminate (deProcess* process)
 {
diff --git a/framework/delibs/deutil/deSocket.c b/framework/delibs/deutil/deSocket.c
index 97fc17e..75dca94 100644
--- a/framework/delibs/deutil/deSocket.c
+++ b/framework/delibs/deutil/deSocket.c
@@ -28,7 +28,7 @@
 
 #if (DE_OS == DE_OS_WIN32)
 #	define DE_USE_WINSOCK
-#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_QNX)
+#elif (DE_OS == DE_OS_UNIX) || (DE_OS == DE_OS_OSX) || (DE_OS == DE_OS_IOS) || (DE_OS == DE_OS_ANDROID) || (DE_OS == DE_OS_SYMBIAN) || (DE_OS == DE_OS_QNX) || (DE_OS == DE_OS_FUCHSIA)
 #	define DE_USE_BERKELEY_SOCKETS
 #else
 #	error Implement deSocket for your OS.
diff --git a/framework/delibs/deutil/deTimer.c b/framework/delibs/deutil/deTimer.c
index 02d51f8..64e09fb 100644
--- a/framework/delibs/deutil/deTimer.c
+++ b/framework/delibs/deutil/deTimer.c
@@ -336,14 +336,14 @@
 		if (sleepTime > 0)
 			deSleep(sleepTime);
 
+		if (thread->state == TIMERSTATE_DISABLED)
+			break;
+
 		lastCallback = (deInt64)deGetMicroseconds();
 		thread->callback(thread->callbackArg);
 		numCallbacks += 1;
 	}
 
-	/* State lock is held when loop is exited. */
-	deMutex_unlock(thread->lock);
-
 	if (destroy)
 	{
 		/* Destroy thread except thread->thread. */
diff --git a/framework/platform/CMakeLists.txt b/framework/platform/CMakeLists.txt
index 260950a..4ddfea4 100644
--- a/framework/platform/CMakeLists.txt
+++ b/framework/platform/CMakeLists.txt
@@ -138,6 +138,11 @@
 			osx/tcuOSXMetalView.hpp
 			)
 
+	elseif (DE_OS_IS_FUCHSIA)
+		set(TCUTIL_PLATFORM_SRCS
+			fuchsia/tcuFuchsiaPlatform.cpp
+			)
+
 	else ()
 		set(TCUTIL_PLATFORM_SRCS
 			vanilla/tcuVanillaPlatform.cpp
diff --git a/framework/platform/fuchsia/tcuFuchsiaPlatform.cpp b/framework/platform/fuchsia/tcuFuchsiaPlatform.cpp
new file mode 100644
index 0000000..1af5615
--- /dev/null
+++ b/framework/platform/fuchsia/tcuFuchsiaPlatform.cpp
@@ -0,0 +1,54 @@
+// Copyright 2016 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.
+
+#include "tcuFunctionLibrary.hpp"
+#include "tcuPlatform.hpp"
+#include "vkPlatform.hpp"
+
+class FuchsiaVkLibrary : public vk::Library {
+public:
+    FuchsiaVkLibrary()
+        : library_("libvulkan.so"), driver_(library_) {}
+
+    const vk::PlatformInterface& getPlatformInterface() const {
+        return driver_;
+    }
+    const tcu::FunctionLibrary&             getFunctionLibrary              (void) const
+    {
+            return library_;
+    }
+
+private:
+    const tcu::DynamicFunctionLibrary library_;
+    const vk::PlatformDriver driver_;
+};
+
+class FuchsiaVkPlatform : public vk::Platform {
+public:
+    vk::Library* createLibrary() const { return new FuchsiaVkLibrary(); }
+
+    void getMemoryLimits(vk::PlatformMemoryLimits& limits) const {
+        // Copied from tcuX11VulkanPlatform.cpp
+        limits.totalSystemMemory = 256 * 1024 * 1024;
+        limits.totalDeviceLocalMemory = 0; // unified memory
+        limits.deviceMemoryAllocationGranularity = 64 * 1024;
+        limits.devicePageSize = 4096;
+        limits.devicePageTableEntrySize = 8;
+        limits.devicePageTableHierarchyLevels = 3;
+    }
+};
+
+class FuchsiaPlatform : public tcu::Platform {
+public:
+    ~FuchsiaPlatform() {}
+
+    const vk::Platform& getVulkanPlatform() const { return vk_platform_; }
+
+private:
+    FuchsiaVkPlatform vk_platform_;
+};
+
+tcu::Platform* createPlatform() {
+    return new FuchsiaPlatform();
+}
diff --git a/fuchsia/BUILD.gn b/fuchsia/BUILD.gn
new file mode 100644
index 0000000..7455f94
--- /dev/null
+++ b/fuchsia/BUILD.gn
@@ -0,0 +1,196 @@
+# 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/build_id.gni")
+import("//build/components/fuchsia_test_package.gni")
+import("//build/package.gni")
+import("//src/graphics/lib/magma/gnbuild/magma.gni")
+import("resources.gni")
+
+# Only have a copy of the action in one toolchain to ensure we don't do build multiple times for no reason.
+if (current_toolchain == target_toolchain) {
+  action("build") {
+    script = "build.sh"
+    args = [
+      rebase_path(root_out_dir),
+      current_cpu,
+      host_cpu,
+      host_os,
+    ]
+
+    # This action writes to many files in the build-vulkancts directory. In addition, CMake reads
+    # from a ton of files everywhere on the system.
+    # TODO(fxbug.dev/71971): Fix.
+    hermetic_deps = false
+    deps = [
+      "//build/unification/lib/sysroot",
+      "//sdk:zircon_sysroot_export",
+      "//sdk/lib/fdio:fdio_sdk",
+      "//src/lib/vulkan",
+    ]
+
+    depfile = "$root_out_dir/build-vulkancts/vulkan-cts.d"
+    outputs = [
+      "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk",
+      "$root_out_dir/build-vulkancts/executor/executor",
+      "$root_out_dir/build-vulkancts/execserver/execserver",
+    ]
+  }
+
+  copy("copy") {
+    sources = [
+      "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk",
+    ]
+    outputs = [ "$root_build_dir/exe.unstripped/vulkan-cts" ]
+    deps = [ ":build" ]
+  }
+
+  action("strip") {
+    script = "//prebuilt/third_party/clang/${host_platform}/bin/llvm-objcopy"
+
+    args = [
+      "--strip-sections",
+      "build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk",
+      "vulkan-cts",
+    ]
+    outputs = [ "$root_build_dir/vulkan-cts" ]
+    sources = [
+      "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk",
+    ]
+    deps = [ ":build" ]
+  }
+
+  build_id_entry("vulkan_cts_build_id") {
+    deps = [
+      ":copy",
+      ":strip",
+    ]
+    debug = "$root_build_dir/exe.unstripped/vulkan-cts"
+    stripped = "$root_build_dir/vulkan-cts"
+  }
+}
+
+build_id_entry("executor_build_id") {
+  deps = [ ":build" ]
+  debug = "$root_out_dir/build-vulkancts/executor/executor"
+}
+
+build_id_entry("execserver_build_id") {
+  deps = [ ":build" ]
+  debug = "$root_out_dir/build-vulkancts/execserver/execserver"
+}
+
+# Add a label of "vulkan-cts" for each environment given in the list
+# of general hardware environments for magma tests. The label ensures
+# that the Vulkan CTS will not be run in the general test pipeline;
+# the label will be keyed on so that the suite may be run in a special
+# builder.
+hardware_envs = magma_hardware_envs + [ aemu_env ]
+labeled_hardware_envs = []
+foreach(env, hardware_envs) {
+  labeled_env = {
+  }  # Clear from previous iteration.
+  labeled_env = {
+    forward_variables_from(env, "*")
+    if (defined(tags)) {
+      tags += [ "vulkan-cts" ]
+    } else {
+      tags = [ "vulkan-cts" ]
+    }
+  }
+  labeled_hardware_envs += [ labeled_env ]
+}
+
+# C++ binaries implicitly use a set of shared libraries like ld.so.1. Adding them as deps to the
+# resource allows the fuchsia_package to discover and package them. This list is mainly assembled
+# from the variant_target template in //build/config/BUILDCONFIG.gn.
+cpp_binary_deps = [
+  "//build/toolchain/runtime:shared-libc++-deps",
+  "//build/unification/lib/sysroot:sysroot",
+  "//sdk/lib/fdio",
+  "//src/zircon/lib/zircon",
+  "//zircon/public/sysroot:cpp_binary_deps",
+  "//zircon/public/sysroot:crt1_deps",
+]
+
+resource("vulkan-cts-executable") {
+  deps = [ ":strip" ]
+  data_deps = [ "//src/lib/vulkan" ] + cpp_binary_deps
+
+  sources = [ "$root_build_dir/vulkan-cts" ]
+  outputs = [ "test/vulkan-cts" ]
+}
+
+resource_group("cts-resources") {
+  files = cts_resources
+}
+
+group("cts-deps") {
+  deps = [
+    ":cts-resources",
+    ":vulkan-cts-executable",
+  ]
+}
+
+group("vulkan-cts") {
+  testonly = true
+  if (target_cpu == "arm64") {
+    # This takes a while to build, so only try building it on ARM64, where it's necessary.
+    deps = [
+      ":vulkan-cts-zircon",
+      "split-cts:vulkan-cts-split",
+    ]
+  } else {
+    deps = [
+      ":vulkan-cts-unified",
+      ":vulkan-cts-zircon",
+    ]
+  }
+}
+
+# To run on device: run fuchsia-pkg://fuchsia.com/vulkan-cts#meta/vulkan-cts.cmx
+# The following command line args are provided by the cmx:
+# --deqp-caselist-file=/pkg/data/vk-default-1.1.3.txt --deqp-log-images=disable --deqp-log-shader-sources=disable --deqp-log-filename=/data/TestResults.qpa
+fuchsia_component("vulkan-cts-component") {
+  component_name = "vulkan-cts"
+  testonly = true
+  manifest = "meta/vulkan-cts.cmx"
+  deps = [ ":cts-deps" ]
+}
+
+fuchsia_component("vulkan-cts-zircon-component") {
+  testonly = true
+  component_name = "vulkan-cts-zircon"
+  manifest = "meta/vulkan-cts-zircon.cmx"
+  deps = [ ":cts-deps" ]
+}
+
+fuchsia_component("vulkan-cts-no-args") {
+  testonly = true
+  manifest = "meta/vulkan-cts-no-args.cmx"
+  deps = [ ":cts-deps" ]
+}
+
+fuchsia_test_package("vulkan-cts-unified") {
+  test_components = [ ":vulkan-cts-component" ]
+  deps = [ ":vulkan-cts-no-args" ]
+  test_specs = {
+    environments = labeled_hardware_envs
+  }
+}
+
+fuchsia_test_package("vulkan-cts-zircon") {
+  test_components = [ ":vulkan-cts-zircon-component" ]
+  test_specs = {
+    environments = labeled_hardware_envs
+  }
+}
+
+group("fuchsia") {
+  testonly = true
+  public_deps = [
+    ":vulkan-cts",
+    "//src/graphics/bundles:vulkan",
+  ]
+}
diff --git a/fuchsia/Fuchsia.cmake b/fuchsia/Fuchsia.cmake
new file mode 100644
index 0000000..4f68356
--- /dev/null
+++ b/fuchsia/Fuchsia.cmake
@@ -0,0 +1,17 @@
+# Copyright 2020 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.
+
+# Sometimes the toolchain file gets included without these definitions;
+# in that case, we can just ignore the invocation.
+if((DEFINED FUCHSIA_ROOT) AND (DEFINED FUCHSIA_COMPILER_TARGET) AND (DEFINED FUCHSIA_SYSTEM_PROCESSOR) AND (DEFINED FUCHSIA_SYSROOT))
+  include(${FUCHSIA_ROOT}/build/cmake/ToolchainCommon.cmake)
+
+  setup_toolchain_variables(
+    FUCHSIA_SOURCE_DIR "${FUCHSIA_ROOT}"
+    CLANG_COMPILER_TARGET "${FUCHSIA_COMPILER_TARGET}"
+    SYSROOT "${FUCHSIA_SYSROOT}"
+    TARGET_SYSTEM_NAME "Fuchsia"
+    TARGET_SYSTEM_PROCESSOR "${FUCHSIA_SYSTEM_PROCESSOR}"
+    TARGET_SYSTEM_VERSION "1.0")
+endif()
diff --git a/fuchsia/build.sh b/fuchsia/build.sh
new file mode 100755
index 0000000..97c30e9
--- /dev/null
+++ b/fuchsia/build.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# Copyright 2016 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.
+
+set -e
+root_out_dir=${1}
+target_cpu=${2}
+host_cpu=${3}
+host_os=${4}
+fuchsia_root=$root_out_dir/../..
+tools_path=$fuchsia_root/prebuilt/third_party
+cmake=$tools_path/cmake/$host_os-$host_cpu/bin/cmake
+ninja_path=$tools_path/ninja/$host_os-$host_cpu/ninja
+build_dir=$root_out_dir/build-vulkancts
+caselist_build_dir=$root_out_dir/build-vulkancts/cases-build
+caselist_out_dir=$root_out_dir/build-vulkancts/cases
+
+# This matches what Fuchsia's binaries are compiled with.
+c_cxx_flags="-fexperimental-relative-c++-abi-vtables"
+if [[ $target_cpu == "arm64" ]]; then
+    # Disable ShadowCallStack, since there seem to be some issues with the call
+	# stack after exceptions are caught.
+	# TODO(fxb/41627): Re-enable.
+	extra_args="-DFUCHSIA_SYSTEM_PROCESSOR=aarch64 -DFUCHSIA_COMPILER_TARGET=aarch64-fuchsia -DDE_CPU=DE_CPU_ARM_64 -DDE_PTR_SIZE=8"
+	c_cxx_flags="$c_cxx_flags -fno-sanitize=shadow-call-stack"
+else
+	extra_args="-DFUCHSIA_SYSTEM_PROCESSOR=x86_64 -DFUCHSIA_COMPILER_TARGET=x86_64-fuchsia"
+fi
+
+fuchsia_lib_path=$root_out_dir/$target_cpu-shared
+fuchsia_libfdio=$fuchsia_lib_path/libfdio.so
+
+sysroot=$root_out_dir/sdk/exported/zircon_sysroot/arch/$target_cpu/sysroot
+
+if [ ! -d "$sysroot" ]; then
+	echo "Can't find sysroot: $sysroot"
+	exit 1
+fi
+
+# Export buildtools' cmake to the scripts below.
+export PATH="$PATH:$(dirname $cmake)"
+
+pushd $fuchsia_root/third_party/vulkan-cts
+python external/fetch_sources.py
+popd
+
+mkdir -p $build_dir
+$fuchsia_root/third_party/vulkan-cts/fuchsia/gendepsfile.py $build_dir/vulkan-cts.d $fuchsia_root/third_party/vulkan-cts
+pushd $build_dir
+$cmake $fuchsia_root/third_party/vulkan-cts -GNinja -DCMAKE_BUILD_TYPE=RelWithAsserts -DCMAKE_MAKE_PROGRAM=$ninja_path -DFUCHSIA_SYSROOT=$sysroot -DCMAKE_TOOLCHAIN_FILE=$fuchsia_root/third_party/vulkan-cts/fuchsia/Fuchsia.cmake -DDE_OS=DE_OS_FUCHSIA -DDEQP_TARGET=fuchsia -DFUCHSIA_ROOT=$fuchsia_root -DFUCHSIA_LIB_DIR=$fuchsia_lib_path -DFUCHSIA_LIBFDIO=$fuchsia_libfdio $extra_args -DCMAKE_C_FLAGS="$c_cxx_flags" -DCMAKE_CXX_FLAGS="$c_cxx_flags"
+$ninja_path -v deqp-vk executor execserver
+
+# Ensure outputs are up to date so no-op build check doesn't complain.
+touch external/vulkancts/modules/vulkan/deqp-vk executor/executor execserver/execserver
+popd
diff --git a/fuchsia/gen.py b/fuchsia/gen.py
new file mode 100644
index 0000000..cdfd607
--- /dev/null
+++ b/fuchsia/gen.py
@@ -0,0 +1,177 @@
+# 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 os
+import glob
+import subprocess
+
+out_file = open("resources.gni", "w")
+
+out_file.write(
+    """\
+### NOTE: This file auto-generated from gen.py
+
+cts_resources = [
+  {
+    source = rebase_path("../external/vulkancts/mustpass/master/vk-default.txt")
+    dest = "data/vk-default.txt"
+  },
+""")
+
+files = subprocess.check_output(
+    ["find", "../external/vulkancts/data/vulkan", "-type", "f"])
+file_lines = files.splitlines()
+
+for file in sorted(file_lines):
+    file_split = file.split("/")
+    file_split = file_split[4:]
+    out_file.write("  {\n")
+    out_file.write('    source = rebase_path("%s")\n' % file)
+    out_file.write('    dest = "data/%s"\n' % "/".join(file_split))
+    out_file.write("  },\n")
+
+out_file.write("]\n")
+out_file.close()
+
+cts_version = "master"
+dirs_to_delete = ["data", "meta"]
+for dir_delete in dirs_to_delete:
+    assert (os.path.isdir(os.path.join("split-cts", dir_delete)))
+
+for f in glob.glob("split-cts/meta/*.cmx"):
+    os.remove(f)
+
+for f in glob.glob("split-cts/data/*.txt"):
+    os.remove(f)
+
+out_file = open("split-cts/BUILD.gn", "w")
+
+out_file.write(
+    """# Copyright 2019 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.
+# File generated by ../gen.py - do not modify.
+
+import("//build/package.gni")
+import("//src/graphics/lib/magma/gnbuild/magma.gni")
+import("../resources.gni")
+
+# Add a label of "vulkan-cts" for each environment given in the list
+# of general hardware environments for magma tests. The label ensures
+# that the Vulkan CTS will not be run in the general test pipeline;
+# the label will be keyed on so that the suite may be run in a special
+# builder.
+labeled_magma_hardware_envs = []
+foreach(env, magma_hardware_envs) {
+  labeled_env = {
+  }  # Clear from previous iteration.
+  labeled_env = {
+    forward_variables_from(env, "*")
+    if (defined(tags)) {
+      tags += [ "vulkan-cts" ]
+    } else {
+      tags = [ "vulkan-cts" ]
+    }
+  }
+  labeled_magma_hardware_envs += [ labeled_env ]
+}
+""")
+
+cts_file_list = open(
+    "../external/vulkancts/mustpass/%s/vk-default.txt" % cts_version,
+    "r").read().split("\n")
+
+chunk_size = 1000
+cts_chunks = []
+while cts_file_list:
+    first_section = cts_file_list[:chunk_size]
+    cts_file_list = cts_file_list[chunk_size:]
+    cts_chunks.append(first_section)
+
+component_list = []
+component_name_list = []
+for chunk_num in range(len(cts_chunks)):
+    component_name = "vulkan-cts-%03d" % chunk_num
+    out_file.write(
+        """
+resource("%s-data") {
+  sources = [ "data/vulkan-%03d.txt" ]
+  outputs = [ "data/vk-list-%03d.txt" ]
+}
+fuchsia_component("%s") {
+  testonly = true
+  manifest = "meta/%s.cmx"
+  deps = [
+    ":%s-data",
+    "..:cts-deps",
+  ]
+}
+""" % (
+            component_name, chunk_num, chunk_num, component_name,
+            component_name, component_name))
+    component_name_list.append('":' + component_name + '"')
+
+for current_index in range(len(cts_chunks)):
+    with open("split-cts/data/vulkan-%03d.txt" % current_index, "w") as f:
+        f.write("\n".join(cts_chunks[current_index]))
+    with open("split-cts/meta/vulkan-cts-%03d.cmx" % current_index, "w") as f:
+        f.write(
+            """{
+    "facets": {
+        "fuchsia.test": {
+            "system-services": [
+                "fuchsia.sysmem.Allocator",
+                "fuchsia.vulkan.loader.Loader"
+            ]
+        }
+    },
+    "program": {
+        "args": [
+            "--deqp-caselist-file=/pkg/data/vk-list-%03d.txt",
+            "--deqp-archive-dir=/pkg/data",
+            "--deqp-log-images=disable",
+            "--deqp-log-shader-sources=disable",
+            "--deqp-log-filename=/data/TestResults.qpa",
+            "--deqp-log-flush=disable",
+            "--deqp-shadercache-filename=/data/shadercache.bin"
+        ],
+        "binary": "test/vulkan-cts"
+    },
+    "sandbox": {
+        "dev": [
+            "class/framebuffer"
+        ],
+        "features": [
+            "isolated-persistent-storage",
+            "vulkan"
+        ],
+        "services": [
+            "fuchsia.logger.LogSink",
+            "fuchsia.sysmem.Allocator",
+            "fuchsia.tracing.provider.Registry",
+            "fuchsia.vulkan.loader.Loader"
+        ]
+    }
+}
+""" % (current_index))
+
+combined_component_list = "".join(
+    "    " + x + ",\n" for x in component_name_list)
+out_file.write(
+    """
+fuchsia_test_package("vulkan-cts-split") {
+  test_components = [
+%s  ]
+  test_specs = {
+    environments = labeled_magma_hardware_envs
+  }
+}
+
+group("split-cts") {
+  testonly = true
+  deps = [ ":vulkan-cts-split" ]
+}
+""" % (combined_component_list))
+
+out_file.close()
diff --git a/fuchsia/gendepsfile.py b/fuchsia/gendepsfile.py
new file mode 100755
index 0000000..3b069cf
--- /dev/null
+++ b/fuchsia/gendepsfile.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+# 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 argparse
+import os
+import subprocess
+import sys
+import pipes
+
+
+def main():
+  parser = argparse.ArgumentParser("Generate vulkan cts dep file")
+  parser.add_argument("depsfile")
+  parser.add_argument("input_dir")
+  args = parser.parse_args()
+
+  files = subprocess.check_output([
+      "find", args.input_dir, "-path", "*/.git", "-prune", "-o", "-type", "f",
+      "-print"
+  ])
+  file_lines = files.splitlines()
+
+  with open(args.depsfile, "w") as depsfile:
+    depsfile.write("build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk: ")
+    depsfile.write(" ".join(x.replace(' ', '\\ ') for x in file_lines))
+  return 0
+
+
+if __name__ == "__main__":
+  sys.exit(main())
diff --git a/fuchsia/meta/vulkan-cts-execserver.cmx b/fuchsia/meta/vulkan-cts-execserver.cmx
new file mode 100644
index 0000000..f5a8d6d
--- /dev/null
+++ b/fuchsia/meta/vulkan-cts-execserver.cmx
@@ -0,0 +1,19 @@
+{
+    "program": {
+        "binary": "bin/execserver"
+    },
+    "sandbox": {
+        "dev": [
+            "class/framebuffer"
+        ],
+        "features": [
+            "vulkan",
+            "isolated-persistent-storage"
+        ],
+        "services": [
+            "fuchsia.posix.socket.Provider",
+            "fuchsia.net.NameLookup",
+            "fuchsia.vulkan.loader.Loader"
+        ]
+    }
+}
diff --git a/fuchsia/meta/vulkan-cts-executor.cmx b/fuchsia/meta/vulkan-cts-executor.cmx
new file mode 100644
index 0000000..334cb5d
--- /dev/null
+++ b/fuchsia/meta/vulkan-cts-executor.cmx
@@ -0,0 +1,20 @@
+{
+    "program": {
+        "binary": "bin/executor"
+    },
+    "sandbox": {
+        "dev": [
+            "class/framebuffer"
+        ],
+        "features": [
+            "vulkan",
+            "isolated-persistent-storage"
+        ],
+        "services": [
+            "fuchsia.process.Launcher",
+            "fuchsia.posix.socket.Provider",
+            "fuchsia.net.NameLookup",
+            "fuchsia.vulkan.loader.Loader"
+        ]
+    }
+}
diff --git a/fuchsia/meta/vulkan-cts-no-args.cmx b/fuchsia/meta/vulkan-cts-no-args.cmx
new file mode 100644
index 0000000..09b1996
--- /dev/null
+++ b/fuchsia/meta/vulkan-cts-no-args.cmx
@@ -0,0 +1,29 @@
+{
+    "facets": {
+        "fuchsia.test": {
+            "system-services": [
+                "fuchsia.sysmem.Allocator",
+                "fuchsia.vulkan.loader.Loader"
+            ]
+        }
+    },
+    "program": {
+        "binary": "test/vulkan-cts"
+    },
+    "sandbox": {
+        "dev": [
+            "class/framebuffer"
+        ],
+        "features": [
+            "vulkan",
+            "isolated-persistent-storage",
+            "isolated-temp"
+        ],
+        "services": [
+            "fuchsia.sysmem.Allocator",
+            "fuchsia.tracing.provider.Registry",
+            "fuchsia.logger.LogSink",
+            "fuchsia.vulkan.loader.Loader"
+        ]
+    }
+}
diff --git a/fuchsia/meta/vulkan-cts-zircon.cmx b/fuchsia/meta/vulkan-cts-zircon.cmx
new file mode 100644
index 0000000..a41e481
--- /dev/null
+++ b/fuchsia/meta/vulkan-cts-zircon.cmx
@@ -0,0 +1,37 @@
+{
+    "facets": {
+        "fuchsia.test": {
+            "system-services": [
+                "fuchsia.sysmem.Allocator",
+                "fuchsia.vulkan.loader.Loader"
+            ]
+        }
+    },
+    "program": {
+        "args": [
+            "--deqp-case=*zircon*",
+            "--deqp-log-images=disable",
+            "--deqp-log-shader-sources=disable",
+            "--deqp-log-filename=/tmp/TestResults.qpa",
+            "--deqp-archive-dir=/pkg/data",
+            "--deqp-log-flush=disable"
+        ],
+        "binary": "test/vulkan-cts"
+    },
+    "sandbox": {
+        "dev": [
+            "class/framebuffer"
+        ],
+        "features": [
+            "isolated-persistent-storage",
+            "isolated-temp",
+            "vulkan"
+        ],
+        "services": [
+            "fuchsia.logger.LogSink",
+            "fuchsia.sysmem.Allocator",
+            "fuchsia.tracing.provider.Registry",
+            "fuchsia.vulkan.loader.Loader"
+        ]
+    }
+}
diff --git a/fuchsia/meta/vulkan-cts.cmx b/fuchsia/meta/vulkan-cts.cmx
new file mode 100644
index 0000000..121ca2f
--- /dev/null
+++ b/fuchsia/meta/vulkan-cts.cmx
@@ -0,0 +1,37 @@
+{
+    "facets": {
+        "fuchsia.test": {
+            "system-services": [
+                "fuchsia.sysmem.Allocator",
+                "fuchsia.vulkan.loader.Loader"
+            ]
+        }
+    },
+    "program": {
+        "args": [
+            "--deqp-caselist-file=/pkg/data/vk-default.txt",
+            "--deqp-log-images=disable",
+            "--deqp-log-shader-sources=disable",
+            "--deqp-log-filename=/data/TestResults.qpa",
+            "--deqp-archive-dir=/pkg/data",
+            "--deqp-log-flush=disable",
+            "--deqp-minimize-stdout=enable"
+        ],
+        "binary": "test/vulkan-cts"
+    },
+    "sandbox": {
+        "dev": [
+            "class/framebuffer"
+        ],
+        "features": [
+            "vulkan",
+            "isolated-persistent-storage"
+        ],
+        "services": [
+            "fuchsia.sysmem.Allocator",
+            "fuchsia.tracing.provider.Registry",
+            "fuchsia.logger.LogSink",
+            "fuchsia.vulkan.loader.Loader"
+        ]
+    }
+}
diff --git a/fuchsia/resources.gni b/fuchsia/resources.gni
new file mode 100644
index 0000000..10a77f8
--- /dev/null
+++ b/fuchsia/resources.gni
@@ -0,0 +1,3324 @@
+### NOTE: This file auto-generated from gen.py
+
+cts_resources = [
+  {
+    source = rebase_path("../external/vulkancts/mustpass/master/vk-default.txt")
+    dest = "data/vk-default.txt"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/.gitignore")
+    dest = "data/vulkan/.gitignore"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order.amber")
+    dest = "data/vulkan/amber/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/binding_model/dynamic_offset/shader_reuse_differing_layout_compute.amber")
+    dest = "data/vulkan/amber/binding_model/dynamic_offset/shader_reuse_differing_layout_compute.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics.amber")
+    dest = "data/vulkan/amber/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/combined_operations/negintdivand.amber")
+    dest = "data/vulkan/amber/combined_operations/negintdivand.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/combined_operations/notxor.amber")
+    dest = "data/vulkan/amber/combined_operations/notxor.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/compute/workgroup_memory_explicit_layout/copy_memory_basic.amber")
+    dest = "data/vulkan/amber/compute/workgroup_memory_explicit_layout/copy_memory_basic.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/compute/workgroup_memory_explicit_layout/copy_memory_two_invocations.amber")
+    dest = "data/vulkan/amber/compute/workgroup_memory_explicit_layout/copy_memory_two_invocations.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/compute/workgroup_memory_explicit_layout/copy_memory_variable_pointers.amber")
+    dest = "data/vulkan/amber/compute/workgroup_memory_explicit_layout/copy_memory_variable_pointers.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/compute/write_ssbo_array.amber")
+    dest = "data/vulkan/amber/compute/write_ssbo_array.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-highp-output-float.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-highp-output-float.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-highp-output-vec2.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-highp-output-vec2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-highp.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-highp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-mediump-output-float.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-mediump-output-float.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-mediump-output-vec2.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-mediump-output-vec2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-mediump.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b10g11r11-ufloat-pack32-mediump.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-highp-output-vec2.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-highp-output-vec2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-highp-output-vec3.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-highp-output-vec3.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-highp.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-highp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-mediump-output-vec2.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-mediump-output-vec2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-mediump-output-vec3.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-mediump-output-vec3.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-mediump.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/b8g8r8a8-unorm-mediump.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r16g16-sfloat-highp-output-float.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r16g16-sfloat-highp-output-float.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r16g16-sfloat-highp.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r16g16-sfloat-highp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r16g16-sfloat-mediump-output-float.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r16g16-sfloat-mediump-output-float.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r16g16-sfloat-mediump.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r16g16-sfloat-mediump.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r32-sfloat-highp.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r32-sfloat-highp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r32-sfloat-mediump.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r32-sfloat-mediump.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-highp-output-vec2.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-highp-output-vec2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-highp-output-vec3.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-highp-output-vec3.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-highp.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-highp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-mediump-output-vec2.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-mediump-output-vec2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-mediump-output-vec3.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-mediump-output-vec3.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-mediump.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r32g32b32a32-sfloat-mediump.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r8g8-uint-highp-output-uint.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r8g8-uint-highp-output-uint.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r8g8-uint-highp.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r8g8-uint-highp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r8g8-uint-mediump-output-uint.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r8g8-uint-mediump-output-uint.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/array/r8g8-uint-mediump.amber")
+    dest = "data/vulkan/amber/draw/output_location/array/r8g8-uint-mediump.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/shuffle/inputs-outputs-mod.amber")
+    dest = "data/vulkan/amber/draw/output_location/shuffle/inputs-outputs-mod.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/draw/output_location/shuffle/inputs-outputs.amber")
+    dest = "data/vulkan/amber/draw/output_location/shuffle/inputs-outputs.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/access-new-vector-inside-if-condition.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/access-new-vector-inside-if-condition.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/always-discarding-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/always-discarding-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/always-false-if-in-do-while.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/always-false-if-in-do-while.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/always-false-if-with-discard-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/always-false-if-with-discard-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/arr-value-set-to-arr-value-squared.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/arr-value-set-to-arr-value-squared.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/array-idx-multiplied-by-for-loop-idx.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/array-idx-multiplied-by-for-loop-idx.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/assign-array-value-to-another-array-2.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/assign-array-value-to-another-array-2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/assign-array-value-to-another-array.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/assign-array-value-to-another-array.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/barrier-in-loop-with-break.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/barrier-in-loop-with-break.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/break-in-do-while-with-nested-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/break-in-do-while-with-nested-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/call-function-with-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/call-function-with-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/call-if-while-switch.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/call-if-while-switch.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/color-set-in-for-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/color-set-in-for-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/color-write-in-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/color-write-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/complex-nested-loops-and-call.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/complex-nested-loops-and-call.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/conditional-return-in-infinite-while.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/conditional-return-in-infinite-while.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/continue-and-merge.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/continue-and-merge.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/control-flow-in-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/control-flow-in-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/control-flow-switch.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/control-flow-switch.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cosh-return-inf-unused.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cosh-return-inf-unused.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-access-array-dot.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-access-array-dot.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-analysis-reachable-from-many.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-analysis-reachable-from-many.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-acos-ldexp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-acos-ldexp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-determinant-for-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-determinant-for-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-determinant.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-determinant.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-mix-nan.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-mix-nan.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-mod-zero.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-mod-zero.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-negative-step-func.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-negative-step-func.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-reflect-denorm.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-reflect-denorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-sinh-negative-log2.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-sinh-negative-log2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-tanh.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-tanh.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-undefined-matrix-mul.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-undefined-matrix-mul.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-apfloat-unpackunorm-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-apfloat-unpackunorm-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-asin-undefined-smoothstep.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-asin-undefined-smoothstep.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-basic-block-discard-in-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-basic-block-discard-in-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-bitfieldExtract-undefined.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-bitfieldExtract-undefined.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-bitfieldinsert-undefined.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-bitfieldinsert-undefined.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-bitfieldreverse-left-shift-findmsb.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-bitfieldreverse-left-shift-findmsb.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-blockfrequency-several-for-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-blockfrequency-several-for-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-branch-probability-identity-matrix.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-branch-probability-identity-matrix.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-combine-and-or-xor-gt-lt.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-combine-and-or-xor-gt-lt.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-bitfieldinsert-div-one.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-bitfieldinsert-div-one.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-ceil-vec4.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-ceil-vec4.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp-inside-while.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp-inside-while.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp-max.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp-max.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp-min.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp-min.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp-vs-original.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp-vs-original.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-clamp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-det-identity.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-det-identity.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-dot-condition-true.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-dot-condition-true.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-dot-determinant.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-dot-determinant.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-gte-const-first.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-gte-const-first.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-min-as-loop-range.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-min-as-loop-range.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-mod-one-one-lte.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-mod-one-one-lte.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-pow-large-exp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-pow-large-exp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-same-condition.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-same-condition.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-sinh-inf.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-sinh-inf.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-const-folding-vector-shuffle.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-const-folding-vector-shuffle.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-constant-folding-atan-over-tanh.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-constant-folding-atan-over-tanh.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-constants-combine-add-sub.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-constants-combine-add-sub.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-constants-mix-uniform.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-constants-mix-uniform.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-copy-prop-arrays-func-argument.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-copy-prop-arrays-func-argument.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-copy-prop-arrays-no-stores.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-copy-prop-arrays-no-stores.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-copy-prop-arrays-param-uniform.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-copy-prop-arrays-param-uniform.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dag-combiner-findmsb-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dag-combiner-findmsb-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dag-combiner-glf_color.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dag-combiner-glf_color.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dag-combiner-increment-color.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dag-combiner-increment-color.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dag-combiner-neg-div-pow2.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dag-combiner-neg-div-pow2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dag-combiner-same-cond-nested.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dag-combiner-same-cond-nested.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dead-branch-func-return-arg.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dead-branch-func-return-arg.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-dead-code-unreachable-merge.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-dead-code-unreachable-merge.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-findlsb-division-by-zero.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-findlsb-division-by-zero.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-and-in-for-loop-range.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-and-in-for-loop-range.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-bitwise-and-zero.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-bitwise-and-zero.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-bitwise-or-full-mask.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-bitwise-or-full-mask.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-bitwise-xor.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-bitwise-xor.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-logical-and-const-variable.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-logical-and-const-variable.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-logical-and-constant.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-logical-and-constant.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-logical-or-constant.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-logical-or-constant.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-negate-min-int-value.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-negate-min-int-value.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-negate-variable.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-negate-variable.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-shift-gte32.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-shift-gte32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-shift-right-arithmetic.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-shift-right-arithmetic.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fold-switch-udiv.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fold-switch-udiv.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-clamp-cmp-const-first.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-clamp-cmp-const-first.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-merge-add-sub-uniform.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-merge-add-sub-uniform.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-construct-extract.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-construct-extract.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-dot-extract.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-dot-extract.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-dot-no-extract.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-dot-no-extract.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-add-sub.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-add-sub.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-div-mul.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-div-mul.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-divs.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-divs.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-mul-div.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-mul-div.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-sub-add.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-sub-add.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-sub-sub.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-sub-sub.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-var-sub.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-merge-var-sub.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-mix-uniform-weight.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-mix-uniform-weight.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-negate-div.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-negate-div.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-negate-sub.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-negate-sub.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-redundant-mix.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-redundant-mix.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-shuffle-extract.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-shuffle-extract.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-shuffle-mix.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-shuffle-mix.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-split-vector-init.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-split-vector-init.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-folding-rules-vec-mix-uniform.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-folding-rules-vec-mix-uniform.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fract-smoothstep-undefined.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fract-smoothstep-undefined.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-fragcoord-clamp-array-access.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-fragcoord-clamp-array-access.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-if-conversion-identical-branches.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-if-conversion-identical-branches.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inc-array-element-loop-lsb.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inc-array-element-loop-lsb.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inc-inside-switch-and-for.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inc-inside-switch-and-for.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-increment-inside-clamp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-increment-inside-clamp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inline-pass-empty-block.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inline-pass-empty-block.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inline-pass-nested-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inline-pass-nested-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inline-pass-return-in-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inline-pass-return-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inline-pass-unreachable-func.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inline-pass-unreachable-func.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-add-sub-determinant.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-add-sub-determinant.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-add-sub-increase-negative.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-add-sub-increase-negative.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-and-or-xor-for-bitfieldinsert.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-and-or-xor-for-bitfieldinsert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-and-or-xor-switch.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-and-or-xor-switch.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-combine-select-uaddcarry.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-combine-select-uaddcarry.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-isnan.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-isnan.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-ldexp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-ldexp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-while-modulo.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-compares-while-modulo.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-pack-unpack.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-pack-unpack.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-select-findlsb-uaddcarry.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-select-findlsb-uaddcarry.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-shifts-bitfield-bitcount.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-shifts-bitfield-bitcount.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-combine-vector-ops-asin.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-combine-vector-ops-asin.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-peephole-optimizer-acosh.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-peephole-optimizer-acosh.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-inst-value-tracking-inversesqrt.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-inst-value-tracking-inversesqrt.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instr-emitter-pow-asinh.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instr-emitter-pow-asinh.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instr-info-det-mat-min.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instr-info-det-mat-min.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-atanh-log-undefined.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-atanh-log-undefined.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-bit-shifting.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-bit-shifting.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-inclusive-or.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-inclusive-or.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-sqrt.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-sqrt.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instructions-first-value-phi.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instructions-first-value-phi.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instructions-for-if-less-than-equal.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-instructions-for-if-less-than-equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-integer-modulo-negative.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-integer-modulo-negative.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-intervalmap-set-stop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-intervalmap-set-stop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-ir-builder-constant-fold-inst-combine-calls-value-tracking-findmsb-incr-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-ir-builder-constant-fold-inst-combine-calls-value-tracking-findmsb-incr-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-irbuilder-matrix-cell-uniform.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-irbuilder-matrix-cell-uniform.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-liveinterval-different-dest.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-liveinterval-different-dest.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-loop-findmsb-findlsb.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-loop-findmsb-findlsb.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-machine-scheduler-for-if-pow.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-machine-scheduler-for-if-pow.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-machinevaluetype-one-iter-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-machinevaluetype-one-iter-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-max-clamp-same-minval.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-max-clamp-same-minval.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-mem-pass-sum-struct-members.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-mem-pass-sum-struct-members.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-mem-pass-unused-component.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-mem-pass-unused-component.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-merge-return-condition-twice.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-merge-return-condition-twice.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-mod-acosh.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-mod-acosh.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-modf-clamp-for.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-modf-clamp-for.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-modf-integer-to-private.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-modf-integer-to-private.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-not-clamp-matrix-access.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-not-clamp-matrix-access.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-optimize-phis-for.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-optimize-phis-for.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-pattern-match-signum.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-pattern-match-signum.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-pattern-match-single-bit.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-pattern-match-single-bit.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-pow-undefined.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-pow-undefined.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-reduce-load-array-replace-extract.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-reduce-load-array-replace-extract.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-reduce-load-replace-extract.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-reduce-load-replace-extract.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-replace-copy-object.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-replace-copy-object.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-return-after-do-while.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-return-after-do-while.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-scaled-number-nested-loops-array-access.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-scaled-number-nested-loops-array-access.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-scaled-number-nested-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-scaled-number-nested-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-selection-dag-assign-back-and-forth.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-selection-dag-assign-back-and-forth.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-selection-dag-inverse-clamp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-selection-dag-inverse-clamp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-selection-dag-lt-gt.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-selection-dag-lt-gt.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-selection-dag-same-cond-twice.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-selection-dag-same-cond-twice.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-set-vector-cos-fragcoord.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-set-vector-cos-fragcoord.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplification-unused-struct.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplification-unused-struct.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplification-while-inside-for.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplification-while-inside-for.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-clamp-max-itself.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-clamp-max-itself.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-combine-compares-max-max-one.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-combine-compares-max-max-one.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-component-uniform-idx.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-component-uniform-idx.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-div-by-uint-one.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-div-by-uint-one.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-for-bitwise-condition.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-for-bitwise-condition.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-ldexp-exponent-zero.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-ldexp-exponent-zero.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-max-multiplied-values.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-max-multiplied-values.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-modulo-1.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-modulo-1.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-mul-identity.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-mul-identity.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-not-less-than-neg.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-not-less-than-neg.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-right-shift-greater-than-zero.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-right-shift-greater-than-zero.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-select-fragcoord.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-select-fragcoord.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-sign-cosh.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-sign-cosh.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-simplify-smoothstep-undef.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-simplify-smoothstep-undef.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-single-block-elim-self-assign.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-single-block-elim-self-assign.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-single-store-elim-assume-store.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-single-store-elim-assume-store.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-sinh-ldexp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-sinh-ldexp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-ssa-rewrite-case-with-default.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-ssa-rewrite-case-with-default.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-tail-duplicator-for-for-for.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-tail-duplicator-for-for-for.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-tail-duplicator-infinite-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-tail-duplicator-infinite-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-target-lowering-dfdx-cos.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-target-lowering-dfdx-cos.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-types-return-in-main-never-hit.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-types-return-in-main-never-hit.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-undefined-inversesqrt-reflect.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-undefined-inversesqrt-reflect.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-val-cfg-case-fallthrough.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-val-cfg-case-fallthrough.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-tracking-const-dfdy.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-tracking-const-dfdy.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-tracking-constant-fold-refraction-dfxd-determinant.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-tracking-constant-fold-refraction-dfxd-determinant.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-tracking-inclusive-or.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-tracking-inclusive-or.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-tracking-known-nonzero.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-tracking-known-nonzero.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-tracking-max-uintbitstofloat.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-tracking-max-uintbitstofloat.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-value-tracking-uniform-incident.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-value-tracking-uniform-incident.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-vector-dce-inc-unused-comp.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-vector-dce-inc-unused-comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-vector-dce-unused-component.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-vector-dce-unused-component.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-vector-log2-cosh.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-vector-log2-cosh.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-wrap-op-kill-for-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-wrap-op-kill-for-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-wrap-op-kill-two-branches.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-wrap-op-kill-two-branches.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-determinant-exp-acos.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-determinant-exp-acos.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/create-color-in-do-while-for-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/create-color-in-do-while-for-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/dead-barriers-in-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/dead-barriers-in-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/dead-struct-init.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/dead-struct-init.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/disc-and-add-in-func-in-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/disc-and-add-in-func-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/discard-continue-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/discard-continue-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/discard-in-array-manipulating-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/discard-in-array-manipulating-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/discard-in-loop-in-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/discard-in-loop-in-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/discard-in-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/discard-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/discards-in-control-flow.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/discards-in-control-flow.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/do-while-false-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/do-while-false-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/do-while-if-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/do-while-if-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/do-while-loop-in-conditionals.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/do-while-loop-in-conditionals.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/do-while-with-always-true-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/do-while-with-always-true-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/do-while-with-if-condition.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/do-while-with-if-condition.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/early-return-and-barrier.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/early-return-and-barrier.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/find-msb-from-lsb.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/find-msb-from-lsb.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/flag-always-false-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/flag-always-false-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/for-condition-always-false.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/for-condition-always-false.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/for-loop-with-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/for-loop-with-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/for-with-ifs-and-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/for-with-ifs-and-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/frag-coord-func-call-and-ifs.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/frag-coord-func-call-and-ifs.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/fragcoord-control-flow-2.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/fragcoord-control-flow-2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/fragcoord-control-flow.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/fragcoord-control-flow.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/function-with-float-comparison.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/function-with-float-comparison.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/function-with-uniform-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/function-with-uniform-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/global-array-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/global-array-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/if-and-switch.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/if-and-switch.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/increment-value-in-nested-for-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/increment-value-in-nested-for-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/index.txt")
+    dest = "data/vulkan/amber/graphicsfuzz/index.txt"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/injection-switch-as-comparison.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/injection-switch-as-comparison.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/int-mat2-struct.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/int-mat2-struct.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/loop-call-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/loop-call-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/loop-dead-if-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/loop-dead-if-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/loop-nested-ifs.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/loop-nested-ifs.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/loops-breaks-returns.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/loops-breaks-returns.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/loops-ifs-continues-call.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/loops-ifs-continues-call.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/mat-array-deep-control-flow.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/mat-array-deep-control-flow.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/mat-array-distance.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/mat-array-distance.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/mat-mul-in-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/mat-mul-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/matrices-and-return-in-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/matrices-and-return-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/max-mix-conditional-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/max-mix-conditional-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/mix-floor-add.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/mix-floor-add.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/modf-gl-color.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/modf-gl-color.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/modf-temp-modf-color.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/modf-temp-modf-color.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/nested-for-break-mat-color.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/nested-for-break-mat-color.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/nested-for-loops-switch-fallthrough.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/nested-for-loops-switch-fallthrough.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/nested-for-loops-with-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/nested-for-loops-with-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/nested-ifs-and-return-in-for-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/nested-ifs-and-return-in-for-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/nested-loops-switch.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/nested-loops-switch.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/nested-switch-break-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/nested-switch-break-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/one-sized-array.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/one-sized-array.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/pow-vec4.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/pow-vec4.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/return-before-writing-wrong-color.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/return-before-writing-wrong-color.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/return-float-from-while-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/return-float-from-while-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/return-in-loop-in-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/return-in-loop-in-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/return-inside-loop-in-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/return-inside-loop-in-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/returned-boolean-in-vector.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/returned-boolean-in-vector.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/set-color-in-one-iteration-while-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/set-color-in-one-iteration-while-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/similar-nested-ifs.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/similar-nested-ifs.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/smoothstep-after-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/smoothstep-after-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-access-chains.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-access-chains.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-composite-phi.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-composite-phi.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-composite2.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-composite2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-composites.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-composites.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-copy-object.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-copy-object.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-dead-break-and-unroll.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-dead-break-and-unroll.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-declare-bvec4.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-declare-bvec4.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-double-branch-to-same-block.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-double-branch-to-same-block.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-double-branch-to-same-block2.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-double-branch-to-same-block2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-double-branch-to-same-block3.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-double-branch-to-same-block3.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-load-from-frag-color.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-load-from-frag-color.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-null-in-phi-and-unroll.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-null-in-phi-and-unroll.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-maze-flatten-copy-composite.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-maze-flatten-copy-composite.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-orbit-O-mutate-variable.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-orbit-O-mutate-variable.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-quicksort-mat-func-param.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-quicksort-mat-func-param.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-mergesort-for-always-false-if-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-mergesort-for-always-false-if-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-mergesort-reversed-for-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-mergesort-reversed-for-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-quicksort-for-loop-with-injection.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-quicksort-for-loop-with-injection.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-quicksort-if-false-else-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-quicksort-if-false-else-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-quicksort-max-value-as-index.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-quicksort-max-value-as-index.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-triangle-array-nested-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-triangle-array-nested-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/struct-and-unreachable-infinite-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/struct-and-unreachable-infinite-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/struct-array-data-as-loop-iterator.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/struct-array-data-as-loop-iterator.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/struct-controlled-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/struct-controlled-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/struct-used-as-temporary.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/struct-used-as-temporary.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-case-with-undefined-expression.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/switch-case-with-undefined-expression.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-if-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/switch-if-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-inside-while-always-return.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/switch-inside-while-always-return.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-loop-switch-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/switch-loop-switch-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-with-empty-if-false.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/switch-with-empty-if-false.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-with-fall-through-cases.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/switch-with-fall-through-cases.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/swizzle-struct-init-min.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/swizzle-struct-init-min.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/transpose-rectangular-matrix.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/transpose-rectangular-matrix.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-2-iteration-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-2-iteration-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-for-loops-with-barrier-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-for-loops-with-barrier-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-loops-mat-add.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-loops-mat-add.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-loops-matrix.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-loops-matrix.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-loops-set-struct.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-loops-set-struct.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-loops-with-break.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-loops-with-break.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-nested-do-whiles.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-nested-do-whiles.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-nested-for-loops-with-returns.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-nested-for-loops-with-returns.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/two-nested-infinite-loops-discard.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/two-nested-infinite-loops-discard.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/undefined-assign-in-infinite-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/undefined-assign-in-infinite-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/undefined-integer-in-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/undefined-integer-in-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/uninit-element-cast-in-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/uninit-element-cast-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/uninitialized-var-decrement-and-add.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/uninitialized-var-decrement-and-add.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/unreachable-barrier-in-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/unreachable-barrier-in-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/unreachable-continue-statement.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/unreachable-continue-statement.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/unreachable-discard-statement-in-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/unreachable-discard-statement-in-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/unreachable-discard-statement.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/unreachable-discard-statement.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/unreachable-loops-in-switch.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/unreachable-loops-in-switch.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/unreachable-loops.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/unreachable-loops.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/unreachable-return-in-loop.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/unreachable-return-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/unreachable-switch-case-with-discards.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/unreachable-switch-case-with-discards.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/uv-value-comparison-as-boolean.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/uv-value-comparison-as-boolean.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/vec2-modf.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/vec2-modf.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/vector-values-multiplied-by-fragcoord.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/vector-values-multiplied-by-fragcoord.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/vectors-and-discard-in-function.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/vectors-and-discard-in-function.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/while-function-always-false.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/while-function-always-false.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/while-inside-switch.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/while-inside-switch.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/write-before-break.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/write-before-break.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/write-red-after-search.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/write-red-after-search.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/write-red-in-loop-nest.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/write-red-in-loop-nest.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/graphicsfuzz/wrong-color-in-always-false-if.amber")
+    dest = "data/vulkan/amber/graphicsfuzz/wrong-color-in-always-false-if.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/non_robust_buffer_access/unexecuted_oob_overflow.amber")
+    dest = "data/vulkan/amber/non_robust_buffer_access/unexecuted_oob_overflow.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/non_robust_buffer_access/unexecuted_oob_underflow.amber")
+    dest = "data/vulkan/amber/non_robust_buffer_access/unexecuted_oob_underflow.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/pipeline/position_to_ssbo.amber")
+    dest = "data/vulkan/amber/pipeline/position_to_ssbo.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/pipeline/primitive_id_from_tess.amber")
+    dest = "data/vulkan/amber/pipeline/primitive_id_from_tess.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/line_list.amber")
+    dest = "data/vulkan/amber/provoking_vertex/line_list.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/line_list_with_adjacency.amber")
+    dest = "data/vulkan/amber/provoking_vertex/line_list_with_adjacency.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/line_strip.amber")
+    dest = "data/vulkan/amber/provoking_vertex/line_strip.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/line_strip_with_adjacency.amber")
+    dest = "data/vulkan/amber/provoking_vertex/line_strip_with_adjacency.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/triangle_fan.amber")
+    dest = "data/vulkan/amber/provoking_vertex/triangle_fan.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/triangle_list.amber")
+    dest = "data/vulkan/amber/provoking_vertex/triangle_list.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/triangle_list_with_adjacency.amber")
+    dest = "data/vulkan/amber/provoking_vertex/triangle_list_with_adjacency.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/triangle_strip.amber")
+    dest = "data/vulkan/amber/provoking_vertex/triangle_strip.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/provoking_vertex/triangle_strip_with_adjacency.amber")
+    dest = "data/vulkan/amber/provoking_vertex/triangle_strip_with_adjacency.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d16_unorm.amber")
+    dest = "data/vulkan/amber/rasterization/depth_bias/d16_unorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d24_unorm.amber")
+    dest = "data/vulkan/amber/rasterization/depth_bias/d24_unorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d32_sfloat.amber")
+    dest = "data/vulkan/amber/rasterization/depth_bias/d32_sfloat.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/rasterization/line_continuity/line-strip.amber")
+    dest = "data/vulkan/amber/rasterization/line_continuity/line-strip.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/rasterization/line_continuity/polygon-mode-lines.amber")
+    dest = "data/vulkan/amber/rasterization/line_continuity/polygon-mode-lines.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/ptr_access_chain/workgroup.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/ptr_access_chain/workgroup.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/ptr_access_chain/workgroup_bad_stride.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/ptr_access_chain/workgroup_bad_stride.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/ptr_access_chain/workgroup_no_stride.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/ptr_access_chain/workgroup_no_stride.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_int_findumsb.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_int_findumsb.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_int_umax.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_int_umax.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_int_umin.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_int_umin.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_findsmsb.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_findsmsb.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_ssign.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/glsl_uint_ssign.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_atomicumax.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_atomicumax.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_atomicumin.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_atomicumin.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_ugreaterthan.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_ugreaterthan.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_ugreaterthanequal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_ugreaterthanequal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_ulessthan.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_ulessthan.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_ulessthanequal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/int_ulessthanequal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_atomicsmax.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_atomicsmax.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_atomicsmin.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_atomicsmin.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_sdiv.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_sdiv.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_smulextended.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_smulextended.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_snegate.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_snegate.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_umulextended.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/signed_op/uint_umulextended.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/switch/switch-case-to-merge-block.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/switch/switch-case-to-merge-block.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/undef/undefined_constant_composite.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/undef/undefined_constant_composite.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/undef/undefined_spec_constant_composite.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/undef/undefined_spec_constant_composite.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/unreachable/unreachable-switch-merge-in-loop.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/unreachable/unreachable-switch-merge-in-loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/variable_pointer/dynamic_offset/select_descriptor_array.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/variable_pointer/dynamic_offset/select_descriptor_array.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/compute/vector_shuffle/vector_shuffle.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/compute/vector_shuffle/vector_shuffle.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_comp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_geom.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_geom.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_tesc.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_tesc.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_tese.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_tese.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_vert.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_1_vert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_comp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_frag.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_frag.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_geom.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_geom.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_tesc.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_tesc.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_tese.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_tese.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_vert.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_2_vert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_comp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_frag.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_frag.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_geom.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_geom.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_tesc.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_tesc.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_tese.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_tese.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_vert.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_3_vert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_comp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_frag.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_frag.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_geom.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_geom.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_tesc.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_tesc.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_tese.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_tese.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_vert.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/frexpstruct_4_vert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/grid_vertices.txt")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/grid_vertices.txt"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/input.txt")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/input.txt"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_comp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_frag.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_frag.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_geom.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_geom.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_tesc.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_tesc.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_tese.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_tese.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_vert.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_1_vert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_comp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_frag.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_frag.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_geom.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_geom.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_tesc.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_tesc.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_tese.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_tese.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_vert.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_2_vert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_comp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_frag.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_frag.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_geom.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_geom.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_tesc.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_tesc.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_tese.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_tese.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_vert.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_3_vert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_comp.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_comp.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_frag.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_frag.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_geom.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_geom.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_tesc.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_tesc.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_tese.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_tese.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_vert.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/float32/comparison/modfstruct_4_vert.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/function_params/sampler_param.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/function_params/sampler_param.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_pc_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_pc_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_ssbo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_ssbo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_ubo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_ubo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_workgroup_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/comp_workgroup_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_pc_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_pc_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_ssbo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_ssbo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_ubo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/frag_ubo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_pc_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_pc_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_ssbo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_ssbo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_ubo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/geom_ubo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_pc_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_pc_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_ssbo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_ssbo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_ubo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_con_ubo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_pc_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_pc_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_ssbo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_ssbo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_ubo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/tess_eval_ubo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_pc_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_pc_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_ssbo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_ssbo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_ubo_entry_point.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/entrypoint/vert_ubo_entry_point.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/counter_buffer.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/counter_buffer.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/member_decorate_string.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/member_decorate_string.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/iteration_multiple.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/iteration_multiple.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/max_iterations.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/max_iterations.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/min_iterations.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/min_iterations.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/partial_count.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/partial_count.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/peel_count.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/loop_control/peel_count.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/function_2_nonwritable.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/function_2_nonwritable.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/function_nonwritable.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/function_nonwritable.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/non_main_function_nonwritable.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/non_main_function_nonwritable.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/private_2_nonwritable.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/private_2_nonwritable.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/private_nonwritable.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/nonwritable/private_nonwritable.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/different_matrix_layout.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/different_matrix_layout.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/different_matrix_strides.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/different_matrix_strides.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/nested_arrays_different_inner_stride.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/nested_arrays_different_inner_stride.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/nested_arrays_different_outer_stride.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/nested_arrays_different_outer_stride.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/nested_arrays_different_strides.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/nested_arrays_different_strides.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/same_array_two_ids.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/same_array_two_ids.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/same_struct_two_ids.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/same_struct_two_ids.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/ssbo_to_ubo.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/ssbo_to_ubo.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/two_arrays_different_stride_1.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/two_arrays_different_stride_1.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/two_arrays_different_stride_2.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/two_arrays_different_stride_2.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/ubo_to_ssbo.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopylogical/ubo_to_ssbo.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/different_alignments.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/different_alignments.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/no_source_access_operands.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/no_source_access_operands.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/no_target_access_operands.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opcopymemory/no_target_access_operands.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/ssbo_comparisons_diff.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/ssbo_comparisons_diff.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_ssbo_2_diff.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_ssbo_2_diff.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_ssbo_diff.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_ssbo_diff.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_wg_diff.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/variable_pointers_vars_wg_diff.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/wg_comparisons_diff.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/wg_comparisons_diff.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/different_ssbos_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/different_ssbos_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/different_wgs_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/different_wgs_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/null_comparisons_ssbo_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/null_comparisons_ssbo_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/null_comparisons_wg_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/null_comparisons_wg_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/ssbo_comparisons_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/ssbo_comparisons_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_ssbo_2_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_ssbo_2_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_ssbo_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_ssbo_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_vars_ssbo_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_vars_ssbo_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_vars_wg_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_vars_wg_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_wg_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/variable_pointers_wg_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/wg_comparisons_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/wg_comparisons_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/different_ssbos_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/different_ssbos_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/different_wgs_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/different_wgs_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/null_comparisons_ssbo_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/null_comparisons_ssbo_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/null_comparisons_wg_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/null_comparisons_wg_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/ssbo_comparisons_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/ssbo_comparisons_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_ssbo_2_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_ssbo_2_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_ssbo_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_ssbo_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_vars_ssbo_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_vars_ssbo_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_vars_wg_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_vars_wg_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_wg_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/variable_pointers_wg_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/wg_comparisons_not_equal.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/wg_comparisons_not_equal.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/array_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/array_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/array_stride_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/array_stride_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/nested_array_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/nested_array_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/nested_struct_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/nested_struct_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/scalar_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/scalar_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/ssbo_pointers_2_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/ssbo_pointers_2_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/ssbo_pointers_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/ssbo_pointers_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/struct_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/struct_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/vector_element_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/vector_element_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/vector_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/vector_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/wg_pointers_2_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/wg_pointers_2_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/wg_pointers_select.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opselect/wg_pointers_select.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_16.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_16.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_16_64_bit.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_16_64_bit.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_251658240_64_bits.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_251658240_64_bits.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_61440.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_extend_61440.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_16.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_16.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_16_64_bit.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_16_64_bit.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_983040.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_truncate_983040.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_zero_extend_n4096.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uconvert/spec_const_opt_zero_extend_n4096.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/partially_active_uniform_id.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/partially_active_uniform_id.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/subgroup_cfg_uniform_id.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/subgroup_cfg_uniform_id.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/subgroup_uniform.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/subgroup_uniform.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/workgroup_cfg_uniform_id.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/workgroup_cfg_uniform_id.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/workgroup_uniform.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/uniformid/workgroup_uniform.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/wrap/no_signed_wrap.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/wrap/no_signed_wrap.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/wrap/no_unsigned_wrap.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/spirv1p4/wrap/no_unsigned_wrap.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_image_atomic.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_image_atomic.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_image_store.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_image_store.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_null_pointer_load.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_null_pointer_load.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_null_pointer_store.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_null_pointer_store.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_out_of_bounds_atomic.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_out_of_bounds_atomic.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_out_of_bounds_load.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_out_of_bounds_load.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_out_of_bounds_store.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_out_of_bounds_store.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_output_write.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_output_write.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_ssbo_atomic.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_ssbo_atomic.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_ssbo_store.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/no_ssbo_store.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/ssbo_atomic_before_terminate.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/ssbo_atomic_before_terminate.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/subgroup_ballot.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/subgroup_ballot.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/subgroup_vote.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/subgroup_vote.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/terminate_loop.amber")
+    dest = "data/vulkan/amber/spirv_assembly/instruction/terminate_invocation/terminate_loop.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/a2b10g10r10-snorm-pack32.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/a2b10g10r10-snorm-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/a2r10g10b10-snorm-pack32.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/a2r10g10b10-snorm-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/a8b8g8r8-snorm-pack32.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/a8b8g8r8-snorm-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/b8g8r8-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/b8g8r8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/b8g8r8a8-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/b8g8r8a8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/r16-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/r16-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/r16g16-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/r16g16-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/r16g16b16-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/r16g16b16-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/r16g16b16a16-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/r16g16b16a16-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/r8-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/r8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/r8g8-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/r8g8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/r8g8b8-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/r8g8b8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/snorm_clamp/r8g8b8a8-snorm.amber")
+    dest = "data/vulkan/amber/texture/conversion/snorm_clamp/r8g8b8a8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/conversion/ufloat_negative_values/b10g11r11-ufloat-pack32.amber")
+    dest = "data/vulkan/amber/texture/conversion/ufloat_negative_values/b10g11r11-ufloat-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/multisample/atomic/storage_image_r32i.amber")
+    dest = "data/vulkan/amber/texture/multisample/atomic/storage_image_r32i.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/multisample/atomic/storage_image_r32ui.amber")
+    dest = "data/vulkan/amber/texture/multisample/atomic/storage_image_r32ui.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/subgroup_lod/texel_fetch.amber")
+    dest = "data/vulkan/amber/texture/subgroup_lod/texel_fetch.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/subgroup_lod/texture_grad.amber")
+    dest = "data/vulkan/amber/texture/subgroup_lod/texture_grad.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/subgroup_lod/texture_lod.amber")
+    dest = "data/vulkan/amber/texture/subgroup_lod/texture_lod.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/packed/a2b10g10r10-uint-pack32.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/packed/a2b10g10r10-uint-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/packed/a2b10g10r10-unorm-pack32.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/packed/a2b10g10r10-unorm-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/packed/a8b8g8r8-sint-pack32.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/packed/a8b8g8r8-sint-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/packed/a8b8g8r8-snorm-pack32.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/packed/a8b8g8r8-snorm-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/packed/a8b8g8r8-uint-pack32.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/packed/a8b8g8r8-uint-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/packed/a8b8g8r8-unorm-pack32.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/packed/a8b8g8r8-unorm-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/packed/b10g11r11-ufloat-pack32.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/packed/b10g11r11-ufloat-pack32.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/b8g8r8-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/b8g8r8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/b8g8r8a8-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/b8g8r8a8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/r16-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/r16-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/r16g16-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/r16g16-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/r16g16b16-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/r16g16b16-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/r16g16b16a16-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/r16g16b16a16-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/r8-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/r8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/r8g8-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/r8g8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/r8g8b8-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/r8g8b8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_buffer/uniform/snorm/r8g8b8a8-snorm.amber")
+    dest = "data/vulkan/amber/texture/texel_buffer/uniform/snorm/r8g8b8a8-snorm.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/amber/texture/texel_offset/texel_offset.amber")
+    dest = "data/vulkan/amber/texture/texel_offset/texel_offset.amber"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/brick.png")
+    dest = "data/vulkan/data/brick.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/device_group/sphere.png")
+    dest = "data/vulkan/data/device_group/sphere.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/device_group/spherefilled.png")
+    dest = "data/vulkan/data/device_group/spherefilled.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip.png")
+    dest = "data/vulkan/data/geometry/line_strip.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_adjacency.png")
+    dest = "data/vulkan/data/geometry/line_strip_adjacency.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_0.png")
+    dest = "data/vulkan/data/geometry/line_strip_emit_0_end_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_1.png")
+    dest = "data/vulkan/data/geometry/line_strip_emit_0_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_0_end_2.png")
+    dest = "data/vulkan/data/geometry/line_strip_emit_0_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_1_end_1.png")
+    dest = "data/vulkan/data/geometry/line_strip_emit_1_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_1_end_2.png")
+    dest = "data/vulkan/data/geometry/line_strip_emit_1_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_1.png")
+    dest = "data/vulkan/data/geometry/line_strip_emit_2_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_2.png")
+    dest = "data/vulkan/data/geometry/line_strip_emit_2_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png")
+    dest = "data/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines.png")
+    dest = "data/vulkan/data/geometry/lines.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_adjacency.png")
+    dest = "data/vulkan/data/geometry/lines_adjacency.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_to_points.png")
+    dest = "data/vulkan/data/geometry/lines_to_points.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/lines_to_triangles.png")
+    dest = "data/vulkan/data/geometry/lines_to_triangles.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_0_and_128.png")
+    dest = "data/vulkan/data/geometry/output_0_and_128.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_10.png")
+    dest = "data/vulkan/data/geometry/output_10.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_100_and_10.png")
+    dest = "data/vulkan/data/geometry/output_100_and_10.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_10_and_100.png")
+    dest = "data/vulkan/data/geometry/output_10_and_100.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_128.png")
+    dest = "data/vulkan/data/geometry/output_128.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_128_and_0.png")
+    dest = "data/vulkan/data/geometry/output_128_and_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_max.png")
+    dest = "data/vulkan/data/geometry/output_max.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_attribute.png")
+    dest = "data/vulkan/data/geometry/output_vary_by_attribute.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_attribute_instancing.png")
+    dest = "data/vulkan/data/geometry/output_vary_by_attribute_instancing.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_texture.png")
+    dest = "data/vulkan/data/geometry/output_vary_by_texture.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_texture_instancing.png")
+    dest = "data/vulkan/data/geometry/output_vary_by_texture_instancing.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_uniform.png")
+    dest = "data/vulkan/data/geometry/output_vary_by_uniform.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/output_vary_by_uniform_instancing.png")
+    dest = "data/vulkan/data/geometry/output_vary_by_uniform_instancing.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/point_size.png")
+    dest = "data/vulkan/data/geometry/point_size.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/points.png")
+    dest = "data/vulkan/data/geometry/points.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_0.png")
+    dest = "data/vulkan/data/geometry/points_emit_0_end_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_1.png")
+    dest = "data/vulkan/data/geometry/points_emit_0_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_0_end_2.png")
+    dest = "data/vulkan/data/geometry/points_emit_0_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_1_end_1.png")
+    dest = "data/vulkan/data/geometry/points_emit_1_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_emit_1_end_2.png")
+    dest = "data/vulkan/data/geometry/points_emit_1_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_to_lines.png")
+    dest = "data/vulkan/data/geometry/points_to_lines.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/points_to_triangles.png")
+    dest = "data/vulkan/data/geometry/points_to_triangles.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id.png")
+    dest = "data/vulkan/data/geometry/primitive_id.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id_in.png")
+    dest = "data/vulkan/data/geometry/primitive_id_in.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/primitive_id_in_restarted.png")
+    dest = "data/vulkan/data/geometry/primitive_id_in_restarted.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_fan.png")
+    dest = "data/vulkan/data/geometry/triangle_fan.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip.png")
+    dest = "data/vulkan/data/geometry/triangle_strip.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_0.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_0_end_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_1.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_0_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_0_end_2.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_0_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_1_end_1.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_1_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_1_end_2.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_1_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_2_end_1.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_2_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_2_end_2.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_2_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_1.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_3_end_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_2.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_3_end_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png")
+    dest = "data/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles.png")
+    dest = "data/vulkan/data/geometry/triangles.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_adjacency.png")
+    dest = "data/vulkan/data/geometry/triangles_adjacency.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_to_lines.png")
+    dest = "data/vulkan/data/geometry/triangles_to_lines.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/triangles_to_points.png")
+    dest = "data/vulkan/data/geometry/triangles_to_points.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_0.png")
+    dest = "data/vulkan/data/geometry/vertex_count_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_1.png")
+    dest = "data/vulkan/data/geometry/vertex_count_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_10.png")
+    dest = "data/vulkan/data/geometry/vertex_count_10.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_11.png")
+    dest = "data/vulkan/data/geometry/vertex_count_11.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_12.png")
+    dest = "data/vulkan/data/geometry/vertex_count_12.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_2.png")
+    dest = "data/vulkan/data/geometry/vertex_count_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_3.png")
+    dest = "data/vulkan/data/geometry/vertex_count_3.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_4.png")
+    dest = "data/vulkan/data/geometry/vertex_count_4.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_5.png")
+    dest = "data/vulkan/data/geometry/vertex_count_5.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_6.png")
+    dest = "data/vulkan/data/geometry/vertex_count_6.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_7.png")
+    dest = "data/vulkan/data/geometry/vertex_count_7.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_8.png")
+    dest = "data/vulkan/data/geometry/vertex_count_8.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_count_9.png")
+    dest = "data/vulkan/data/geometry/vertex_count_9.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_no_op_geometry_out_1.png")
+    dest = "data/vulkan/data/geometry/vertex_no_op_geometry_out_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_0_geometry_out_1.png")
+    dest = "data/vulkan/data/geometry/vertex_out_0_geometry_out_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_0_geometry_out_2.png")
+    dest = "data/vulkan/data/geometry/vertex_out_0_geometry_out_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_1_geometry_out_0.png")
+    dest = "data/vulkan/data/geometry/vertex_out_1_geometry_out_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/geometry/vertex_out_1_geometry_out_2.png")
+    dest = "data/vulkan/data/geometry/vertex_out_1_geometry_out_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/barrier_ref.png")
+    dest = "data/vulkan/data/tessellation/barrier_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/gl_position_ref.png")
+    dest = "data/vulkan/data/tessellation/gl_position_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/isolines_equal_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_equal_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/isolines_equal_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png")
+    dest = "data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png")
+    dest = "data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png")
+    dest = "data/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png")
+    dest = "data/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png")
+    dest = "data/vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/primitive_id_tcs_ref.png")
+    dest = "data/vulkan/data/tessellation/primitive_id_tcs_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/primitive_id_tes_ref.png")
+    dest = "data/vulkan/data/tessellation/primitive_id_tes_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_isolines_ref.png")
+    dest = "data/vulkan/data/tessellation/user_defined_io_isolines_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_quads_ref.png")
+    dest = "data/vulkan/data/tessellation/user_defined_io_quads_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/data/tessellation/user_defined_io_triangles_ref.png")
+    dest = "data/vulkan/data/tessellation/user_defined_io_triangles_ref.png"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/draw/ConcurrentPayload.comp")
+    dest = "data/vulkan/draw/ConcurrentPayload.comp"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetch.frag")
+    dest = "data/vulkan/draw/VertexFetch.frag"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetch.vert")
+    dest = "data/vulkan/draw/VertexFetch.vert"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchInstanceIndex.vert")
+    dest = "data/vulkan/draw/VertexFetchInstanceIndex.vert"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchInstanced.vert")
+    dest = "data/vulkan/draw/VertexFetchInstanced.vert"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchInstancedFirstInstance.vert")
+    dest = "data/vulkan/draw/VertexFetchInstancedFirstInstance.vert"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParameters.vert")
+    dest = "data/vulkan/draw/VertexFetchShaderDrawParameters.vert"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert")
+    dest = "data/vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/dynamic_state/VertexFetch.frag")
+    dest = "data/vulkan/dynamic_state/VertexFetch.frag"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/dynamic_state/VertexFetch.vert")
+    dest = "data/vulkan/dynamic_state/VertexFetch.vert"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/dynamic_state/ViewportArray.geom")
+    dest = "data/vulkan/dynamic_state/ViewportArray.geom"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/440/linkage.test")
+    dest = "data/vulkan/glsl/440/linkage.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/arrays.test")
+    dest = "data/vulkan/glsl/es310/arrays.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/conditionals.test")
+    dest = "data/vulkan/glsl/es310/conditionals.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/constant_expressions.test")
+    dest = "data/vulkan/glsl/es310/constant_expressions.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/constants.test")
+    dest = "data/vulkan/glsl/es310/constants.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/conversions.test")
+    dest = "data/vulkan/glsl/es310/conversions.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/functions.test")
+    dest = "data/vulkan/glsl/es310/functions.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/linkage.test")
+    dest = "data/vulkan/glsl/es310/linkage.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/scoping.test")
+    dest = "data/vulkan/glsl/es310/scoping.test"
+  },
+  {
+    source = rebase_path("../external/vulkancts/data/vulkan/glsl/es310/swizzles.test")
+    dest = "data/vulkan/glsl/es310/swizzles.test"
+  },
+]
diff --git a/fuchsia/split-cts/BUILD.gn b/fuchsia/split-cts/BUILD.gn
new file mode 100644
index 0000000..c3fb5c0
--- /dev/null
+++ b/fuchsia/split-cts/BUILD.gn
@@ -0,0 +1,8007 @@
+# Copyright 2019 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.
+# File generated by ../gen.py - do not modify.
+
+import("//build/package.gni")
+import("//src/graphics/lib/magma/gnbuild/magma.gni")
+import("../resources.gni")
+
+# Add a label of "vulkan-cts" for each environment given in the list
+# of general hardware environments for magma tests. The label ensures
+# that the Vulkan CTS will not be run in the general test pipeline;
+# the label will be keyed on so that the suite may be run in a special
+# builder.
+labeled_magma_hardware_envs = []
+foreach(env, magma_hardware_envs) {
+  labeled_env = {
+  }  # Clear from previous iteration.
+  labeled_env = {
+    forward_variables_from(env, "*")
+    if (defined(tags)) {
+      tags += [ "vulkan-cts" ]
+    } else {
+      tags = [ "vulkan-cts" ]
+    }
+  }
+  labeled_magma_hardware_envs += [ labeled_env ]
+}
+
+resource("vulkan-cts-000-data") {
+  sources = [ "data/vulkan-000.txt" ]
+  outputs = [ "data/vk-list-000.txt" ]
+}
+fuchsia_component("vulkan-cts-000") {
+  testonly = true
+  manifest = "meta/vulkan-cts-000.cmx"
+  deps = [
+    ":vulkan-cts-000-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-001-data") {
+  sources = [ "data/vulkan-001.txt" ]
+  outputs = [ "data/vk-list-001.txt" ]
+}
+fuchsia_component("vulkan-cts-001") {
+  testonly = true
+  manifest = "meta/vulkan-cts-001.cmx"
+  deps = [
+    ":vulkan-cts-001-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-002-data") {
+  sources = [ "data/vulkan-002.txt" ]
+  outputs = [ "data/vk-list-002.txt" ]
+}
+fuchsia_component("vulkan-cts-002") {
+  testonly = true
+  manifest = "meta/vulkan-cts-002.cmx"
+  deps = [
+    ":vulkan-cts-002-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-003-data") {
+  sources = [ "data/vulkan-003.txt" ]
+  outputs = [ "data/vk-list-003.txt" ]
+}
+fuchsia_component("vulkan-cts-003") {
+  testonly = true
+  manifest = "meta/vulkan-cts-003.cmx"
+  deps = [
+    ":vulkan-cts-003-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-004-data") {
+  sources = [ "data/vulkan-004.txt" ]
+  outputs = [ "data/vk-list-004.txt" ]
+}
+fuchsia_component("vulkan-cts-004") {
+  testonly = true
+  manifest = "meta/vulkan-cts-004.cmx"
+  deps = [
+    ":vulkan-cts-004-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-005-data") {
+  sources = [ "data/vulkan-005.txt" ]
+  outputs = [ "data/vk-list-005.txt" ]
+}
+fuchsia_component("vulkan-cts-005") {
+  testonly = true
+  manifest = "meta/vulkan-cts-005.cmx"
+  deps = [
+    ":vulkan-cts-005-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-006-data") {
+  sources = [ "data/vulkan-006.txt" ]
+  outputs = [ "data/vk-list-006.txt" ]
+}
+fuchsia_component("vulkan-cts-006") {
+  testonly = true
+  manifest = "meta/vulkan-cts-006.cmx"
+  deps = [
+    ":vulkan-cts-006-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-007-data") {
+  sources = [ "data/vulkan-007.txt" ]
+  outputs = [ "data/vk-list-007.txt" ]
+}
+fuchsia_component("vulkan-cts-007") {
+  testonly = true
+  manifest = "meta/vulkan-cts-007.cmx"
+  deps = [
+    ":vulkan-cts-007-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-008-data") {
+  sources = [ "data/vulkan-008.txt" ]
+  outputs = [ "data/vk-list-008.txt" ]
+}
+fuchsia_component("vulkan-cts-008") {
+  testonly = true
+  manifest = "meta/vulkan-cts-008.cmx"
+  deps = [
+    ":vulkan-cts-008-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-009-data") {
+  sources = [ "data/vulkan-009.txt" ]
+  outputs = [ "data/vk-list-009.txt" ]
+}
+fuchsia_component("vulkan-cts-009") {
+  testonly = true
+  manifest = "meta/vulkan-cts-009.cmx"
+  deps = [
+    ":vulkan-cts-009-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-010-data") {
+  sources = [ "data/vulkan-010.txt" ]
+  outputs = [ "data/vk-list-010.txt" ]
+}
+fuchsia_component("vulkan-cts-010") {
+  testonly = true
+  manifest = "meta/vulkan-cts-010.cmx"
+  deps = [
+    ":vulkan-cts-010-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-011-data") {
+  sources = [ "data/vulkan-011.txt" ]
+  outputs = [ "data/vk-list-011.txt" ]
+}
+fuchsia_component("vulkan-cts-011") {
+  testonly = true
+  manifest = "meta/vulkan-cts-011.cmx"
+  deps = [
+    ":vulkan-cts-011-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-012-data") {
+  sources = [ "data/vulkan-012.txt" ]
+  outputs = [ "data/vk-list-012.txt" ]
+}
+fuchsia_component("vulkan-cts-012") {
+  testonly = true
+  manifest = "meta/vulkan-cts-012.cmx"
+  deps = [
+    ":vulkan-cts-012-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-013-data") {
+  sources = [ "data/vulkan-013.txt" ]
+  outputs = [ "data/vk-list-013.txt" ]
+}
+fuchsia_component("vulkan-cts-013") {
+  testonly = true
+  manifest = "meta/vulkan-cts-013.cmx"
+  deps = [
+    ":vulkan-cts-013-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-014-data") {
+  sources = [ "data/vulkan-014.txt" ]
+  outputs = [ "data/vk-list-014.txt" ]
+}
+fuchsia_component("vulkan-cts-014") {
+  testonly = true
+  manifest = "meta/vulkan-cts-014.cmx"
+  deps = [
+    ":vulkan-cts-014-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-015-data") {
+  sources = [ "data/vulkan-015.txt" ]
+  outputs = [ "data/vk-list-015.txt" ]
+}
+fuchsia_component("vulkan-cts-015") {
+  testonly = true
+  manifest = "meta/vulkan-cts-015.cmx"
+  deps = [
+    ":vulkan-cts-015-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-016-data") {
+  sources = [ "data/vulkan-016.txt" ]
+  outputs = [ "data/vk-list-016.txt" ]
+}
+fuchsia_component("vulkan-cts-016") {
+  testonly = true
+  manifest = "meta/vulkan-cts-016.cmx"
+  deps = [
+    ":vulkan-cts-016-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-017-data") {
+  sources = [ "data/vulkan-017.txt" ]
+  outputs = [ "data/vk-list-017.txt" ]
+}
+fuchsia_component("vulkan-cts-017") {
+  testonly = true
+  manifest = "meta/vulkan-cts-017.cmx"
+  deps = [
+    ":vulkan-cts-017-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-018-data") {
+  sources = [ "data/vulkan-018.txt" ]
+  outputs = [ "data/vk-list-018.txt" ]
+}
+fuchsia_component("vulkan-cts-018") {
+  testonly = true
+  manifest = "meta/vulkan-cts-018.cmx"
+  deps = [
+    ":vulkan-cts-018-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-019-data") {
+  sources = [ "data/vulkan-019.txt" ]
+  outputs = [ "data/vk-list-019.txt" ]
+}
+fuchsia_component("vulkan-cts-019") {
+  testonly = true
+  manifest = "meta/vulkan-cts-019.cmx"
+  deps = [
+    ":vulkan-cts-019-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-020-data") {
+  sources = [ "data/vulkan-020.txt" ]
+  outputs = [ "data/vk-list-020.txt" ]
+}
+fuchsia_component("vulkan-cts-020") {
+  testonly = true
+  manifest = "meta/vulkan-cts-020.cmx"
+  deps = [
+    ":vulkan-cts-020-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-021-data") {
+  sources = [ "data/vulkan-021.txt" ]
+  outputs = [ "data/vk-list-021.txt" ]
+}
+fuchsia_component("vulkan-cts-021") {
+  testonly = true
+  manifest = "meta/vulkan-cts-021.cmx"
+  deps = [
+    ":vulkan-cts-021-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-022-data") {
+  sources = [ "data/vulkan-022.txt" ]
+  outputs = [ "data/vk-list-022.txt" ]
+}
+fuchsia_component("vulkan-cts-022") {
+  testonly = true
+  manifest = "meta/vulkan-cts-022.cmx"
+  deps = [
+    ":vulkan-cts-022-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-023-data") {
+  sources = [ "data/vulkan-023.txt" ]
+  outputs = [ "data/vk-list-023.txt" ]
+}
+fuchsia_component("vulkan-cts-023") {
+  testonly = true
+  manifest = "meta/vulkan-cts-023.cmx"
+  deps = [
+    ":vulkan-cts-023-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-024-data") {
+  sources = [ "data/vulkan-024.txt" ]
+  outputs = [ "data/vk-list-024.txt" ]
+}
+fuchsia_component("vulkan-cts-024") {
+  testonly = true
+  manifest = "meta/vulkan-cts-024.cmx"
+  deps = [
+    ":vulkan-cts-024-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-025-data") {
+  sources = [ "data/vulkan-025.txt" ]
+  outputs = [ "data/vk-list-025.txt" ]
+}
+fuchsia_component("vulkan-cts-025") {
+  testonly = true
+  manifest = "meta/vulkan-cts-025.cmx"
+  deps = [
+    ":vulkan-cts-025-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-026-data") {
+  sources = [ "data/vulkan-026.txt" ]
+  outputs = [ "data/vk-list-026.txt" ]
+}
+fuchsia_component("vulkan-cts-026") {
+  testonly = true
+  manifest = "meta/vulkan-cts-026.cmx"
+  deps = [
+    ":vulkan-cts-026-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-027-data") {
+  sources = [ "data/vulkan-027.txt" ]
+  outputs = [ "data/vk-list-027.txt" ]
+}
+fuchsia_component("vulkan-cts-027") {
+  testonly = true
+  manifest = "meta/vulkan-cts-027.cmx"
+  deps = [
+    ":vulkan-cts-027-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-028-data") {
+  sources = [ "data/vulkan-028.txt" ]
+  outputs = [ "data/vk-list-028.txt" ]
+}
+fuchsia_component("vulkan-cts-028") {
+  testonly = true
+  manifest = "meta/vulkan-cts-028.cmx"
+  deps = [
+    ":vulkan-cts-028-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-029-data") {
+  sources = [ "data/vulkan-029.txt" ]
+  outputs = [ "data/vk-list-029.txt" ]
+}
+fuchsia_component("vulkan-cts-029") {
+  testonly = true
+  manifest = "meta/vulkan-cts-029.cmx"
+  deps = [
+    ":vulkan-cts-029-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-030-data") {
+  sources = [ "data/vulkan-030.txt" ]
+  outputs = [ "data/vk-list-030.txt" ]
+}
+fuchsia_component("vulkan-cts-030") {
+  testonly = true
+  manifest = "meta/vulkan-cts-030.cmx"
+  deps = [
+    ":vulkan-cts-030-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-031-data") {
+  sources = [ "data/vulkan-031.txt" ]
+  outputs = [ "data/vk-list-031.txt" ]
+}
+fuchsia_component("vulkan-cts-031") {
+  testonly = true
+  manifest = "meta/vulkan-cts-031.cmx"
+  deps = [
+    ":vulkan-cts-031-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-032-data") {
+  sources = [ "data/vulkan-032.txt" ]
+  outputs = [ "data/vk-list-032.txt" ]
+}
+fuchsia_component("vulkan-cts-032") {
+  testonly = true
+  manifest = "meta/vulkan-cts-032.cmx"
+  deps = [
+    ":vulkan-cts-032-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-033-data") {
+  sources = [ "data/vulkan-033.txt" ]
+  outputs = [ "data/vk-list-033.txt" ]
+}
+fuchsia_component("vulkan-cts-033") {
+  testonly = true
+  manifest = "meta/vulkan-cts-033.cmx"
+  deps = [
+    ":vulkan-cts-033-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-034-data") {
+  sources = [ "data/vulkan-034.txt" ]
+  outputs = [ "data/vk-list-034.txt" ]
+}
+fuchsia_component("vulkan-cts-034") {
+  testonly = true
+  manifest = "meta/vulkan-cts-034.cmx"
+  deps = [
+    ":vulkan-cts-034-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-035-data") {
+  sources = [ "data/vulkan-035.txt" ]
+  outputs = [ "data/vk-list-035.txt" ]
+}
+fuchsia_component("vulkan-cts-035") {
+  testonly = true
+  manifest = "meta/vulkan-cts-035.cmx"
+  deps = [
+    ":vulkan-cts-035-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-036-data") {
+  sources = [ "data/vulkan-036.txt" ]
+  outputs = [ "data/vk-list-036.txt" ]
+}
+fuchsia_component("vulkan-cts-036") {
+  testonly = true
+  manifest = "meta/vulkan-cts-036.cmx"
+  deps = [
+    ":vulkan-cts-036-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-037-data") {
+  sources = [ "data/vulkan-037.txt" ]
+  outputs = [ "data/vk-list-037.txt" ]
+}
+fuchsia_component("vulkan-cts-037") {
+  testonly = true
+  manifest = "meta/vulkan-cts-037.cmx"
+  deps = [
+    ":vulkan-cts-037-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-038-data") {
+  sources = [ "data/vulkan-038.txt" ]
+  outputs = [ "data/vk-list-038.txt" ]
+}
+fuchsia_component("vulkan-cts-038") {
+  testonly = true
+  manifest = "meta/vulkan-cts-038.cmx"
+  deps = [
+    ":vulkan-cts-038-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-039-data") {
+  sources = [ "data/vulkan-039.txt" ]
+  outputs = [ "data/vk-list-039.txt" ]
+}
+fuchsia_component("vulkan-cts-039") {
+  testonly = true
+  manifest = "meta/vulkan-cts-039.cmx"
+  deps = [
+    ":vulkan-cts-039-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-040-data") {
+  sources = [ "data/vulkan-040.txt" ]
+  outputs = [ "data/vk-list-040.txt" ]
+}
+fuchsia_component("vulkan-cts-040") {
+  testonly = true
+  manifest = "meta/vulkan-cts-040.cmx"
+  deps = [
+    ":vulkan-cts-040-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-041-data") {
+  sources = [ "data/vulkan-041.txt" ]
+  outputs = [ "data/vk-list-041.txt" ]
+}
+fuchsia_component("vulkan-cts-041") {
+  testonly = true
+  manifest = "meta/vulkan-cts-041.cmx"
+  deps = [
+    ":vulkan-cts-041-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-042-data") {
+  sources = [ "data/vulkan-042.txt" ]
+  outputs = [ "data/vk-list-042.txt" ]
+}
+fuchsia_component("vulkan-cts-042") {
+  testonly = true
+  manifest = "meta/vulkan-cts-042.cmx"
+  deps = [
+    ":vulkan-cts-042-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-043-data") {
+  sources = [ "data/vulkan-043.txt" ]
+  outputs = [ "data/vk-list-043.txt" ]
+}
+fuchsia_component("vulkan-cts-043") {
+  testonly = true
+  manifest = "meta/vulkan-cts-043.cmx"
+  deps = [
+    ":vulkan-cts-043-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-044-data") {
+  sources = [ "data/vulkan-044.txt" ]
+  outputs = [ "data/vk-list-044.txt" ]
+}
+fuchsia_component("vulkan-cts-044") {
+  testonly = true
+  manifest = "meta/vulkan-cts-044.cmx"
+  deps = [
+    ":vulkan-cts-044-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-045-data") {
+  sources = [ "data/vulkan-045.txt" ]
+  outputs = [ "data/vk-list-045.txt" ]
+}
+fuchsia_component("vulkan-cts-045") {
+  testonly = true
+  manifest = "meta/vulkan-cts-045.cmx"
+  deps = [
+    ":vulkan-cts-045-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-046-data") {
+  sources = [ "data/vulkan-046.txt" ]
+  outputs = [ "data/vk-list-046.txt" ]
+}
+fuchsia_component("vulkan-cts-046") {
+  testonly = true
+  manifest = "meta/vulkan-cts-046.cmx"
+  deps = [
+    ":vulkan-cts-046-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-047-data") {
+  sources = [ "data/vulkan-047.txt" ]
+  outputs = [ "data/vk-list-047.txt" ]
+}
+fuchsia_component("vulkan-cts-047") {
+  testonly = true
+  manifest = "meta/vulkan-cts-047.cmx"
+  deps = [
+    ":vulkan-cts-047-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-048-data") {
+  sources = [ "data/vulkan-048.txt" ]
+  outputs = [ "data/vk-list-048.txt" ]
+}
+fuchsia_component("vulkan-cts-048") {
+  testonly = true
+  manifest = "meta/vulkan-cts-048.cmx"
+  deps = [
+    ":vulkan-cts-048-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-049-data") {
+  sources = [ "data/vulkan-049.txt" ]
+  outputs = [ "data/vk-list-049.txt" ]
+}
+fuchsia_component("vulkan-cts-049") {
+  testonly = true
+  manifest = "meta/vulkan-cts-049.cmx"
+  deps = [
+    ":vulkan-cts-049-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-050-data") {
+  sources = [ "data/vulkan-050.txt" ]
+  outputs = [ "data/vk-list-050.txt" ]
+}
+fuchsia_component("vulkan-cts-050") {
+  testonly = true
+  manifest = "meta/vulkan-cts-050.cmx"
+  deps = [
+    ":vulkan-cts-050-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-051-data") {
+  sources = [ "data/vulkan-051.txt" ]
+  outputs = [ "data/vk-list-051.txt" ]
+}
+fuchsia_component("vulkan-cts-051") {
+  testonly = true
+  manifest = "meta/vulkan-cts-051.cmx"
+  deps = [
+    ":vulkan-cts-051-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-052-data") {
+  sources = [ "data/vulkan-052.txt" ]
+  outputs = [ "data/vk-list-052.txt" ]
+}
+fuchsia_component("vulkan-cts-052") {
+  testonly = true
+  manifest = "meta/vulkan-cts-052.cmx"
+  deps = [
+    ":vulkan-cts-052-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-053-data") {
+  sources = [ "data/vulkan-053.txt" ]
+  outputs = [ "data/vk-list-053.txt" ]
+}
+fuchsia_component("vulkan-cts-053") {
+  testonly = true
+  manifest = "meta/vulkan-cts-053.cmx"
+  deps = [
+    ":vulkan-cts-053-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-054-data") {
+  sources = [ "data/vulkan-054.txt" ]
+  outputs = [ "data/vk-list-054.txt" ]
+}
+fuchsia_component("vulkan-cts-054") {
+  testonly = true
+  manifest = "meta/vulkan-cts-054.cmx"
+  deps = [
+    ":vulkan-cts-054-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-055-data") {
+  sources = [ "data/vulkan-055.txt" ]
+  outputs = [ "data/vk-list-055.txt" ]
+}
+fuchsia_component("vulkan-cts-055") {
+  testonly = true
+  manifest = "meta/vulkan-cts-055.cmx"
+  deps = [
+    ":vulkan-cts-055-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-056-data") {
+  sources = [ "data/vulkan-056.txt" ]
+  outputs = [ "data/vk-list-056.txt" ]
+}
+fuchsia_component("vulkan-cts-056") {
+  testonly = true
+  manifest = "meta/vulkan-cts-056.cmx"
+  deps = [
+    ":vulkan-cts-056-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-057-data") {
+  sources = [ "data/vulkan-057.txt" ]
+  outputs = [ "data/vk-list-057.txt" ]
+}
+fuchsia_component("vulkan-cts-057") {
+  testonly = true
+  manifest = "meta/vulkan-cts-057.cmx"
+  deps = [
+    ":vulkan-cts-057-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-058-data") {
+  sources = [ "data/vulkan-058.txt" ]
+  outputs = [ "data/vk-list-058.txt" ]
+}
+fuchsia_component("vulkan-cts-058") {
+  testonly = true
+  manifest = "meta/vulkan-cts-058.cmx"
+  deps = [
+    ":vulkan-cts-058-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-059-data") {
+  sources = [ "data/vulkan-059.txt" ]
+  outputs = [ "data/vk-list-059.txt" ]
+}
+fuchsia_component("vulkan-cts-059") {
+  testonly = true
+  manifest = "meta/vulkan-cts-059.cmx"
+  deps = [
+    ":vulkan-cts-059-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-060-data") {
+  sources = [ "data/vulkan-060.txt" ]
+  outputs = [ "data/vk-list-060.txt" ]
+}
+fuchsia_component("vulkan-cts-060") {
+  testonly = true
+  manifest = "meta/vulkan-cts-060.cmx"
+  deps = [
+    ":vulkan-cts-060-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-061-data") {
+  sources = [ "data/vulkan-061.txt" ]
+  outputs = [ "data/vk-list-061.txt" ]
+}
+fuchsia_component("vulkan-cts-061") {
+  testonly = true
+  manifest = "meta/vulkan-cts-061.cmx"
+  deps = [
+    ":vulkan-cts-061-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-062-data") {
+  sources = [ "data/vulkan-062.txt" ]
+  outputs = [ "data/vk-list-062.txt" ]
+}
+fuchsia_component("vulkan-cts-062") {
+  testonly = true
+  manifest = "meta/vulkan-cts-062.cmx"
+  deps = [
+    ":vulkan-cts-062-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-063-data") {
+  sources = [ "data/vulkan-063.txt" ]
+  outputs = [ "data/vk-list-063.txt" ]
+}
+fuchsia_component("vulkan-cts-063") {
+  testonly = true
+  manifest = "meta/vulkan-cts-063.cmx"
+  deps = [
+    ":vulkan-cts-063-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-064-data") {
+  sources = [ "data/vulkan-064.txt" ]
+  outputs = [ "data/vk-list-064.txt" ]
+}
+fuchsia_component("vulkan-cts-064") {
+  testonly = true
+  manifest = "meta/vulkan-cts-064.cmx"
+  deps = [
+    ":vulkan-cts-064-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-065-data") {
+  sources = [ "data/vulkan-065.txt" ]
+  outputs = [ "data/vk-list-065.txt" ]
+}
+fuchsia_component("vulkan-cts-065") {
+  testonly = true
+  manifest = "meta/vulkan-cts-065.cmx"
+  deps = [
+    ":vulkan-cts-065-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-066-data") {
+  sources = [ "data/vulkan-066.txt" ]
+  outputs = [ "data/vk-list-066.txt" ]
+}
+fuchsia_component("vulkan-cts-066") {
+  testonly = true
+  manifest = "meta/vulkan-cts-066.cmx"
+  deps = [
+    ":vulkan-cts-066-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-067-data") {
+  sources = [ "data/vulkan-067.txt" ]
+  outputs = [ "data/vk-list-067.txt" ]
+}
+fuchsia_component("vulkan-cts-067") {
+  testonly = true
+  manifest = "meta/vulkan-cts-067.cmx"
+  deps = [
+    ":vulkan-cts-067-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-068-data") {
+  sources = [ "data/vulkan-068.txt" ]
+  outputs = [ "data/vk-list-068.txt" ]
+}
+fuchsia_component("vulkan-cts-068") {
+  testonly = true
+  manifest = "meta/vulkan-cts-068.cmx"
+  deps = [
+    ":vulkan-cts-068-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-069-data") {
+  sources = [ "data/vulkan-069.txt" ]
+  outputs = [ "data/vk-list-069.txt" ]
+}
+fuchsia_component("vulkan-cts-069") {
+  testonly = true
+  manifest = "meta/vulkan-cts-069.cmx"
+  deps = [
+    ":vulkan-cts-069-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-070-data") {
+  sources = [ "data/vulkan-070.txt" ]
+  outputs = [ "data/vk-list-070.txt" ]
+}
+fuchsia_component("vulkan-cts-070") {
+  testonly = true
+  manifest = "meta/vulkan-cts-070.cmx"
+  deps = [
+    ":vulkan-cts-070-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-071-data") {
+  sources = [ "data/vulkan-071.txt" ]
+  outputs = [ "data/vk-list-071.txt" ]
+}
+fuchsia_component("vulkan-cts-071") {
+  testonly = true
+  manifest = "meta/vulkan-cts-071.cmx"
+  deps = [
+    ":vulkan-cts-071-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-072-data") {
+  sources = [ "data/vulkan-072.txt" ]
+  outputs = [ "data/vk-list-072.txt" ]
+}
+fuchsia_component("vulkan-cts-072") {
+  testonly = true
+  manifest = "meta/vulkan-cts-072.cmx"
+  deps = [
+    ":vulkan-cts-072-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-073-data") {
+  sources = [ "data/vulkan-073.txt" ]
+  outputs = [ "data/vk-list-073.txt" ]
+}
+fuchsia_component("vulkan-cts-073") {
+  testonly = true
+  manifest = "meta/vulkan-cts-073.cmx"
+  deps = [
+    ":vulkan-cts-073-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-074-data") {
+  sources = [ "data/vulkan-074.txt" ]
+  outputs = [ "data/vk-list-074.txt" ]
+}
+fuchsia_component("vulkan-cts-074") {
+  testonly = true
+  manifest = "meta/vulkan-cts-074.cmx"
+  deps = [
+    ":vulkan-cts-074-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-075-data") {
+  sources = [ "data/vulkan-075.txt" ]
+  outputs = [ "data/vk-list-075.txt" ]
+}
+fuchsia_component("vulkan-cts-075") {
+  testonly = true
+  manifest = "meta/vulkan-cts-075.cmx"
+  deps = [
+    ":vulkan-cts-075-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-076-data") {
+  sources = [ "data/vulkan-076.txt" ]
+  outputs = [ "data/vk-list-076.txt" ]
+}
+fuchsia_component("vulkan-cts-076") {
+  testonly = true
+  manifest = "meta/vulkan-cts-076.cmx"
+  deps = [
+    ":vulkan-cts-076-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-077-data") {
+  sources = [ "data/vulkan-077.txt" ]
+  outputs = [ "data/vk-list-077.txt" ]
+}
+fuchsia_component("vulkan-cts-077") {
+  testonly = true
+  manifest = "meta/vulkan-cts-077.cmx"
+  deps = [
+    ":vulkan-cts-077-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-078-data") {
+  sources = [ "data/vulkan-078.txt" ]
+  outputs = [ "data/vk-list-078.txt" ]
+}
+fuchsia_component("vulkan-cts-078") {
+  testonly = true
+  manifest = "meta/vulkan-cts-078.cmx"
+  deps = [
+    ":vulkan-cts-078-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-079-data") {
+  sources = [ "data/vulkan-079.txt" ]
+  outputs = [ "data/vk-list-079.txt" ]
+}
+fuchsia_component("vulkan-cts-079") {
+  testonly = true
+  manifest = "meta/vulkan-cts-079.cmx"
+  deps = [
+    ":vulkan-cts-079-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-080-data") {
+  sources = [ "data/vulkan-080.txt" ]
+  outputs = [ "data/vk-list-080.txt" ]
+}
+fuchsia_component("vulkan-cts-080") {
+  testonly = true
+  manifest = "meta/vulkan-cts-080.cmx"
+  deps = [
+    ":vulkan-cts-080-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-081-data") {
+  sources = [ "data/vulkan-081.txt" ]
+  outputs = [ "data/vk-list-081.txt" ]
+}
+fuchsia_component("vulkan-cts-081") {
+  testonly = true
+  manifest = "meta/vulkan-cts-081.cmx"
+  deps = [
+    ":vulkan-cts-081-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-082-data") {
+  sources = [ "data/vulkan-082.txt" ]
+  outputs = [ "data/vk-list-082.txt" ]
+}
+fuchsia_component("vulkan-cts-082") {
+  testonly = true
+  manifest = "meta/vulkan-cts-082.cmx"
+  deps = [
+    ":vulkan-cts-082-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-083-data") {
+  sources = [ "data/vulkan-083.txt" ]
+  outputs = [ "data/vk-list-083.txt" ]
+}
+fuchsia_component("vulkan-cts-083") {
+  testonly = true
+  manifest = "meta/vulkan-cts-083.cmx"
+  deps = [
+    ":vulkan-cts-083-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-084-data") {
+  sources = [ "data/vulkan-084.txt" ]
+  outputs = [ "data/vk-list-084.txt" ]
+}
+fuchsia_component("vulkan-cts-084") {
+  testonly = true
+  manifest = "meta/vulkan-cts-084.cmx"
+  deps = [
+    ":vulkan-cts-084-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-085-data") {
+  sources = [ "data/vulkan-085.txt" ]
+  outputs = [ "data/vk-list-085.txt" ]
+}
+fuchsia_component("vulkan-cts-085") {
+  testonly = true
+  manifest = "meta/vulkan-cts-085.cmx"
+  deps = [
+    ":vulkan-cts-085-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-086-data") {
+  sources = [ "data/vulkan-086.txt" ]
+  outputs = [ "data/vk-list-086.txt" ]
+}
+fuchsia_component("vulkan-cts-086") {
+  testonly = true
+  manifest = "meta/vulkan-cts-086.cmx"
+  deps = [
+    ":vulkan-cts-086-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-087-data") {
+  sources = [ "data/vulkan-087.txt" ]
+  outputs = [ "data/vk-list-087.txt" ]
+}
+fuchsia_component("vulkan-cts-087") {
+  testonly = true
+  manifest = "meta/vulkan-cts-087.cmx"
+  deps = [
+    ":vulkan-cts-087-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-088-data") {
+  sources = [ "data/vulkan-088.txt" ]
+  outputs = [ "data/vk-list-088.txt" ]
+}
+fuchsia_component("vulkan-cts-088") {
+  testonly = true
+  manifest = "meta/vulkan-cts-088.cmx"
+  deps = [
+    ":vulkan-cts-088-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-089-data") {
+  sources = [ "data/vulkan-089.txt" ]
+  outputs = [ "data/vk-list-089.txt" ]
+}
+fuchsia_component("vulkan-cts-089") {
+  testonly = true
+  manifest = "meta/vulkan-cts-089.cmx"
+  deps = [
+    ":vulkan-cts-089-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-090-data") {
+  sources = [ "data/vulkan-090.txt" ]
+  outputs = [ "data/vk-list-090.txt" ]
+}
+fuchsia_component("vulkan-cts-090") {
+  testonly = true
+  manifest = "meta/vulkan-cts-090.cmx"
+  deps = [
+    ":vulkan-cts-090-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-091-data") {
+  sources = [ "data/vulkan-091.txt" ]
+  outputs = [ "data/vk-list-091.txt" ]
+}
+fuchsia_component("vulkan-cts-091") {
+  testonly = true
+  manifest = "meta/vulkan-cts-091.cmx"
+  deps = [
+    ":vulkan-cts-091-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-092-data") {
+  sources = [ "data/vulkan-092.txt" ]
+  outputs = [ "data/vk-list-092.txt" ]
+}
+fuchsia_component("vulkan-cts-092") {
+  testonly = true
+  manifest = "meta/vulkan-cts-092.cmx"
+  deps = [
+    ":vulkan-cts-092-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-093-data") {
+  sources = [ "data/vulkan-093.txt" ]
+  outputs = [ "data/vk-list-093.txt" ]
+}
+fuchsia_component("vulkan-cts-093") {
+  testonly = true
+  manifest = "meta/vulkan-cts-093.cmx"
+  deps = [
+    ":vulkan-cts-093-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-094-data") {
+  sources = [ "data/vulkan-094.txt" ]
+  outputs = [ "data/vk-list-094.txt" ]
+}
+fuchsia_component("vulkan-cts-094") {
+  testonly = true
+  manifest = "meta/vulkan-cts-094.cmx"
+  deps = [
+    ":vulkan-cts-094-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-095-data") {
+  sources = [ "data/vulkan-095.txt" ]
+  outputs = [ "data/vk-list-095.txt" ]
+}
+fuchsia_component("vulkan-cts-095") {
+  testonly = true
+  manifest = "meta/vulkan-cts-095.cmx"
+  deps = [
+    ":vulkan-cts-095-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-096-data") {
+  sources = [ "data/vulkan-096.txt" ]
+  outputs = [ "data/vk-list-096.txt" ]
+}
+fuchsia_component("vulkan-cts-096") {
+  testonly = true
+  manifest = "meta/vulkan-cts-096.cmx"
+  deps = [
+    ":vulkan-cts-096-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-097-data") {
+  sources = [ "data/vulkan-097.txt" ]
+  outputs = [ "data/vk-list-097.txt" ]
+}
+fuchsia_component("vulkan-cts-097") {
+  testonly = true
+  manifest = "meta/vulkan-cts-097.cmx"
+  deps = [
+    ":vulkan-cts-097-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-098-data") {
+  sources = [ "data/vulkan-098.txt" ]
+  outputs = [ "data/vk-list-098.txt" ]
+}
+fuchsia_component("vulkan-cts-098") {
+  testonly = true
+  manifest = "meta/vulkan-cts-098.cmx"
+  deps = [
+    ":vulkan-cts-098-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-099-data") {
+  sources = [ "data/vulkan-099.txt" ]
+  outputs = [ "data/vk-list-099.txt" ]
+}
+fuchsia_component("vulkan-cts-099") {
+  testonly = true
+  manifest = "meta/vulkan-cts-099.cmx"
+  deps = [
+    ":vulkan-cts-099-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-100-data") {
+  sources = [ "data/vulkan-100.txt" ]
+  outputs = [ "data/vk-list-100.txt" ]
+}
+fuchsia_component("vulkan-cts-100") {
+  testonly = true
+  manifest = "meta/vulkan-cts-100.cmx"
+  deps = [
+    ":vulkan-cts-100-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-101-data") {
+  sources = [ "data/vulkan-101.txt" ]
+  outputs = [ "data/vk-list-101.txt" ]
+}
+fuchsia_component("vulkan-cts-101") {
+  testonly = true
+  manifest = "meta/vulkan-cts-101.cmx"
+  deps = [
+    ":vulkan-cts-101-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-102-data") {
+  sources = [ "data/vulkan-102.txt" ]
+  outputs = [ "data/vk-list-102.txt" ]
+}
+fuchsia_component("vulkan-cts-102") {
+  testonly = true
+  manifest = "meta/vulkan-cts-102.cmx"
+  deps = [
+    ":vulkan-cts-102-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-103-data") {
+  sources = [ "data/vulkan-103.txt" ]
+  outputs = [ "data/vk-list-103.txt" ]
+}
+fuchsia_component("vulkan-cts-103") {
+  testonly = true
+  manifest = "meta/vulkan-cts-103.cmx"
+  deps = [
+    ":vulkan-cts-103-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-104-data") {
+  sources = [ "data/vulkan-104.txt" ]
+  outputs = [ "data/vk-list-104.txt" ]
+}
+fuchsia_component("vulkan-cts-104") {
+  testonly = true
+  manifest = "meta/vulkan-cts-104.cmx"
+  deps = [
+    ":vulkan-cts-104-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-105-data") {
+  sources = [ "data/vulkan-105.txt" ]
+  outputs = [ "data/vk-list-105.txt" ]
+}
+fuchsia_component("vulkan-cts-105") {
+  testonly = true
+  manifest = "meta/vulkan-cts-105.cmx"
+  deps = [
+    ":vulkan-cts-105-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-106-data") {
+  sources = [ "data/vulkan-106.txt" ]
+  outputs = [ "data/vk-list-106.txt" ]
+}
+fuchsia_component("vulkan-cts-106") {
+  testonly = true
+  manifest = "meta/vulkan-cts-106.cmx"
+  deps = [
+    ":vulkan-cts-106-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-107-data") {
+  sources = [ "data/vulkan-107.txt" ]
+  outputs = [ "data/vk-list-107.txt" ]
+}
+fuchsia_component("vulkan-cts-107") {
+  testonly = true
+  manifest = "meta/vulkan-cts-107.cmx"
+  deps = [
+    ":vulkan-cts-107-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-108-data") {
+  sources = [ "data/vulkan-108.txt" ]
+  outputs = [ "data/vk-list-108.txt" ]
+}
+fuchsia_component("vulkan-cts-108") {
+  testonly = true
+  manifest = "meta/vulkan-cts-108.cmx"
+  deps = [
+    ":vulkan-cts-108-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-109-data") {
+  sources = [ "data/vulkan-109.txt" ]
+  outputs = [ "data/vk-list-109.txt" ]
+}
+fuchsia_component("vulkan-cts-109") {
+  testonly = true
+  manifest = "meta/vulkan-cts-109.cmx"
+  deps = [
+    ":vulkan-cts-109-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-110-data") {
+  sources = [ "data/vulkan-110.txt" ]
+  outputs = [ "data/vk-list-110.txt" ]
+}
+fuchsia_component("vulkan-cts-110") {
+  testonly = true
+  manifest = "meta/vulkan-cts-110.cmx"
+  deps = [
+    ":vulkan-cts-110-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-111-data") {
+  sources = [ "data/vulkan-111.txt" ]
+  outputs = [ "data/vk-list-111.txt" ]
+}
+fuchsia_component("vulkan-cts-111") {
+  testonly = true
+  manifest = "meta/vulkan-cts-111.cmx"
+  deps = [
+    ":vulkan-cts-111-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-112-data") {
+  sources = [ "data/vulkan-112.txt" ]
+  outputs = [ "data/vk-list-112.txt" ]
+}
+fuchsia_component("vulkan-cts-112") {
+  testonly = true
+  manifest = "meta/vulkan-cts-112.cmx"
+  deps = [
+    ":vulkan-cts-112-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-113-data") {
+  sources = [ "data/vulkan-113.txt" ]
+  outputs = [ "data/vk-list-113.txt" ]
+}
+fuchsia_component("vulkan-cts-113") {
+  testonly = true
+  manifest = "meta/vulkan-cts-113.cmx"
+  deps = [
+    ":vulkan-cts-113-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-114-data") {
+  sources = [ "data/vulkan-114.txt" ]
+  outputs = [ "data/vk-list-114.txt" ]
+}
+fuchsia_component("vulkan-cts-114") {
+  testonly = true
+  manifest = "meta/vulkan-cts-114.cmx"
+  deps = [
+    ":vulkan-cts-114-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-115-data") {
+  sources = [ "data/vulkan-115.txt" ]
+  outputs = [ "data/vk-list-115.txt" ]
+}
+fuchsia_component("vulkan-cts-115") {
+  testonly = true
+  manifest = "meta/vulkan-cts-115.cmx"
+  deps = [
+    ":vulkan-cts-115-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-116-data") {
+  sources = [ "data/vulkan-116.txt" ]
+  outputs = [ "data/vk-list-116.txt" ]
+}
+fuchsia_component("vulkan-cts-116") {
+  testonly = true
+  manifest = "meta/vulkan-cts-116.cmx"
+  deps = [
+    ":vulkan-cts-116-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-117-data") {
+  sources = [ "data/vulkan-117.txt" ]
+  outputs = [ "data/vk-list-117.txt" ]
+}
+fuchsia_component("vulkan-cts-117") {
+  testonly = true
+  manifest = "meta/vulkan-cts-117.cmx"
+  deps = [
+    ":vulkan-cts-117-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-118-data") {
+  sources = [ "data/vulkan-118.txt" ]
+  outputs = [ "data/vk-list-118.txt" ]
+}
+fuchsia_component("vulkan-cts-118") {
+  testonly = true
+  manifest = "meta/vulkan-cts-118.cmx"
+  deps = [
+    ":vulkan-cts-118-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-119-data") {
+  sources = [ "data/vulkan-119.txt" ]
+  outputs = [ "data/vk-list-119.txt" ]
+}
+fuchsia_component("vulkan-cts-119") {
+  testonly = true
+  manifest = "meta/vulkan-cts-119.cmx"
+  deps = [
+    ":vulkan-cts-119-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-120-data") {
+  sources = [ "data/vulkan-120.txt" ]
+  outputs = [ "data/vk-list-120.txt" ]
+}
+fuchsia_component("vulkan-cts-120") {
+  testonly = true
+  manifest = "meta/vulkan-cts-120.cmx"
+  deps = [
+    ":vulkan-cts-120-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-121-data") {
+  sources = [ "data/vulkan-121.txt" ]
+  outputs = [ "data/vk-list-121.txt" ]
+}
+fuchsia_component("vulkan-cts-121") {
+  testonly = true
+  manifest = "meta/vulkan-cts-121.cmx"
+  deps = [
+    ":vulkan-cts-121-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-122-data") {
+  sources = [ "data/vulkan-122.txt" ]
+  outputs = [ "data/vk-list-122.txt" ]
+}
+fuchsia_component("vulkan-cts-122") {
+  testonly = true
+  manifest = "meta/vulkan-cts-122.cmx"
+  deps = [
+    ":vulkan-cts-122-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-123-data") {
+  sources = [ "data/vulkan-123.txt" ]
+  outputs = [ "data/vk-list-123.txt" ]
+}
+fuchsia_component("vulkan-cts-123") {
+  testonly = true
+  manifest = "meta/vulkan-cts-123.cmx"
+  deps = [
+    ":vulkan-cts-123-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-124-data") {
+  sources = [ "data/vulkan-124.txt" ]
+  outputs = [ "data/vk-list-124.txt" ]
+}
+fuchsia_component("vulkan-cts-124") {
+  testonly = true
+  manifest = "meta/vulkan-cts-124.cmx"
+  deps = [
+    ":vulkan-cts-124-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-125-data") {
+  sources = [ "data/vulkan-125.txt" ]
+  outputs = [ "data/vk-list-125.txt" ]
+}
+fuchsia_component("vulkan-cts-125") {
+  testonly = true
+  manifest = "meta/vulkan-cts-125.cmx"
+  deps = [
+    ":vulkan-cts-125-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-126-data") {
+  sources = [ "data/vulkan-126.txt" ]
+  outputs = [ "data/vk-list-126.txt" ]
+}
+fuchsia_component("vulkan-cts-126") {
+  testonly = true
+  manifest = "meta/vulkan-cts-126.cmx"
+  deps = [
+    ":vulkan-cts-126-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-127-data") {
+  sources = [ "data/vulkan-127.txt" ]
+  outputs = [ "data/vk-list-127.txt" ]
+}
+fuchsia_component("vulkan-cts-127") {
+  testonly = true
+  manifest = "meta/vulkan-cts-127.cmx"
+  deps = [
+    ":vulkan-cts-127-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-128-data") {
+  sources = [ "data/vulkan-128.txt" ]
+  outputs = [ "data/vk-list-128.txt" ]
+}
+fuchsia_component("vulkan-cts-128") {
+  testonly = true
+  manifest = "meta/vulkan-cts-128.cmx"
+  deps = [
+    ":vulkan-cts-128-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-129-data") {
+  sources = [ "data/vulkan-129.txt" ]
+  outputs = [ "data/vk-list-129.txt" ]
+}
+fuchsia_component("vulkan-cts-129") {
+  testonly = true
+  manifest = "meta/vulkan-cts-129.cmx"
+  deps = [
+    ":vulkan-cts-129-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-130-data") {
+  sources = [ "data/vulkan-130.txt" ]
+  outputs = [ "data/vk-list-130.txt" ]
+}
+fuchsia_component("vulkan-cts-130") {
+  testonly = true
+  manifest = "meta/vulkan-cts-130.cmx"
+  deps = [
+    ":vulkan-cts-130-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-131-data") {
+  sources = [ "data/vulkan-131.txt" ]
+  outputs = [ "data/vk-list-131.txt" ]
+}
+fuchsia_component("vulkan-cts-131") {
+  testonly = true
+  manifest = "meta/vulkan-cts-131.cmx"
+  deps = [
+    ":vulkan-cts-131-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-132-data") {
+  sources = [ "data/vulkan-132.txt" ]
+  outputs = [ "data/vk-list-132.txt" ]
+}
+fuchsia_component("vulkan-cts-132") {
+  testonly = true
+  manifest = "meta/vulkan-cts-132.cmx"
+  deps = [
+    ":vulkan-cts-132-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-133-data") {
+  sources = [ "data/vulkan-133.txt" ]
+  outputs = [ "data/vk-list-133.txt" ]
+}
+fuchsia_component("vulkan-cts-133") {
+  testonly = true
+  manifest = "meta/vulkan-cts-133.cmx"
+  deps = [
+    ":vulkan-cts-133-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-134-data") {
+  sources = [ "data/vulkan-134.txt" ]
+  outputs = [ "data/vk-list-134.txt" ]
+}
+fuchsia_component("vulkan-cts-134") {
+  testonly = true
+  manifest = "meta/vulkan-cts-134.cmx"
+  deps = [
+    ":vulkan-cts-134-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-135-data") {
+  sources = [ "data/vulkan-135.txt" ]
+  outputs = [ "data/vk-list-135.txt" ]
+}
+fuchsia_component("vulkan-cts-135") {
+  testonly = true
+  manifest = "meta/vulkan-cts-135.cmx"
+  deps = [
+    ":vulkan-cts-135-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-136-data") {
+  sources = [ "data/vulkan-136.txt" ]
+  outputs = [ "data/vk-list-136.txt" ]
+}
+fuchsia_component("vulkan-cts-136") {
+  testonly = true
+  manifest = "meta/vulkan-cts-136.cmx"
+  deps = [
+    ":vulkan-cts-136-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-137-data") {
+  sources = [ "data/vulkan-137.txt" ]
+  outputs = [ "data/vk-list-137.txt" ]
+}
+fuchsia_component("vulkan-cts-137") {
+  testonly = true
+  manifest = "meta/vulkan-cts-137.cmx"
+  deps = [
+    ":vulkan-cts-137-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-138-data") {
+  sources = [ "data/vulkan-138.txt" ]
+  outputs = [ "data/vk-list-138.txt" ]
+}
+fuchsia_component("vulkan-cts-138") {
+  testonly = true
+  manifest = "meta/vulkan-cts-138.cmx"
+  deps = [
+    ":vulkan-cts-138-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-139-data") {
+  sources = [ "data/vulkan-139.txt" ]
+  outputs = [ "data/vk-list-139.txt" ]
+}
+fuchsia_component("vulkan-cts-139") {
+  testonly = true
+  manifest = "meta/vulkan-cts-139.cmx"
+  deps = [
+    ":vulkan-cts-139-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-140-data") {
+  sources = [ "data/vulkan-140.txt" ]
+  outputs = [ "data/vk-list-140.txt" ]
+}
+fuchsia_component("vulkan-cts-140") {
+  testonly = true
+  manifest = "meta/vulkan-cts-140.cmx"
+  deps = [
+    ":vulkan-cts-140-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-141-data") {
+  sources = [ "data/vulkan-141.txt" ]
+  outputs = [ "data/vk-list-141.txt" ]
+}
+fuchsia_component("vulkan-cts-141") {
+  testonly = true
+  manifest = "meta/vulkan-cts-141.cmx"
+  deps = [
+    ":vulkan-cts-141-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-142-data") {
+  sources = [ "data/vulkan-142.txt" ]
+  outputs = [ "data/vk-list-142.txt" ]
+}
+fuchsia_component("vulkan-cts-142") {
+  testonly = true
+  manifest = "meta/vulkan-cts-142.cmx"
+  deps = [
+    ":vulkan-cts-142-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-143-data") {
+  sources = [ "data/vulkan-143.txt" ]
+  outputs = [ "data/vk-list-143.txt" ]
+}
+fuchsia_component("vulkan-cts-143") {
+  testonly = true
+  manifest = "meta/vulkan-cts-143.cmx"
+  deps = [
+    ":vulkan-cts-143-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-144-data") {
+  sources = [ "data/vulkan-144.txt" ]
+  outputs = [ "data/vk-list-144.txt" ]
+}
+fuchsia_component("vulkan-cts-144") {
+  testonly = true
+  manifest = "meta/vulkan-cts-144.cmx"
+  deps = [
+    ":vulkan-cts-144-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-145-data") {
+  sources = [ "data/vulkan-145.txt" ]
+  outputs = [ "data/vk-list-145.txt" ]
+}
+fuchsia_component("vulkan-cts-145") {
+  testonly = true
+  manifest = "meta/vulkan-cts-145.cmx"
+  deps = [
+    ":vulkan-cts-145-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-146-data") {
+  sources = [ "data/vulkan-146.txt" ]
+  outputs = [ "data/vk-list-146.txt" ]
+}
+fuchsia_component("vulkan-cts-146") {
+  testonly = true
+  manifest = "meta/vulkan-cts-146.cmx"
+  deps = [
+    ":vulkan-cts-146-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-147-data") {
+  sources = [ "data/vulkan-147.txt" ]
+  outputs = [ "data/vk-list-147.txt" ]
+}
+fuchsia_component("vulkan-cts-147") {
+  testonly = true
+  manifest = "meta/vulkan-cts-147.cmx"
+  deps = [
+    ":vulkan-cts-147-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-148-data") {
+  sources = [ "data/vulkan-148.txt" ]
+  outputs = [ "data/vk-list-148.txt" ]
+}
+fuchsia_component("vulkan-cts-148") {
+  testonly = true
+  manifest = "meta/vulkan-cts-148.cmx"
+  deps = [
+    ":vulkan-cts-148-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-149-data") {
+  sources = [ "data/vulkan-149.txt" ]
+  outputs = [ "data/vk-list-149.txt" ]
+}
+fuchsia_component("vulkan-cts-149") {
+  testonly = true
+  manifest = "meta/vulkan-cts-149.cmx"
+  deps = [
+    ":vulkan-cts-149-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-150-data") {
+  sources = [ "data/vulkan-150.txt" ]
+  outputs = [ "data/vk-list-150.txt" ]
+}
+fuchsia_component("vulkan-cts-150") {
+  testonly = true
+  manifest = "meta/vulkan-cts-150.cmx"
+  deps = [
+    ":vulkan-cts-150-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-151-data") {
+  sources = [ "data/vulkan-151.txt" ]
+  outputs = [ "data/vk-list-151.txt" ]
+}
+fuchsia_component("vulkan-cts-151") {
+  testonly = true
+  manifest = "meta/vulkan-cts-151.cmx"
+  deps = [
+    ":vulkan-cts-151-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-152-data") {
+  sources = [ "data/vulkan-152.txt" ]
+  outputs = [ "data/vk-list-152.txt" ]
+}
+fuchsia_component("vulkan-cts-152") {
+  testonly = true
+  manifest = "meta/vulkan-cts-152.cmx"
+  deps = [
+    ":vulkan-cts-152-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-153-data") {
+  sources = [ "data/vulkan-153.txt" ]
+  outputs = [ "data/vk-list-153.txt" ]
+}
+fuchsia_component("vulkan-cts-153") {
+  testonly = true
+  manifest = "meta/vulkan-cts-153.cmx"
+  deps = [
+    ":vulkan-cts-153-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-154-data") {
+  sources = [ "data/vulkan-154.txt" ]
+  outputs = [ "data/vk-list-154.txt" ]
+}
+fuchsia_component("vulkan-cts-154") {
+  testonly = true
+  manifest = "meta/vulkan-cts-154.cmx"
+  deps = [
+    ":vulkan-cts-154-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-155-data") {
+  sources = [ "data/vulkan-155.txt" ]
+  outputs = [ "data/vk-list-155.txt" ]
+}
+fuchsia_component("vulkan-cts-155") {
+  testonly = true
+  manifest = "meta/vulkan-cts-155.cmx"
+  deps = [
+    ":vulkan-cts-155-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-156-data") {
+  sources = [ "data/vulkan-156.txt" ]
+  outputs = [ "data/vk-list-156.txt" ]
+}
+fuchsia_component("vulkan-cts-156") {
+  testonly = true
+  manifest = "meta/vulkan-cts-156.cmx"
+  deps = [
+    ":vulkan-cts-156-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-157-data") {
+  sources = [ "data/vulkan-157.txt" ]
+  outputs = [ "data/vk-list-157.txt" ]
+}
+fuchsia_component("vulkan-cts-157") {
+  testonly = true
+  manifest = "meta/vulkan-cts-157.cmx"
+  deps = [
+    ":vulkan-cts-157-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-158-data") {
+  sources = [ "data/vulkan-158.txt" ]
+  outputs = [ "data/vk-list-158.txt" ]
+}
+fuchsia_component("vulkan-cts-158") {
+  testonly = true
+  manifest = "meta/vulkan-cts-158.cmx"
+  deps = [
+    ":vulkan-cts-158-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-159-data") {
+  sources = [ "data/vulkan-159.txt" ]
+  outputs = [ "data/vk-list-159.txt" ]
+}
+fuchsia_component("vulkan-cts-159") {
+  testonly = true
+  manifest = "meta/vulkan-cts-159.cmx"
+  deps = [
+    ":vulkan-cts-159-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-160-data") {
+  sources = [ "data/vulkan-160.txt" ]
+  outputs = [ "data/vk-list-160.txt" ]
+}
+fuchsia_component("vulkan-cts-160") {
+  testonly = true
+  manifest = "meta/vulkan-cts-160.cmx"
+  deps = [
+    ":vulkan-cts-160-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-161-data") {
+  sources = [ "data/vulkan-161.txt" ]
+  outputs = [ "data/vk-list-161.txt" ]
+}
+fuchsia_component("vulkan-cts-161") {
+  testonly = true
+  manifest = "meta/vulkan-cts-161.cmx"
+  deps = [
+    ":vulkan-cts-161-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-162-data") {
+  sources = [ "data/vulkan-162.txt" ]
+  outputs = [ "data/vk-list-162.txt" ]
+}
+fuchsia_component("vulkan-cts-162") {
+  testonly = true
+  manifest = "meta/vulkan-cts-162.cmx"
+  deps = [
+    ":vulkan-cts-162-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-163-data") {
+  sources = [ "data/vulkan-163.txt" ]
+  outputs = [ "data/vk-list-163.txt" ]
+}
+fuchsia_component("vulkan-cts-163") {
+  testonly = true
+  manifest = "meta/vulkan-cts-163.cmx"
+  deps = [
+    ":vulkan-cts-163-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-164-data") {
+  sources = [ "data/vulkan-164.txt" ]
+  outputs = [ "data/vk-list-164.txt" ]
+}
+fuchsia_component("vulkan-cts-164") {
+  testonly = true
+  manifest = "meta/vulkan-cts-164.cmx"
+  deps = [
+    ":vulkan-cts-164-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-165-data") {
+  sources = [ "data/vulkan-165.txt" ]
+  outputs = [ "data/vk-list-165.txt" ]
+}
+fuchsia_component("vulkan-cts-165") {
+  testonly = true
+  manifest = "meta/vulkan-cts-165.cmx"
+  deps = [
+    ":vulkan-cts-165-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-166-data") {
+  sources = [ "data/vulkan-166.txt" ]
+  outputs = [ "data/vk-list-166.txt" ]
+}
+fuchsia_component("vulkan-cts-166") {
+  testonly = true
+  manifest = "meta/vulkan-cts-166.cmx"
+  deps = [
+    ":vulkan-cts-166-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-167-data") {
+  sources = [ "data/vulkan-167.txt" ]
+  outputs = [ "data/vk-list-167.txt" ]
+}
+fuchsia_component("vulkan-cts-167") {
+  testonly = true
+  manifest = "meta/vulkan-cts-167.cmx"
+  deps = [
+    ":vulkan-cts-167-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-168-data") {
+  sources = [ "data/vulkan-168.txt" ]
+  outputs = [ "data/vk-list-168.txt" ]
+}
+fuchsia_component("vulkan-cts-168") {
+  testonly = true
+  manifest = "meta/vulkan-cts-168.cmx"
+  deps = [
+    ":vulkan-cts-168-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-169-data") {
+  sources = [ "data/vulkan-169.txt" ]
+  outputs = [ "data/vk-list-169.txt" ]
+}
+fuchsia_component("vulkan-cts-169") {
+  testonly = true
+  manifest = "meta/vulkan-cts-169.cmx"
+  deps = [
+    ":vulkan-cts-169-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-170-data") {
+  sources = [ "data/vulkan-170.txt" ]
+  outputs = [ "data/vk-list-170.txt" ]
+}
+fuchsia_component("vulkan-cts-170") {
+  testonly = true
+  manifest = "meta/vulkan-cts-170.cmx"
+  deps = [
+    ":vulkan-cts-170-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-171-data") {
+  sources = [ "data/vulkan-171.txt" ]
+  outputs = [ "data/vk-list-171.txt" ]
+}
+fuchsia_component("vulkan-cts-171") {
+  testonly = true
+  manifest = "meta/vulkan-cts-171.cmx"
+  deps = [
+    ":vulkan-cts-171-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-172-data") {
+  sources = [ "data/vulkan-172.txt" ]
+  outputs = [ "data/vk-list-172.txt" ]
+}
+fuchsia_component("vulkan-cts-172") {
+  testonly = true
+  manifest = "meta/vulkan-cts-172.cmx"
+  deps = [
+    ":vulkan-cts-172-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-173-data") {
+  sources = [ "data/vulkan-173.txt" ]
+  outputs = [ "data/vk-list-173.txt" ]
+}
+fuchsia_component("vulkan-cts-173") {
+  testonly = true
+  manifest = "meta/vulkan-cts-173.cmx"
+  deps = [
+    ":vulkan-cts-173-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-174-data") {
+  sources = [ "data/vulkan-174.txt" ]
+  outputs = [ "data/vk-list-174.txt" ]
+}
+fuchsia_component("vulkan-cts-174") {
+  testonly = true
+  manifest = "meta/vulkan-cts-174.cmx"
+  deps = [
+    ":vulkan-cts-174-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-175-data") {
+  sources = [ "data/vulkan-175.txt" ]
+  outputs = [ "data/vk-list-175.txt" ]
+}
+fuchsia_component("vulkan-cts-175") {
+  testonly = true
+  manifest = "meta/vulkan-cts-175.cmx"
+  deps = [
+    ":vulkan-cts-175-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-176-data") {
+  sources = [ "data/vulkan-176.txt" ]
+  outputs = [ "data/vk-list-176.txt" ]
+}
+fuchsia_component("vulkan-cts-176") {
+  testonly = true
+  manifest = "meta/vulkan-cts-176.cmx"
+  deps = [
+    ":vulkan-cts-176-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-177-data") {
+  sources = [ "data/vulkan-177.txt" ]
+  outputs = [ "data/vk-list-177.txt" ]
+}
+fuchsia_component("vulkan-cts-177") {
+  testonly = true
+  manifest = "meta/vulkan-cts-177.cmx"
+  deps = [
+    ":vulkan-cts-177-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-178-data") {
+  sources = [ "data/vulkan-178.txt" ]
+  outputs = [ "data/vk-list-178.txt" ]
+}
+fuchsia_component("vulkan-cts-178") {
+  testonly = true
+  manifest = "meta/vulkan-cts-178.cmx"
+  deps = [
+    ":vulkan-cts-178-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-179-data") {
+  sources = [ "data/vulkan-179.txt" ]
+  outputs = [ "data/vk-list-179.txt" ]
+}
+fuchsia_component("vulkan-cts-179") {
+  testonly = true
+  manifest = "meta/vulkan-cts-179.cmx"
+  deps = [
+    ":vulkan-cts-179-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-180-data") {
+  sources = [ "data/vulkan-180.txt" ]
+  outputs = [ "data/vk-list-180.txt" ]
+}
+fuchsia_component("vulkan-cts-180") {
+  testonly = true
+  manifest = "meta/vulkan-cts-180.cmx"
+  deps = [
+    ":vulkan-cts-180-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-181-data") {
+  sources = [ "data/vulkan-181.txt" ]
+  outputs = [ "data/vk-list-181.txt" ]
+}
+fuchsia_component("vulkan-cts-181") {
+  testonly = true
+  manifest = "meta/vulkan-cts-181.cmx"
+  deps = [
+    ":vulkan-cts-181-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-182-data") {
+  sources = [ "data/vulkan-182.txt" ]
+  outputs = [ "data/vk-list-182.txt" ]
+}
+fuchsia_component("vulkan-cts-182") {
+  testonly = true
+  manifest = "meta/vulkan-cts-182.cmx"
+  deps = [
+    ":vulkan-cts-182-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-183-data") {
+  sources = [ "data/vulkan-183.txt" ]
+  outputs = [ "data/vk-list-183.txt" ]
+}
+fuchsia_component("vulkan-cts-183") {
+  testonly = true
+  manifest = "meta/vulkan-cts-183.cmx"
+  deps = [
+    ":vulkan-cts-183-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-184-data") {
+  sources = [ "data/vulkan-184.txt" ]
+  outputs = [ "data/vk-list-184.txt" ]
+}
+fuchsia_component("vulkan-cts-184") {
+  testonly = true
+  manifest = "meta/vulkan-cts-184.cmx"
+  deps = [
+    ":vulkan-cts-184-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-185-data") {
+  sources = [ "data/vulkan-185.txt" ]
+  outputs = [ "data/vk-list-185.txt" ]
+}
+fuchsia_component("vulkan-cts-185") {
+  testonly = true
+  manifest = "meta/vulkan-cts-185.cmx"
+  deps = [
+    ":vulkan-cts-185-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-186-data") {
+  sources = [ "data/vulkan-186.txt" ]
+  outputs = [ "data/vk-list-186.txt" ]
+}
+fuchsia_component("vulkan-cts-186") {
+  testonly = true
+  manifest = "meta/vulkan-cts-186.cmx"
+  deps = [
+    ":vulkan-cts-186-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-187-data") {
+  sources = [ "data/vulkan-187.txt" ]
+  outputs = [ "data/vk-list-187.txt" ]
+}
+fuchsia_component("vulkan-cts-187") {
+  testonly = true
+  manifest = "meta/vulkan-cts-187.cmx"
+  deps = [
+    ":vulkan-cts-187-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-188-data") {
+  sources = [ "data/vulkan-188.txt" ]
+  outputs = [ "data/vk-list-188.txt" ]
+}
+fuchsia_component("vulkan-cts-188") {
+  testonly = true
+  manifest = "meta/vulkan-cts-188.cmx"
+  deps = [
+    ":vulkan-cts-188-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-189-data") {
+  sources = [ "data/vulkan-189.txt" ]
+  outputs = [ "data/vk-list-189.txt" ]
+}
+fuchsia_component("vulkan-cts-189") {
+  testonly = true
+  manifest = "meta/vulkan-cts-189.cmx"
+  deps = [
+    ":vulkan-cts-189-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-190-data") {
+  sources = [ "data/vulkan-190.txt" ]
+  outputs = [ "data/vk-list-190.txt" ]
+}
+fuchsia_component("vulkan-cts-190") {
+  testonly = true
+  manifest = "meta/vulkan-cts-190.cmx"
+  deps = [
+    ":vulkan-cts-190-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-191-data") {
+  sources = [ "data/vulkan-191.txt" ]
+  outputs = [ "data/vk-list-191.txt" ]
+}
+fuchsia_component("vulkan-cts-191") {
+  testonly = true
+  manifest = "meta/vulkan-cts-191.cmx"
+  deps = [
+    ":vulkan-cts-191-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-192-data") {
+  sources = [ "data/vulkan-192.txt" ]
+  outputs = [ "data/vk-list-192.txt" ]
+}
+fuchsia_component("vulkan-cts-192") {
+  testonly = true
+  manifest = "meta/vulkan-cts-192.cmx"
+  deps = [
+    ":vulkan-cts-192-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-193-data") {
+  sources = [ "data/vulkan-193.txt" ]
+  outputs = [ "data/vk-list-193.txt" ]
+}
+fuchsia_component("vulkan-cts-193") {
+  testonly = true
+  manifest = "meta/vulkan-cts-193.cmx"
+  deps = [
+    ":vulkan-cts-193-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-194-data") {
+  sources = [ "data/vulkan-194.txt" ]
+  outputs = [ "data/vk-list-194.txt" ]
+}
+fuchsia_component("vulkan-cts-194") {
+  testonly = true
+  manifest = "meta/vulkan-cts-194.cmx"
+  deps = [
+    ":vulkan-cts-194-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-195-data") {
+  sources = [ "data/vulkan-195.txt" ]
+  outputs = [ "data/vk-list-195.txt" ]
+}
+fuchsia_component("vulkan-cts-195") {
+  testonly = true
+  manifest = "meta/vulkan-cts-195.cmx"
+  deps = [
+    ":vulkan-cts-195-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-196-data") {
+  sources = [ "data/vulkan-196.txt" ]
+  outputs = [ "data/vk-list-196.txt" ]
+}
+fuchsia_component("vulkan-cts-196") {
+  testonly = true
+  manifest = "meta/vulkan-cts-196.cmx"
+  deps = [
+    ":vulkan-cts-196-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-197-data") {
+  sources = [ "data/vulkan-197.txt" ]
+  outputs = [ "data/vk-list-197.txt" ]
+}
+fuchsia_component("vulkan-cts-197") {
+  testonly = true
+  manifest = "meta/vulkan-cts-197.cmx"
+  deps = [
+    ":vulkan-cts-197-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-198-data") {
+  sources = [ "data/vulkan-198.txt" ]
+  outputs = [ "data/vk-list-198.txt" ]
+}
+fuchsia_component("vulkan-cts-198") {
+  testonly = true
+  manifest = "meta/vulkan-cts-198.cmx"
+  deps = [
+    ":vulkan-cts-198-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-199-data") {
+  sources = [ "data/vulkan-199.txt" ]
+  outputs = [ "data/vk-list-199.txt" ]
+}
+fuchsia_component("vulkan-cts-199") {
+  testonly = true
+  manifest = "meta/vulkan-cts-199.cmx"
+  deps = [
+    ":vulkan-cts-199-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-200-data") {
+  sources = [ "data/vulkan-200.txt" ]
+  outputs = [ "data/vk-list-200.txt" ]
+}
+fuchsia_component("vulkan-cts-200") {
+  testonly = true
+  manifest = "meta/vulkan-cts-200.cmx"
+  deps = [
+    ":vulkan-cts-200-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-201-data") {
+  sources = [ "data/vulkan-201.txt" ]
+  outputs = [ "data/vk-list-201.txt" ]
+}
+fuchsia_component("vulkan-cts-201") {
+  testonly = true
+  manifest = "meta/vulkan-cts-201.cmx"
+  deps = [
+    ":vulkan-cts-201-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-202-data") {
+  sources = [ "data/vulkan-202.txt" ]
+  outputs = [ "data/vk-list-202.txt" ]
+}
+fuchsia_component("vulkan-cts-202") {
+  testonly = true
+  manifest = "meta/vulkan-cts-202.cmx"
+  deps = [
+    ":vulkan-cts-202-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-203-data") {
+  sources = [ "data/vulkan-203.txt" ]
+  outputs = [ "data/vk-list-203.txt" ]
+}
+fuchsia_component("vulkan-cts-203") {
+  testonly = true
+  manifest = "meta/vulkan-cts-203.cmx"
+  deps = [
+    ":vulkan-cts-203-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-204-data") {
+  sources = [ "data/vulkan-204.txt" ]
+  outputs = [ "data/vk-list-204.txt" ]
+}
+fuchsia_component("vulkan-cts-204") {
+  testonly = true
+  manifest = "meta/vulkan-cts-204.cmx"
+  deps = [
+    ":vulkan-cts-204-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-205-data") {
+  sources = [ "data/vulkan-205.txt" ]
+  outputs = [ "data/vk-list-205.txt" ]
+}
+fuchsia_component("vulkan-cts-205") {
+  testonly = true
+  manifest = "meta/vulkan-cts-205.cmx"
+  deps = [
+    ":vulkan-cts-205-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-206-data") {
+  sources = [ "data/vulkan-206.txt" ]
+  outputs = [ "data/vk-list-206.txt" ]
+}
+fuchsia_component("vulkan-cts-206") {
+  testonly = true
+  manifest = "meta/vulkan-cts-206.cmx"
+  deps = [
+    ":vulkan-cts-206-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-207-data") {
+  sources = [ "data/vulkan-207.txt" ]
+  outputs = [ "data/vk-list-207.txt" ]
+}
+fuchsia_component("vulkan-cts-207") {
+  testonly = true
+  manifest = "meta/vulkan-cts-207.cmx"
+  deps = [
+    ":vulkan-cts-207-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-208-data") {
+  sources = [ "data/vulkan-208.txt" ]
+  outputs = [ "data/vk-list-208.txt" ]
+}
+fuchsia_component("vulkan-cts-208") {
+  testonly = true
+  manifest = "meta/vulkan-cts-208.cmx"
+  deps = [
+    ":vulkan-cts-208-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-209-data") {
+  sources = [ "data/vulkan-209.txt" ]
+  outputs = [ "data/vk-list-209.txt" ]
+}
+fuchsia_component("vulkan-cts-209") {
+  testonly = true
+  manifest = "meta/vulkan-cts-209.cmx"
+  deps = [
+    ":vulkan-cts-209-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-210-data") {
+  sources = [ "data/vulkan-210.txt" ]
+  outputs = [ "data/vk-list-210.txt" ]
+}
+fuchsia_component("vulkan-cts-210") {
+  testonly = true
+  manifest = "meta/vulkan-cts-210.cmx"
+  deps = [
+    ":vulkan-cts-210-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-211-data") {
+  sources = [ "data/vulkan-211.txt" ]
+  outputs = [ "data/vk-list-211.txt" ]
+}
+fuchsia_component("vulkan-cts-211") {
+  testonly = true
+  manifest = "meta/vulkan-cts-211.cmx"
+  deps = [
+    ":vulkan-cts-211-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-212-data") {
+  sources = [ "data/vulkan-212.txt" ]
+  outputs = [ "data/vk-list-212.txt" ]
+}
+fuchsia_component("vulkan-cts-212") {
+  testonly = true
+  manifest = "meta/vulkan-cts-212.cmx"
+  deps = [
+    ":vulkan-cts-212-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-213-data") {
+  sources = [ "data/vulkan-213.txt" ]
+  outputs = [ "data/vk-list-213.txt" ]
+}
+fuchsia_component("vulkan-cts-213") {
+  testonly = true
+  manifest = "meta/vulkan-cts-213.cmx"
+  deps = [
+    ":vulkan-cts-213-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-214-data") {
+  sources = [ "data/vulkan-214.txt" ]
+  outputs = [ "data/vk-list-214.txt" ]
+}
+fuchsia_component("vulkan-cts-214") {
+  testonly = true
+  manifest = "meta/vulkan-cts-214.cmx"
+  deps = [
+    ":vulkan-cts-214-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-215-data") {
+  sources = [ "data/vulkan-215.txt" ]
+  outputs = [ "data/vk-list-215.txt" ]
+}
+fuchsia_component("vulkan-cts-215") {
+  testonly = true
+  manifest = "meta/vulkan-cts-215.cmx"
+  deps = [
+    ":vulkan-cts-215-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-216-data") {
+  sources = [ "data/vulkan-216.txt" ]
+  outputs = [ "data/vk-list-216.txt" ]
+}
+fuchsia_component("vulkan-cts-216") {
+  testonly = true
+  manifest = "meta/vulkan-cts-216.cmx"
+  deps = [
+    ":vulkan-cts-216-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-217-data") {
+  sources = [ "data/vulkan-217.txt" ]
+  outputs = [ "data/vk-list-217.txt" ]
+}
+fuchsia_component("vulkan-cts-217") {
+  testonly = true
+  manifest = "meta/vulkan-cts-217.cmx"
+  deps = [
+    ":vulkan-cts-217-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-218-data") {
+  sources = [ "data/vulkan-218.txt" ]
+  outputs = [ "data/vk-list-218.txt" ]
+}
+fuchsia_component("vulkan-cts-218") {
+  testonly = true
+  manifest = "meta/vulkan-cts-218.cmx"
+  deps = [
+    ":vulkan-cts-218-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-219-data") {
+  sources = [ "data/vulkan-219.txt" ]
+  outputs = [ "data/vk-list-219.txt" ]
+}
+fuchsia_component("vulkan-cts-219") {
+  testonly = true
+  manifest = "meta/vulkan-cts-219.cmx"
+  deps = [
+    ":vulkan-cts-219-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-220-data") {
+  sources = [ "data/vulkan-220.txt" ]
+  outputs = [ "data/vk-list-220.txt" ]
+}
+fuchsia_component("vulkan-cts-220") {
+  testonly = true
+  manifest = "meta/vulkan-cts-220.cmx"
+  deps = [
+    ":vulkan-cts-220-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-221-data") {
+  sources = [ "data/vulkan-221.txt" ]
+  outputs = [ "data/vk-list-221.txt" ]
+}
+fuchsia_component("vulkan-cts-221") {
+  testonly = true
+  manifest = "meta/vulkan-cts-221.cmx"
+  deps = [
+    ":vulkan-cts-221-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-222-data") {
+  sources = [ "data/vulkan-222.txt" ]
+  outputs = [ "data/vk-list-222.txt" ]
+}
+fuchsia_component("vulkan-cts-222") {
+  testonly = true
+  manifest = "meta/vulkan-cts-222.cmx"
+  deps = [
+    ":vulkan-cts-222-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-223-data") {
+  sources = [ "data/vulkan-223.txt" ]
+  outputs = [ "data/vk-list-223.txt" ]
+}
+fuchsia_component("vulkan-cts-223") {
+  testonly = true
+  manifest = "meta/vulkan-cts-223.cmx"
+  deps = [
+    ":vulkan-cts-223-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-224-data") {
+  sources = [ "data/vulkan-224.txt" ]
+  outputs = [ "data/vk-list-224.txt" ]
+}
+fuchsia_component("vulkan-cts-224") {
+  testonly = true
+  manifest = "meta/vulkan-cts-224.cmx"
+  deps = [
+    ":vulkan-cts-224-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-225-data") {
+  sources = [ "data/vulkan-225.txt" ]
+  outputs = [ "data/vk-list-225.txt" ]
+}
+fuchsia_component("vulkan-cts-225") {
+  testonly = true
+  manifest = "meta/vulkan-cts-225.cmx"
+  deps = [
+    ":vulkan-cts-225-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-226-data") {
+  sources = [ "data/vulkan-226.txt" ]
+  outputs = [ "data/vk-list-226.txt" ]
+}
+fuchsia_component("vulkan-cts-226") {
+  testonly = true
+  manifest = "meta/vulkan-cts-226.cmx"
+  deps = [
+    ":vulkan-cts-226-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-227-data") {
+  sources = [ "data/vulkan-227.txt" ]
+  outputs = [ "data/vk-list-227.txt" ]
+}
+fuchsia_component("vulkan-cts-227") {
+  testonly = true
+  manifest = "meta/vulkan-cts-227.cmx"
+  deps = [
+    ":vulkan-cts-227-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-228-data") {
+  sources = [ "data/vulkan-228.txt" ]
+  outputs = [ "data/vk-list-228.txt" ]
+}
+fuchsia_component("vulkan-cts-228") {
+  testonly = true
+  manifest = "meta/vulkan-cts-228.cmx"
+  deps = [
+    ":vulkan-cts-228-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-229-data") {
+  sources = [ "data/vulkan-229.txt" ]
+  outputs = [ "data/vk-list-229.txt" ]
+}
+fuchsia_component("vulkan-cts-229") {
+  testonly = true
+  manifest = "meta/vulkan-cts-229.cmx"
+  deps = [
+    ":vulkan-cts-229-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-230-data") {
+  sources = [ "data/vulkan-230.txt" ]
+  outputs = [ "data/vk-list-230.txt" ]
+}
+fuchsia_component("vulkan-cts-230") {
+  testonly = true
+  manifest = "meta/vulkan-cts-230.cmx"
+  deps = [
+    ":vulkan-cts-230-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-231-data") {
+  sources = [ "data/vulkan-231.txt" ]
+  outputs = [ "data/vk-list-231.txt" ]
+}
+fuchsia_component("vulkan-cts-231") {
+  testonly = true
+  manifest = "meta/vulkan-cts-231.cmx"
+  deps = [
+    ":vulkan-cts-231-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-232-data") {
+  sources = [ "data/vulkan-232.txt" ]
+  outputs = [ "data/vk-list-232.txt" ]
+}
+fuchsia_component("vulkan-cts-232") {
+  testonly = true
+  manifest = "meta/vulkan-cts-232.cmx"
+  deps = [
+    ":vulkan-cts-232-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-233-data") {
+  sources = [ "data/vulkan-233.txt" ]
+  outputs = [ "data/vk-list-233.txt" ]
+}
+fuchsia_component("vulkan-cts-233") {
+  testonly = true
+  manifest = "meta/vulkan-cts-233.cmx"
+  deps = [
+    ":vulkan-cts-233-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-234-data") {
+  sources = [ "data/vulkan-234.txt" ]
+  outputs = [ "data/vk-list-234.txt" ]
+}
+fuchsia_component("vulkan-cts-234") {
+  testonly = true
+  manifest = "meta/vulkan-cts-234.cmx"
+  deps = [
+    ":vulkan-cts-234-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-235-data") {
+  sources = [ "data/vulkan-235.txt" ]
+  outputs = [ "data/vk-list-235.txt" ]
+}
+fuchsia_component("vulkan-cts-235") {
+  testonly = true
+  manifest = "meta/vulkan-cts-235.cmx"
+  deps = [
+    ":vulkan-cts-235-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-236-data") {
+  sources = [ "data/vulkan-236.txt" ]
+  outputs = [ "data/vk-list-236.txt" ]
+}
+fuchsia_component("vulkan-cts-236") {
+  testonly = true
+  manifest = "meta/vulkan-cts-236.cmx"
+  deps = [
+    ":vulkan-cts-236-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-237-data") {
+  sources = [ "data/vulkan-237.txt" ]
+  outputs = [ "data/vk-list-237.txt" ]
+}
+fuchsia_component("vulkan-cts-237") {
+  testonly = true
+  manifest = "meta/vulkan-cts-237.cmx"
+  deps = [
+    ":vulkan-cts-237-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-238-data") {
+  sources = [ "data/vulkan-238.txt" ]
+  outputs = [ "data/vk-list-238.txt" ]
+}
+fuchsia_component("vulkan-cts-238") {
+  testonly = true
+  manifest = "meta/vulkan-cts-238.cmx"
+  deps = [
+    ":vulkan-cts-238-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-239-data") {
+  sources = [ "data/vulkan-239.txt" ]
+  outputs = [ "data/vk-list-239.txt" ]
+}
+fuchsia_component("vulkan-cts-239") {
+  testonly = true
+  manifest = "meta/vulkan-cts-239.cmx"
+  deps = [
+    ":vulkan-cts-239-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-240-data") {
+  sources = [ "data/vulkan-240.txt" ]
+  outputs = [ "data/vk-list-240.txt" ]
+}
+fuchsia_component("vulkan-cts-240") {
+  testonly = true
+  manifest = "meta/vulkan-cts-240.cmx"
+  deps = [
+    ":vulkan-cts-240-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-241-data") {
+  sources = [ "data/vulkan-241.txt" ]
+  outputs = [ "data/vk-list-241.txt" ]
+}
+fuchsia_component("vulkan-cts-241") {
+  testonly = true
+  manifest = "meta/vulkan-cts-241.cmx"
+  deps = [
+    ":vulkan-cts-241-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-242-data") {
+  sources = [ "data/vulkan-242.txt" ]
+  outputs = [ "data/vk-list-242.txt" ]
+}
+fuchsia_component("vulkan-cts-242") {
+  testonly = true
+  manifest = "meta/vulkan-cts-242.cmx"
+  deps = [
+    ":vulkan-cts-242-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-243-data") {
+  sources = [ "data/vulkan-243.txt" ]
+  outputs = [ "data/vk-list-243.txt" ]
+}
+fuchsia_component("vulkan-cts-243") {
+  testonly = true
+  manifest = "meta/vulkan-cts-243.cmx"
+  deps = [
+    ":vulkan-cts-243-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-244-data") {
+  sources = [ "data/vulkan-244.txt" ]
+  outputs = [ "data/vk-list-244.txt" ]
+}
+fuchsia_component("vulkan-cts-244") {
+  testonly = true
+  manifest = "meta/vulkan-cts-244.cmx"
+  deps = [
+    ":vulkan-cts-244-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-245-data") {
+  sources = [ "data/vulkan-245.txt" ]
+  outputs = [ "data/vk-list-245.txt" ]
+}
+fuchsia_component("vulkan-cts-245") {
+  testonly = true
+  manifest = "meta/vulkan-cts-245.cmx"
+  deps = [
+    ":vulkan-cts-245-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-246-data") {
+  sources = [ "data/vulkan-246.txt" ]
+  outputs = [ "data/vk-list-246.txt" ]
+}
+fuchsia_component("vulkan-cts-246") {
+  testonly = true
+  manifest = "meta/vulkan-cts-246.cmx"
+  deps = [
+    ":vulkan-cts-246-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-247-data") {
+  sources = [ "data/vulkan-247.txt" ]
+  outputs = [ "data/vk-list-247.txt" ]
+}
+fuchsia_component("vulkan-cts-247") {
+  testonly = true
+  manifest = "meta/vulkan-cts-247.cmx"
+  deps = [
+    ":vulkan-cts-247-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-248-data") {
+  sources = [ "data/vulkan-248.txt" ]
+  outputs = [ "data/vk-list-248.txt" ]
+}
+fuchsia_component("vulkan-cts-248") {
+  testonly = true
+  manifest = "meta/vulkan-cts-248.cmx"
+  deps = [
+    ":vulkan-cts-248-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-249-data") {
+  sources = [ "data/vulkan-249.txt" ]
+  outputs = [ "data/vk-list-249.txt" ]
+}
+fuchsia_component("vulkan-cts-249") {
+  testonly = true
+  manifest = "meta/vulkan-cts-249.cmx"
+  deps = [
+    ":vulkan-cts-249-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-250-data") {
+  sources = [ "data/vulkan-250.txt" ]
+  outputs = [ "data/vk-list-250.txt" ]
+}
+fuchsia_component("vulkan-cts-250") {
+  testonly = true
+  manifest = "meta/vulkan-cts-250.cmx"
+  deps = [
+    ":vulkan-cts-250-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-251-data") {
+  sources = [ "data/vulkan-251.txt" ]
+  outputs = [ "data/vk-list-251.txt" ]
+}
+fuchsia_component("vulkan-cts-251") {
+  testonly = true
+  manifest = "meta/vulkan-cts-251.cmx"
+  deps = [
+    ":vulkan-cts-251-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-252-data") {
+  sources = [ "data/vulkan-252.txt" ]
+  outputs = [ "data/vk-list-252.txt" ]
+}
+fuchsia_component("vulkan-cts-252") {
+  testonly = true
+  manifest = "meta/vulkan-cts-252.cmx"
+  deps = [
+    ":vulkan-cts-252-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-253-data") {
+  sources = [ "data/vulkan-253.txt" ]
+  outputs = [ "data/vk-list-253.txt" ]
+}
+fuchsia_component("vulkan-cts-253") {
+  testonly = true
+  manifest = "meta/vulkan-cts-253.cmx"
+  deps = [
+    ":vulkan-cts-253-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-254-data") {
+  sources = [ "data/vulkan-254.txt" ]
+  outputs = [ "data/vk-list-254.txt" ]
+}
+fuchsia_component("vulkan-cts-254") {
+  testonly = true
+  manifest = "meta/vulkan-cts-254.cmx"
+  deps = [
+    ":vulkan-cts-254-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-255-data") {
+  sources = [ "data/vulkan-255.txt" ]
+  outputs = [ "data/vk-list-255.txt" ]
+}
+fuchsia_component("vulkan-cts-255") {
+  testonly = true
+  manifest = "meta/vulkan-cts-255.cmx"
+  deps = [
+    ":vulkan-cts-255-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-256-data") {
+  sources = [ "data/vulkan-256.txt" ]
+  outputs = [ "data/vk-list-256.txt" ]
+}
+fuchsia_component("vulkan-cts-256") {
+  testonly = true
+  manifest = "meta/vulkan-cts-256.cmx"
+  deps = [
+    ":vulkan-cts-256-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-257-data") {
+  sources = [ "data/vulkan-257.txt" ]
+  outputs = [ "data/vk-list-257.txt" ]
+}
+fuchsia_component("vulkan-cts-257") {
+  testonly = true
+  manifest = "meta/vulkan-cts-257.cmx"
+  deps = [
+    ":vulkan-cts-257-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-258-data") {
+  sources = [ "data/vulkan-258.txt" ]
+  outputs = [ "data/vk-list-258.txt" ]
+}
+fuchsia_component("vulkan-cts-258") {
+  testonly = true
+  manifest = "meta/vulkan-cts-258.cmx"
+  deps = [
+    ":vulkan-cts-258-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-259-data") {
+  sources = [ "data/vulkan-259.txt" ]
+  outputs = [ "data/vk-list-259.txt" ]
+}
+fuchsia_component("vulkan-cts-259") {
+  testonly = true
+  manifest = "meta/vulkan-cts-259.cmx"
+  deps = [
+    ":vulkan-cts-259-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-260-data") {
+  sources = [ "data/vulkan-260.txt" ]
+  outputs = [ "data/vk-list-260.txt" ]
+}
+fuchsia_component("vulkan-cts-260") {
+  testonly = true
+  manifest = "meta/vulkan-cts-260.cmx"
+  deps = [
+    ":vulkan-cts-260-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-261-data") {
+  sources = [ "data/vulkan-261.txt" ]
+  outputs = [ "data/vk-list-261.txt" ]
+}
+fuchsia_component("vulkan-cts-261") {
+  testonly = true
+  manifest = "meta/vulkan-cts-261.cmx"
+  deps = [
+    ":vulkan-cts-261-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-262-data") {
+  sources = [ "data/vulkan-262.txt" ]
+  outputs = [ "data/vk-list-262.txt" ]
+}
+fuchsia_component("vulkan-cts-262") {
+  testonly = true
+  manifest = "meta/vulkan-cts-262.cmx"
+  deps = [
+    ":vulkan-cts-262-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-263-data") {
+  sources = [ "data/vulkan-263.txt" ]
+  outputs = [ "data/vk-list-263.txt" ]
+}
+fuchsia_component("vulkan-cts-263") {
+  testonly = true
+  manifest = "meta/vulkan-cts-263.cmx"
+  deps = [
+    ":vulkan-cts-263-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-264-data") {
+  sources = [ "data/vulkan-264.txt" ]
+  outputs = [ "data/vk-list-264.txt" ]
+}
+fuchsia_component("vulkan-cts-264") {
+  testonly = true
+  manifest = "meta/vulkan-cts-264.cmx"
+  deps = [
+    ":vulkan-cts-264-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-265-data") {
+  sources = [ "data/vulkan-265.txt" ]
+  outputs = [ "data/vk-list-265.txt" ]
+}
+fuchsia_component("vulkan-cts-265") {
+  testonly = true
+  manifest = "meta/vulkan-cts-265.cmx"
+  deps = [
+    ":vulkan-cts-265-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-266-data") {
+  sources = [ "data/vulkan-266.txt" ]
+  outputs = [ "data/vk-list-266.txt" ]
+}
+fuchsia_component("vulkan-cts-266") {
+  testonly = true
+  manifest = "meta/vulkan-cts-266.cmx"
+  deps = [
+    ":vulkan-cts-266-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-267-data") {
+  sources = [ "data/vulkan-267.txt" ]
+  outputs = [ "data/vk-list-267.txt" ]
+}
+fuchsia_component("vulkan-cts-267") {
+  testonly = true
+  manifest = "meta/vulkan-cts-267.cmx"
+  deps = [
+    ":vulkan-cts-267-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-268-data") {
+  sources = [ "data/vulkan-268.txt" ]
+  outputs = [ "data/vk-list-268.txt" ]
+}
+fuchsia_component("vulkan-cts-268") {
+  testonly = true
+  manifest = "meta/vulkan-cts-268.cmx"
+  deps = [
+    ":vulkan-cts-268-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-269-data") {
+  sources = [ "data/vulkan-269.txt" ]
+  outputs = [ "data/vk-list-269.txt" ]
+}
+fuchsia_component("vulkan-cts-269") {
+  testonly = true
+  manifest = "meta/vulkan-cts-269.cmx"
+  deps = [
+    ":vulkan-cts-269-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-270-data") {
+  sources = [ "data/vulkan-270.txt" ]
+  outputs = [ "data/vk-list-270.txt" ]
+}
+fuchsia_component("vulkan-cts-270") {
+  testonly = true
+  manifest = "meta/vulkan-cts-270.cmx"
+  deps = [
+    ":vulkan-cts-270-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-271-data") {
+  sources = [ "data/vulkan-271.txt" ]
+  outputs = [ "data/vk-list-271.txt" ]
+}
+fuchsia_component("vulkan-cts-271") {
+  testonly = true
+  manifest = "meta/vulkan-cts-271.cmx"
+  deps = [
+    ":vulkan-cts-271-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-272-data") {
+  sources = [ "data/vulkan-272.txt" ]
+  outputs = [ "data/vk-list-272.txt" ]
+}
+fuchsia_component("vulkan-cts-272") {
+  testonly = true
+  manifest = "meta/vulkan-cts-272.cmx"
+  deps = [
+    ":vulkan-cts-272-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-273-data") {
+  sources = [ "data/vulkan-273.txt" ]
+  outputs = [ "data/vk-list-273.txt" ]
+}
+fuchsia_component("vulkan-cts-273") {
+  testonly = true
+  manifest = "meta/vulkan-cts-273.cmx"
+  deps = [
+    ":vulkan-cts-273-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-274-data") {
+  sources = [ "data/vulkan-274.txt" ]
+  outputs = [ "data/vk-list-274.txt" ]
+}
+fuchsia_component("vulkan-cts-274") {
+  testonly = true
+  manifest = "meta/vulkan-cts-274.cmx"
+  deps = [
+    ":vulkan-cts-274-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-275-data") {
+  sources = [ "data/vulkan-275.txt" ]
+  outputs = [ "data/vk-list-275.txt" ]
+}
+fuchsia_component("vulkan-cts-275") {
+  testonly = true
+  manifest = "meta/vulkan-cts-275.cmx"
+  deps = [
+    ":vulkan-cts-275-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-276-data") {
+  sources = [ "data/vulkan-276.txt" ]
+  outputs = [ "data/vk-list-276.txt" ]
+}
+fuchsia_component("vulkan-cts-276") {
+  testonly = true
+  manifest = "meta/vulkan-cts-276.cmx"
+  deps = [
+    ":vulkan-cts-276-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-277-data") {
+  sources = [ "data/vulkan-277.txt" ]
+  outputs = [ "data/vk-list-277.txt" ]
+}
+fuchsia_component("vulkan-cts-277") {
+  testonly = true
+  manifest = "meta/vulkan-cts-277.cmx"
+  deps = [
+    ":vulkan-cts-277-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-278-data") {
+  sources = [ "data/vulkan-278.txt" ]
+  outputs = [ "data/vk-list-278.txt" ]
+}
+fuchsia_component("vulkan-cts-278") {
+  testonly = true
+  manifest = "meta/vulkan-cts-278.cmx"
+  deps = [
+    ":vulkan-cts-278-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-279-data") {
+  sources = [ "data/vulkan-279.txt" ]
+  outputs = [ "data/vk-list-279.txt" ]
+}
+fuchsia_component("vulkan-cts-279") {
+  testonly = true
+  manifest = "meta/vulkan-cts-279.cmx"
+  deps = [
+    ":vulkan-cts-279-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-280-data") {
+  sources = [ "data/vulkan-280.txt" ]
+  outputs = [ "data/vk-list-280.txt" ]
+}
+fuchsia_component("vulkan-cts-280") {
+  testonly = true
+  manifest = "meta/vulkan-cts-280.cmx"
+  deps = [
+    ":vulkan-cts-280-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-281-data") {
+  sources = [ "data/vulkan-281.txt" ]
+  outputs = [ "data/vk-list-281.txt" ]
+}
+fuchsia_component("vulkan-cts-281") {
+  testonly = true
+  manifest = "meta/vulkan-cts-281.cmx"
+  deps = [
+    ":vulkan-cts-281-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-282-data") {
+  sources = [ "data/vulkan-282.txt" ]
+  outputs = [ "data/vk-list-282.txt" ]
+}
+fuchsia_component("vulkan-cts-282") {
+  testonly = true
+  manifest = "meta/vulkan-cts-282.cmx"
+  deps = [
+    ":vulkan-cts-282-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-283-data") {
+  sources = [ "data/vulkan-283.txt" ]
+  outputs = [ "data/vk-list-283.txt" ]
+}
+fuchsia_component("vulkan-cts-283") {
+  testonly = true
+  manifest = "meta/vulkan-cts-283.cmx"
+  deps = [
+    ":vulkan-cts-283-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-284-data") {
+  sources = [ "data/vulkan-284.txt" ]
+  outputs = [ "data/vk-list-284.txt" ]
+}
+fuchsia_component("vulkan-cts-284") {
+  testonly = true
+  manifest = "meta/vulkan-cts-284.cmx"
+  deps = [
+    ":vulkan-cts-284-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-285-data") {
+  sources = [ "data/vulkan-285.txt" ]
+  outputs = [ "data/vk-list-285.txt" ]
+}
+fuchsia_component("vulkan-cts-285") {
+  testonly = true
+  manifest = "meta/vulkan-cts-285.cmx"
+  deps = [
+    ":vulkan-cts-285-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-286-data") {
+  sources = [ "data/vulkan-286.txt" ]
+  outputs = [ "data/vk-list-286.txt" ]
+}
+fuchsia_component("vulkan-cts-286") {
+  testonly = true
+  manifest = "meta/vulkan-cts-286.cmx"
+  deps = [
+    ":vulkan-cts-286-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-287-data") {
+  sources = [ "data/vulkan-287.txt" ]
+  outputs = [ "data/vk-list-287.txt" ]
+}
+fuchsia_component("vulkan-cts-287") {
+  testonly = true
+  manifest = "meta/vulkan-cts-287.cmx"
+  deps = [
+    ":vulkan-cts-287-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-288-data") {
+  sources = [ "data/vulkan-288.txt" ]
+  outputs = [ "data/vk-list-288.txt" ]
+}
+fuchsia_component("vulkan-cts-288") {
+  testonly = true
+  manifest = "meta/vulkan-cts-288.cmx"
+  deps = [
+    ":vulkan-cts-288-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-289-data") {
+  sources = [ "data/vulkan-289.txt" ]
+  outputs = [ "data/vk-list-289.txt" ]
+}
+fuchsia_component("vulkan-cts-289") {
+  testonly = true
+  manifest = "meta/vulkan-cts-289.cmx"
+  deps = [
+    ":vulkan-cts-289-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-290-data") {
+  sources = [ "data/vulkan-290.txt" ]
+  outputs = [ "data/vk-list-290.txt" ]
+}
+fuchsia_component("vulkan-cts-290") {
+  testonly = true
+  manifest = "meta/vulkan-cts-290.cmx"
+  deps = [
+    ":vulkan-cts-290-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-291-data") {
+  sources = [ "data/vulkan-291.txt" ]
+  outputs = [ "data/vk-list-291.txt" ]
+}
+fuchsia_component("vulkan-cts-291") {
+  testonly = true
+  manifest = "meta/vulkan-cts-291.cmx"
+  deps = [
+    ":vulkan-cts-291-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-292-data") {
+  sources = [ "data/vulkan-292.txt" ]
+  outputs = [ "data/vk-list-292.txt" ]
+}
+fuchsia_component("vulkan-cts-292") {
+  testonly = true
+  manifest = "meta/vulkan-cts-292.cmx"
+  deps = [
+    ":vulkan-cts-292-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-293-data") {
+  sources = [ "data/vulkan-293.txt" ]
+  outputs = [ "data/vk-list-293.txt" ]
+}
+fuchsia_component("vulkan-cts-293") {
+  testonly = true
+  manifest = "meta/vulkan-cts-293.cmx"
+  deps = [
+    ":vulkan-cts-293-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-294-data") {
+  sources = [ "data/vulkan-294.txt" ]
+  outputs = [ "data/vk-list-294.txt" ]
+}
+fuchsia_component("vulkan-cts-294") {
+  testonly = true
+  manifest = "meta/vulkan-cts-294.cmx"
+  deps = [
+    ":vulkan-cts-294-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-295-data") {
+  sources = [ "data/vulkan-295.txt" ]
+  outputs = [ "data/vk-list-295.txt" ]
+}
+fuchsia_component("vulkan-cts-295") {
+  testonly = true
+  manifest = "meta/vulkan-cts-295.cmx"
+  deps = [
+    ":vulkan-cts-295-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-296-data") {
+  sources = [ "data/vulkan-296.txt" ]
+  outputs = [ "data/vk-list-296.txt" ]
+}
+fuchsia_component("vulkan-cts-296") {
+  testonly = true
+  manifest = "meta/vulkan-cts-296.cmx"
+  deps = [
+    ":vulkan-cts-296-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-297-data") {
+  sources = [ "data/vulkan-297.txt" ]
+  outputs = [ "data/vk-list-297.txt" ]
+}
+fuchsia_component("vulkan-cts-297") {
+  testonly = true
+  manifest = "meta/vulkan-cts-297.cmx"
+  deps = [
+    ":vulkan-cts-297-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-298-data") {
+  sources = [ "data/vulkan-298.txt" ]
+  outputs = [ "data/vk-list-298.txt" ]
+}
+fuchsia_component("vulkan-cts-298") {
+  testonly = true
+  manifest = "meta/vulkan-cts-298.cmx"
+  deps = [
+    ":vulkan-cts-298-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-299-data") {
+  sources = [ "data/vulkan-299.txt" ]
+  outputs = [ "data/vk-list-299.txt" ]
+}
+fuchsia_component("vulkan-cts-299") {
+  testonly = true
+  manifest = "meta/vulkan-cts-299.cmx"
+  deps = [
+    ":vulkan-cts-299-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-300-data") {
+  sources = [ "data/vulkan-300.txt" ]
+  outputs = [ "data/vk-list-300.txt" ]
+}
+fuchsia_component("vulkan-cts-300") {
+  testonly = true
+  manifest = "meta/vulkan-cts-300.cmx"
+  deps = [
+    ":vulkan-cts-300-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-301-data") {
+  sources = [ "data/vulkan-301.txt" ]
+  outputs = [ "data/vk-list-301.txt" ]
+}
+fuchsia_component("vulkan-cts-301") {
+  testonly = true
+  manifest = "meta/vulkan-cts-301.cmx"
+  deps = [
+    ":vulkan-cts-301-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-302-data") {
+  sources = [ "data/vulkan-302.txt" ]
+  outputs = [ "data/vk-list-302.txt" ]
+}
+fuchsia_component("vulkan-cts-302") {
+  testonly = true
+  manifest = "meta/vulkan-cts-302.cmx"
+  deps = [
+    ":vulkan-cts-302-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-303-data") {
+  sources = [ "data/vulkan-303.txt" ]
+  outputs = [ "data/vk-list-303.txt" ]
+}
+fuchsia_component("vulkan-cts-303") {
+  testonly = true
+  manifest = "meta/vulkan-cts-303.cmx"
+  deps = [
+    ":vulkan-cts-303-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-304-data") {
+  sources = [ "data/vulkan-304.txt" ]
+  outputs = [ "data/vk-list-304.txt" ]
+}
+fuchsia_component("vulkan-cts-304") {
+  testonly = true
+  manifest = "meta/vulkan-cts-304.cmx"
+  deps = [
+    ":vulkan-cts-304-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-305-data") {
+  sources = [ "data/vulkan-305.txt" ]
+  outputs = [ "data/vk-list-305.txt" ]
+}
+fuchsia_component("vulkan-cts-305") {
+  testonly = true
+  manifest = "meta/vulkan-cts-305.cmx"
+  deps = [
+    ":vulkan-cts-305-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-306-data") {
+  sources = [ "data/vulkan-306.txt" ]
+  outputs = [ "data/vk-list-306.txt" ]
+}
+fuchsia_component("vulkan-cts-306") {
+  testonly = true
+  manifest = "meta/vulkan-cts-306.cmx"
+  deps = [
+    ":vulkan-cts-306-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-307-data") {
+  sources = [ "data/vulkan-307.txt" ]
+  outputs = [ "data/vk-list-307.txt" ]
+}
+fuchsia_component("vulkan-cts-307") {
+  testonly = true
+  manifest = "meta/vulkan-cts-307.cmx"
+  deps = [
+    ":vulkan-cts-307-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-308-data") {
+  sources = [ "data/vulkan-308.txt" ]
+  outputs = [ "data/vk-list-308.txt" ]
+}
+fuchsia_component("vulkan-cts-308") {
+  testonly = true
+  manifest = "meta/vulkan-cts-308.cmx"
+  deps = [
+    ":vulkan-cts-308-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-309-data") {
+  sources = [ "data/vulkan-309.txt" ]
+  outputs = [ "data/vk-list-309.txt" ]
+}
+fuchsia_component("vulkan-cts-309") {
+  testonly = true
+  manifest = "meta/vulkan-cts-309.cmx"
+  deps = [
+    ":vulkan-cts-309-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-310-data") {
+  sources = [ "data/vulkan-310.txt" ]
+  outputs = [ "data/vk-list-310.txt" ]
+}
+fuchsia_component("vulkan-cts-310") {
+  testonly = true
+  manifest = "meta/vulkan-cts-310.cmx"
+  deps = [
+    ":vulkan-cts-310-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-311-data") {
+  sources = [ "data/vulkan-311.txt" ]
+  outputs = [ "data/vk-list-311.txt" ]
+}
+fuchsia_component("vulkan-cts-311") {
+  testonly = true
+  manifest = "meta/vulkan-cts-311.cmx"
+  deps = [
+    ":vulkan-cts-311-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-312-data") {
+  sources = [ "data/vulkan-312.txt" ]
+  outputs = [ "data/vk-list-312.txt" ]
+}
+fuchsia_component("vulkan-cts-312") {
+  testonly = true
+  manifest = "meta/vulkan-cts-312.cmx"
+  deps = [
+    ":vulkan-cts-312-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-313-data") {
+  sources = [ "data/vulkan-313.txt" ]
+  outputs = [ "data/vk-list-313.txt" ]
+}
+fuchsia_component("vulkan-cts-313") {
+  testonly = true
+  manifest = "meta/vulkan-cts-313.cmx"
+  deps = [
+    ":vulkan-cts-313-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-314-data") {
+  sources = [ "data/vulkan-314.txt" ]
+  outputs = [ "data/vk-list-314.txt" ]
+}
+fuchsia_component("vulkan-cts-314") {
+  testonly = true
+  manifest = "meta/vulkan-cts-314.cmx"
+  deps = [
+    ":vulkan-cts-314-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-315-data") {
+  sources = [ "data/vulkan-315.txt" ]
+  outputs = [ "data/vk-list-315.txt" ]
+}
+fuchsia_component("vulkan-cts-315") {
+  testonly = true
+  manifest = "meta/vulkan-cts-315.cmx"
+  deps = [
+    ":vulkan-cts-315-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-316-data") {
+  sources = [ "data/vulkan-316.txt" ]
+  outputs = [ "data/vk-list-316.txt" ]
+}
+fuchsia_component("vulkan-cts-316") {
+  testonly = true
+  manifest = "meta/vulkan-cts-316.cmx"
+  deps = [
+    ":vulkan-cts-316-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-317-data") {
+  sources = [ "data/vulkan-317.txt" ]
+  outputs = [ "data/vk-list-317.txt" ]
+}
+fuchsia_component("vulkan-cts-317") {
+  testonly = true
+  manifest = "meta/vulkan-cts-317.cmx"
+  deps = [
+    ":vulkan-cts-317-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-318-data") {
+  sources = [ "data/vulkan-318.txt" ]
+  outputs = [ "data/vk-list-318.txt" ]
+}
+fuchsia_component("vulkan-cts-318") {
+  testonly = true
+  manifest = "meta/vulkan-cts-318.cmx"
+  deps = [
+    ":vulkan-cts-318-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-319-data") {
+  sources = [ "data/vulkan-319.txt" ]
+  outputs = [ "data/vk-list-319.txt" ]
+}
+fuchsia_component("vulkan-cts-319") {
+  testonly = true
+  manifest = "meta/vulkan-cts-319.cmx"
+  deps = [
+    ":vulkan-cts-319-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-320-data") {
+  sources = [ "data/vulkan-320.txt" ]
+  outputs = [ "data/vk-list-320.txt" ]
+}
+fuchsia_component("vulkan-cts-320") {
+  testonly = true
+  manifest = "meta/vulkan-cts-320.cmx"
+  deps = [
+    ":vulkan-cts-320-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-321-data") {
+  sources = [ "data/vulkan-321.txt" ]
+  outputs = [ "data/vk-list-321.txt" ]
+}
+fuchsia_component("vulkan-cts-321") {
+  testonly = true
+  manifest = "meta/vulkan-cts-321.cmx"
+  deps = [
+    ":vulkan-cts-321-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-322-data") {
+  sources = [ "data/vulkan-322.txt" ]
+  outputs = [ "data/vk-list-322.txt" ]
+}
+fuchsia_component("vulkan-cts-322") {
+  testonly = true
+  manifest = "meta/vulkan-cts-322.cmx"
+  deps = [
+    ":vulkan-cts-322-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-323-data") {
+  sources = [ "data/vulkan-323.txt" ]
+  outputs = [ "data/vk-list-323.txt" ]
+}
+fuchsia_component("vulkan-cts-323") {
+  testonly = true
+  manifest = "meta/vulkan-cts-323.cmx"
+  deps = [
+    ":vulkan-cts-323-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-324-data") {
+  sources = [ "data/vulkan-324.txt" ]
+  outputs = [ "data/vk-list-324.txt" ]
+}
+fuchsia_component("vulkan-cts-324") {
+  testonly = true
+  manifest = "meta/vulkan-cts-324.cmx"
+  deps = [
+    ":vulkan-cts-324-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-325-data") {
+  sources = [ "data/vulkan-325.txt" ]
+  outputs = [ "data/vk-list-325.txt" ]
+}
+fuchsia_component("vulkan-cts-325") {
+  testonly = true
+  manifest = "meta/vulkan-cts-325.cmx"
+  deps = [
+    ":vulkan-cts-325-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-326-data") {
+  sources = [ "data/vulkan-326.txt" ]
+  outputs = [ "data/vk-list-326.txt" ]
+}
+fuchsia_component("vulkan-cts-326") {
+  testonly = true
+  manifest = "meta/vulkan-cts-326.cmx"
+  deps = [
+    ":vulkan-cts-326-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-327-data") {
+  sources = [ "data/vulkan-327.txt" ]
+  outputs = [ "data/vk-list-327.txt" ]
+}
+fuchsia_component("vulkan-cts-327") {
+  testonly = true
+  manifest = "meta/vulkan-cts-327.cmx"
+  deps = [
+    ":vulkan-cts-327-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-328-data") {
+  sources = [ "data/vulkan-328.txt" ]
+  outputs = [ "data/vk-list-328.txt" ]
+}
+fuchsia_component("vulkan-cts-328") {
+  testonly = true
+  manifest = "meta/vulkan-cts-328.cmx"
+  deps = [
+    ":vulkan-cts-328-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-329-data") {
+  sources = [ "data/vulkan-329.txt" ]
+  outputs = [ "data/vk-list-329.txt" ]
+}
+fuchsia_component("vulkan-cts-329") {
+  testonly = true
+  manifest = "meta/vulkan-cts-329.cmx"
+  deps = [
+    ":vulkan-cts-329-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-330-data") {
+  sources = [ "data/vulkan-330.txt" ]
+  outputs = [ "data/vk-list-330.txt" ]
+}
+fuchsia_component("vulkan-cts-330") {
+  testonly = true
+  manifest = "meta/vulkan-cts-330.cmx"
+  deps = [
+    ":vulkan-cts-330-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-331-data") {
+  sources = [ "data/vulkan-331.txt" ]
+  outputs = [ "data/vk-list-331.txt" ]
+}
+fuchsia_component("vulkan-cts-331") {
+  testonly = true
+  manifest = "meta/vulkan-cts-331.cmx"
+  deps = [
+    ":vulkan-cts-331-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-332-data") {
+  sources = [ "data/vulkan-332.txt" ]
+  outputs = [ "data/vk-list-332.txt" ]
+}
+fuchsia_component("vulkan-cts-332") {
+  testonly = true
+  manifest = "meta/vulkan-cts-332.cmx"
+  deps = [
+    ":vulkan-cts-332-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-333-data") {
+  sources = [ "data/vulkan-333.txt" ]
+  outputs = [ "data/vk-list-333.txt" ]
+}
+fuchsia_component("vulkan-cts-333") {
+  testonly = true
+  manifest = "meta/vulkan-cts-333.cmx"
+  deps = [
+    ":vulkan-cts-333-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-334-data") {
+  sources = [ "data/vulkan-334.txt" ]
+  outputs = [ "data/vk-list-334.txt" ]
+}
+fuchsia_component("vulkan-cts-334") {
+  testonly = true
+  manifest = "meta/vulkan-cts-334.cmx"
+  deps = [
+    ":vulkan-cts-334-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-335-data") {
+  sources = [ "data/vulkan-335.txt" ]
+  outputs = [ "data/vk-list-335.txt" ]
+}
+fuchsia_component("vulkan-cts-335") {
+  testonly = true
+  manifest = "meta/vulkan-cts-335.cmx"
+  deps = [
+    ":vulkan-cts-335-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-336-data") {
+  sources = [ "data/vulkan-336.txt" ]
+  outputs = [ "data/vk-list-336.txt" ]
+}
+fuchsia_component("vulkan-cts-336") {
+  testonly = true
+  manifest = "meta/vulkan-cts-336.cmx"
+  deps = [
+    ":vulkan-cts-336-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-337-data") {
+  sources = [ "data/vulkan-337.txt" ]
+  outputs = [ "data/vk-list-337.txt" ]
+}
+fuchsia_component("vulkan-cts-337") {
+  testonly = true
+  manifest = "meta/vulkan-cts-337.cmx"
+  deps = [
+    ":vulkan-cts-337-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-338-data") {
+  sources = [ "data/vulkan-338.txt" ]
+  outputs = [ "data/vk-list-338.txt" ]
+}
+fuchsia_component("vulkan-cts-338") {
+  testonly = true
+  manifest = "meta/vulkan-cts-338.cmx"
+  deps = [
+    ":vulkan-cts-338-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-339-data") {
+  sources = [ "data/vulkan-339.txt" ]
+  outputs = [ "data/vk-list-339.txt" ]
+}
+fuchsia_component("vulkan-cts-339") {
+  testonly = true
+  manifest = "meta/vulkan-cts-339.cmx"
+  deps = [
+    ":vulkan-cts-339-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-340-data") {
+  sources = [ "data/vulkan-340.txt" ]
+  outputs = [ "data/vk-list-340.txt" ]
+}
+fuchsia_component("vulkan-cts-340") {
+  testonly = true
+  manifest = "meta/vulkan-cts-340.cmx"
+  deps = [
+    ":vulkan-cts-340-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-341-data") {
+  sources = [ "data/vulkan-341.txt" ]
+  outputs = [ "data/vk-list-341.txt" ]
+}
+fuchsia_component("vulkan-cts-341") {
+  testonly = true
+  manifest = "meta/vulkan-cts-341.cmx"
+  deps = [
+    ":vulkan-cts-341-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-342-data") {
+  sources = [ "data/vulkan-342.txt" ]
+  outputs = [ "data/vk-list-342.txt" ]
+}
+fuchsia_component("vulkan-cts-342") {
+  testonly = true
+  manifest = "meta/vulkan-cts-342.cmx"
+  deps = [
+    ":vulkan-cts-342-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-343-data") {
+  sources = [ "data/vulkan-343.txt" ]
+  outputs = [ "data/vk-list-343.txt" ]
+}
+fuchsia_component("vulkan-cts-343") {
+  testonly = true
+  manifest = "meta/vulkan-cts-343.cmx"
+  deps = [
+    ":vulkan-cts-343-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-344-data") {
+  sources = [ "data/vulkan-344.txt" ]
+  outputs = [ "data/vk-list-344.txt" ]
+}
+fuchsia_component("vulkan-cts-344") {
+  testonly = true
+  manifest = "meta/vulkan-cts-344.cmx"
+  deps = [
+    ":vulkan-cts-344-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-345-data") {
+  sources = [ "data/vulkan-345.txt" ]
+  outputs = [ "data/vk-list-345.txt" ]
+}
+fuchsia_component("vulkan-cts-345") {
+  testonly = true
+  manifest = "meta/vulkan-cts-345.cmx"
+  deps = [
+    ":vulkan-cts-345-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-346-data") {
+  sources = [ "data/vulkan-346.txt" ]
+  outputs = [ "data/vk-list-346.txt" ]
+}
+fuchsia_component("vulkan-cts-346") {
+  testonly = true
+  manifest = "meta/vulkan-cts-346.cmx"
+  deps = [
+    ":vulkan-cts-346-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-347-data") {
+  sources = [ "data/vulkan-347.txt" ]
+  outputs = [ "data/vk-list-347.txt" ]
+}
+fuchsia_component("vulkan-cts-347") {
+  testonly = true
+  manifest = "meta/vulkan-cts-347.cmx"
+  deps = [
+    ":vulkan-cts-347-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-348-data") {
+  sources = [ "data/vulkan-348.txt" ]
+  outputs = [ "data/vk-list-348.txt" ]
+}
+fuchsia_component("vulkan-cts-348") {
+  testonly = true
+  manifest = "meta/vulkan-cts-348.cmx"
+  deps = [
+    ":vulkan-cts-348-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-349-data") {
+  sources = [ "data/vulkan-349.txt" ]
+  outputs = [ "data/vk-list-349.txt" ]
+}
+fuchsia_component("vulkan-cts-349") {
+  testonly = true
+  manifest = "meta/vulkan-cts-349.cmx"
+  deps = [
+    ":vulkan-cts-349-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-350-data") {
+  sources = [ "data/vulkan-350.txt" ]
+  outputs = [ "data/vk-list-350.txt" ]
+}
+fuchsia_component("vulkan-cts-350") {
+  testonly = true
+  manifest = "meta/vulkan-cts-350.cmx"
+  deps = [
+    ":vulkan-cts-350-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-351-data") {
+  sources = [ "data/vulkan-351.txt" ]
+  outputs = [ "data/vk-list-351.txt" ]
+}
+fuchsia_component("vulkan-cts-351") {
+  testonly = true
+  manifest = "meta/vulkan-cts-351.cmx"
+  deps = [
+    ":vulkan-cts-351-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-352-data") {
+  sources = [ "data/vulkan-352.txt" ]
+  outputs = [ "data/vk-list-352.txt" ]
+}
+fuchsia_component("vulkan-cts-352") {
+  testonly = true
+  manifest = "meta/vulkan-cts-352.cmx"
+  deps = [
+    ":vulkan-cts-352-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-353-data") {
+  sources = [ "data/vulkan-353.txt" ]
+  outputs = [ "data/vk-list-353.txt" ]
+}
+fuchsia_component("vulkan-cts-353") {
+  testonly = true
+  manifest = "meta/vulkan-cts-353.cmx"
+  deps = [
+    ":vulkan-cts-353-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-354-data") {
+  sources = [ "data/vulkan-354.txt" ]
+  outputs = [ "data/vk-list-354.txt" ]
+}
+fuchsia_component("vulkan-cts-354") {
+  testonly = true
+  manifest = "meta/vulkan-cts-354.cmx"
+  deps = [
+    ":vulkan-cts-354-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-355-data") {
+  sources = [ "data/vulkan-355.txt" ]
+  outputs = [ "data/vk-list-355.txt" ]
+}
+fuchsia_component("vulkan-cts-355") {
+  testonly = true
+  manifest = "meta/vulkan-cts-355.cmx"
+  deps = [
+    ":vulkan-cts-355-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-356-data") {
+  sources = [ "data/vulkan-356.txt" ]
+  outputs = [ "data/vk-list-356.txt" ]
+}
+fuchsia_component("vulkan-cts-356") {
+  testonly = true
+  manifest = "meta/vulkan-cts-356.cmx"
+  deps = [
+    ":vulkan-cts-356-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-357-data") {
+  sources = [ "data/vulkan-357.txt" ]
+  outputs = [ "data/vk-list-357.txt" ]
+}
+fuchsia_component("vulkan-cts-357") {
+  testonly = true
+  manifest = "meta/vulkan-cts-357.cmx"
+  deps = [
+    ":vulkan-cts-357-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-358-data") {
+  sources = [ "data/vulkan-358.txt" ]
+  outputs = [ "data/vk-list-358.txt" ]
+}
+fuchsia_component("vulkan-cts-358") {
+  testonly = true
+  manifest = "meta/vulkan-cts-358.cmx"
+  deps = [
+    ":vulkan-cts-358-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-359-data") {
+  sources = [ "data/vulkan-359.txt" ]
+  outputs = [ "data/vk-list-359.txt" ]
+}
+fuchsia_component("vulkan-cts-359") {
+  testonly = true
+  manifest = "meta/vulkan-cts-359.cmx"
+  deps = [
+    ":vulkan-cts-359-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-360-data") {
+  sources = [ "data/vulkan-360.txt" ]
+  outputs = [ "data/vk-list-360.txt" ]
+}
+fuchsia_component("vulkan-cts-360") {
+  testonly = true
+  manifest = "meta/vulkan-cts-360.cmx"
+  deps = [
+    ":vulkan-cts-360-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-361-data") {
+  sources = [ "data/vulkan-361.txt" ]
+  outputs = [ "data/vk-list-361.txt" ]
+}
+fuchsia_component("vulkan-cts-361") {
+  testonly = true
+  manifest = "meta/vulkan-cts-361.cmx"
+  deps = [
+    ":vulkan-cts-361-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-362-data") {
+  sources = [ "data/vulkan-362.txt" ]
+  outputs = [ "data/vk-list-362.txt" ]
+}
+fuchsia_component("vulkan-cts-362") {
+  testonly = true
+  manifest = "meta/vulkan-cts-362.cmx"
+  deps = [
+    ":vulkan-cts-362-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-363-data") {
+  sources = [ "data/vulkan-363.txt" ]
+  outputs = [ "data/vk-list-363.txt" ]
+}
+fuchsia_component("vulkan-cts-363") {
+  testonly = true
+  manifest = "meta/vulkan-cts-363.cmx"
+  deps = [
+    ":vulkan-cts-363-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-364-data") {
+  sources = [ "data/vulkan-364.txt" ]
+  outputs = [ "data/vk-list-364.txt" ]
+}
+fuchsia_component("vulkan-cts-364") {
+  testonly = true
+  manifest = "meta/vulkan-cts-364.cmx"
+  deps = [
+    ":vulkan-cts-364-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-365-data") {
+  sources = [ "data/vulkan-365.txt" ]
+  outputs = [ "data/vk-list-365.txt" ]
+}
+fuchsia_component("vulkan-cts-365") {
+  testonly = true
+  manifest = "meta/vulkan-cts-365.cmx"
+  deps = [
+    ":vulkan-cts-365-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-366-data") {
+  sources = [ "data/vulkan-366.txt" ]
+  outputs = [ "data/vk-list-366.txt" ]
+}
+fuchsia_component("vulkan-cts-366") {
+  testonly = true
+  manifest = "meta/vulkan-cts-366.cmx"
+  deps = [
+    ":vulkan-cts-366-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-367-data") {
+  sources = [ "data/vulkan-367.txt" ]
+  outputs = [ "data/vk-list-367.txt" ]
+}
+fuchsia_component("vulkan-cts-367") {
+  testonly = true
+  manifest = "meta/vulkan-cts-367.cmx"
+  deps = [
+    ":vulkan-cts-367-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-368-data") {
+  sources = [ "data/vulkan-368.txt" ]
+  outputs = [ "data/vk-list-368.txt" ]
+}
+fuchsia_component("vulkan-cts-368") {
+  testonly = true
+  manifest = "meta/vulkan-cts-368.cmx"
+  deps = [
+    ":vulkan-cts-368-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-369-data") {
+  sources = [ "data/vulkan-369.txt" ]
+  outputs = [ "data/vk-list-369.txt" ]
+}
+fuchsia_component("vulkan-cts-369") {
+  testonly = true
+  manifest = "meta/vulkan-cts-369.cmx"
+  deps = [
+    ":vulkan-cts-369-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-370-data") {
+  sources = [ "data/vulkan-370.txt" ]
+  outputs = [ "data/vk-list-370.txt" ]
+}
+fuchsia_component("vulkan-cts-370") {
+  testonly = true
+  manifest = "meta/vulkan-cts-370.cmx"
+  deps = [
+    ":vulkan-cts-370-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-371-data") {
+  sources = [ "data/vulkan-371.txt" ]
+  outputs = [ "data/vk-list-371.txt" ]
+}
+fuchsia_component("vulkan-cts-371") {
+  testonly = true
+  manifest = "meta/vulkan-cts-371.cmx"
+  deps = [
+    ":vulkan-cts-371-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-372-data") {
+  sources = [ "data/vulkan-372.txt" ]
+  outputs = [ "data/vk-list-372.txt" ]
+}
+fuchsia_component("vulkan-cts-372") {
+  testonly = true
+  manifest = "meta/vulkan-cts-372.cmx"
+  deps = [
+    ":vulkan-cts-372-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-373-data") {
+  sources = [ "data/vulkan-373.txt" ]
+  outputs = [ "data/vk-list-373.txt" ]
+}
+fuchsia_component("vulkan-cts-373") {
+  testonly = true
+  manifest = "meta/vulkan-cts-373.cmx"
+  deps = [
+    ":vulkan-cts-373-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-374-data") {
+  sources = [ "data/vulkan-374.txt" ]
+  outputs = [ "data/vk-list-374.txt" ]
+}
+fuchsia_component("vulkan-cts-374") {
+  testonly = true
+  manifest = "meta/vulkan-cts-374.cmx"
+  deps = [
+    ":vulkan-cts-374-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-375-data") {
+  sources = [ "data/vulkan-375.txt" ]
+  outputs = [ "data/vk-list-375.txt" ]
+}
+fuchsia_component("vulkan-cts-375") {
+  testonly = true
+  manifest = "meta/vulkan-cts-375.cmx"
+  deps = [
+    ":vulkan-cts-375-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-376-data") {
+  sources = [ "data/vulkan-376.txt" ]
+  outputs = [ "data/vk-list-376.txt" ]
+}
+fuchsia_component("vulkan-cts-376") {
+  testonly = true
+  manifest = "meta/vulkan-cts-376.cmx"
+  deps = [
+    ":vulkan-cts-376-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-377-data") {
+  sources = [ "data/vulkan-377.txt" ]
+  outputs = [ "data/vk-list-377.txt" ]
+}
+fuchsia_component("vulkan-cts-377") {
+  testonly = true
+  manifest = "meta/vulkan-cts-377.cmx"
+  deps = [
+    ":vulkan-cts-377-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-378-data") {
+  sources = [ "data/vulkan-378.txt" ]
+  outputs = [ "data/vk-list-378.txt" ]
+}
+fuchsia_component("vulkan-cts-378") {
+  testonly = true
+  manifest = "meta/vulkan-cts-378.cmx"
+  deps = [
+    ":vulkan-cts-378-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-379-data") {
+  sources = [ "data/vulkan-379.txt" ]
+  outputs = [ "data/vk-list-379.txt" ]
+}
+fuchsia_component("vulkan-cts-379") {
+  testonly = true
+  manifest = "meta/vulkan-cts-379.cmx"
+  deps = [
+    ":vulkan-cts-379-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-380-data") {
+  sources = [ "data/vulkan-380.txt" ]
+  outputs = [ "data/vk-list-380.txt" ]
+}
+fuchsia_component("vulkan-cts-380") {
+  testonly = true
+  manifest = "meta/vulkan-cts-380.cmx"
+  deps = [
+    ":vulkan-cts-380-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-381-data") {
+  sources = [ "data/vulkan-381.txt" ]
+  outputs = [ "data/vk-list-381.txt" ]
+}
+fuchsia_component("vulkan-cts-381") {
+  testonly = true
+  manifest = "meta/vulkan-cts-381.cmx"
+  deps = [
+    ":vulkan-cts-381-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-382-data") {
+  sources = [ "data/vulkan-382.txt" ]
+  outputs = [ "data/vk-list-382.txt" ]
+}
+fuchsia_component("vulkan-cts-382") {
+  testonly = true
+  manifest = "meta/vulkan-cts-382.cmx"
+  deps = [
+    ":vulkan-cts-382-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-383-data") {
+  sources = [ "data/vulkan-383.txt" ]
+  outputs = [ "data/vk-list-383.txt" ]
+}
+fuchsia_component("vulkan-cts-383") {
+  testonly = true
+  manifest = "meta/vulkan-cts-383.cmx"
+  deps = [
+    ":vulkan-cts-383-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-384-data") {
+  sources = [ "data/vulkan-384.txt" ]
+  outputs = [ "data/vk-list-384.txt" ]
+}
+fuchsia_component("vulkan-cts-384") {
+  testonly = true
+  manifest = "meta/vulkan-cts-384.cmx"
+  deps = [
+    ":vulkan-cts-384-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-385-data") {
+  sources = [ "data/vulkan-385.txt" ]
+  outputs = [ "data/vk-list-385.txt" ]
+}
+fuchsia_component("vulkan-cts-385") {
+  testonly = true
+  manifest = "meta/vulkan-cts-385.cmx"
+  deps = [
+    ":vulkan-cts-385-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-386-data") {
+  sources = [ "data/vulkan-386.txt" ]
+  outputs = [ "data/vk-list-386.txt" ]
+}
+fuchsia_component("vulkan-cts-386") {
+  testonly = true
+  manifest = "meta/vulkan-cts-386.cmx"
+  deps = [
+    ":vulkan-cts-386-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-387-data") {
+  sources = [ "data/vulkan-387.txt" ]
+  outputs = [ "data/vk-list-387.txt" ]
+}
+fuchsia_component("vulkan-cts-387") {
+  testonly = true
+  manifest = "meta/vulkan-cts-387.cmx"
+  deps = [
+    ":vulkan-cts-387-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-388-data") {
+  sources = [ "data/vulkan-388.txt" ]
+  outputs = [ "data/vk-list-388.txt" ]
+}
+fuchsia_component("vulkan-cts-388") {
+  testonly = true
+  manifest = "meta/vulkan-cts-388.cmx"
+  deps = [
+    ":vulkan-cts-388-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-389-data") {
+  sources = [ "data/vulkan-389.txt" ]
+  outputs = [ "data/vk-list-389.txt" ]
+}
+fuchsia_component("vulkan-cts-389") {
+  testonly = true
+  manifest = "meta/vulkan-cts-389.cmx"
+  deps = [
+    ":vulkan-cts-389-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-390-data") {
+  sources = [ "data/vulkan-390.txt" ]
+  outputs = [ "data/vk-list-390.txt" ]
+}
+fuchsia_component("vulkan-cts-390") {
+  testonly = true
+  manifest = "meta/vulkan-cts-390.cmx"
+  deps = [
+    ":vulkan-cts-390-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-391-data") {
+  sources = [ "data/vulkan-391.txt" ]
+  outputs = [ "data/vk-list-391.txt" ]
+}
+fuchsia_component("vulkan-cts-391") {
+  testonly = true
+  manifest = "meta/vulkan-cts-391.cmx"
+  deps = [
+    ":vulkan-cts-391-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-392-data") {
+  sources = [ "data/vulkan-392.txt" ]
+  outputs = [ "data/vk-list-392.txt" ]
+}
+fuchsia_component("vulkan-cts-392") {
+  testonly = true
+  manifest = "meta/vulkan-cts-392.cmx"
+  deps = [
+    ":vulkan-cts-392-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-393-data") {
+  sources = [ "data/vulkan-393.txt" ]
+  outputs = [ "data/vk-list-393.txt" ]
+}
+fuchsia_component("vulkan-cts-393") {
+  testonly = true
+  manifest = "meta/vulkan-cts-393.cmx"
+  deps = [
+    ":vulkan-cts-393-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-394-data") {
+  sources = [ "data/vulkan-394.txt" ]
+  outputs = [ "data/vk-list-394.txt" ]
+}
+fuchsia_component("vulkan-cts-394") {
+  testonly = true
+  manifest = "meta/vulkan-cts-394.cmx"
+  deps = [
+    ":vulkan-cts-394-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-395-data") {
+  sources = [ "data/vulkan-395.txt" ]
+  outputs = [ "data/vk-list-395.txt" ]
+}
+fuchsia_component("vulkan-cts-395") {
+  testonly = true
+  manifest = "meta/vulkan-cts-395.cmx"
+  deps = [
+    ":vulkan-cts-395-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-396-data") {
+  sources = [ "data/vulkan-396.txt" ]
+  outputs = [ "data/vk-list-396.txt" ]
+}
+fuchsia_component("vulkan-cts-396") {
+  testonly = true
+  manifest = "meta/vulkan-cts-396.cmx"
+  deps = [
+    ":vulkan-cts-396-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-397-data") {
+  sources = [ "data/vulkan-397.txt" ]
+  outputs = [ "data/vk-list-397.txt" ]
+}
+fuchsia_component("vulkan-cts-397") {
+  testonly = true
+  manifest = "meta/vulkan-cts-397.cmx"
+  deps = [
+    ":vulkan-cts-397-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-398-data") {
+  sources = [ "data/vulkan-398.txt" ]
+  outputs = [ "data/vk-list-398.txt" ]
+}
+fuchsia_component("vulkan-cts-398") {
+  testonly = true
+  manifest = "meta/vulkan-cts-398.cmx"
+  deps = [
+    ":vulkan-cts-398-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-399-data") {
+  sources = [ "data/vulkan-399.txt" ]
+  outputs = [ "data/vk-list-399.txt" ]
+}
+fuchsia_component("vulkan-cts-399") {
+  testonly = true
+  manifest = "meta/vulkan-cts-399.cmx"
+  deps = [
+    ":vulkan-cts-399-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-400-data") {
+  sources = [ "data/vulkan-400.txt" ]
+  outputs = [ "data/vk-list-400.txt" ]
+}
+fuchsia_component("vulkan-cts-400") {
+  testonly = true
+  manifest = "meta/vulkan-cts-400.cmx"
+  deps = [
+    ":vulkan-cts-400-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-401-data") {
+  sources = [ "data/vulkan-401.txt" ]
+  outputs = [ "data/vk-list-401.txt" ]
+}
+fuchsia_component("vulkan-cts-401") {
+  testonly = true
+  manifest = "meta/vulkan-cts-401.cmx"
+  deps = [
+    ":vulkan-cts-401-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-402-data") {
+  sources = [ "data/vulkan-402.txt" ]
+  outputs = [ "data/vk-list-402.txt" ]
+}
+fuchsia_component("vulkan-cts-402") {
+  testonly = true
+  manifest = "meta/vulkan-cts-402.cmx"
+  deps = [
+    ":vulkan-cts-402-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-403-data") {
+  sources = [ "data/vulkan-403.txt" ]
+  outputs = [ "data/vk-list-403.txt" ]
+}
+fuchsia_component("vulkan-cts-403") {
+  testonly = true
+  manifest = "meta/vulkan-cts-403.cmx"
+  deps = [
+    ":vulkan-cts-403-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-404-data") {
+  sources = [ "data/vulkan-404.txt" ]
+  outputs = [ "data/vk-list-404.txt" ]
+}
+fuchsia_component("vulkan-cts-404") {
+  testonly = true
+  manifest = "meta/vulkan-cts-404.cmx"
+  deps = [
+    ":vulkan-cts-404-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-405-data") {
+  sources = [ "data/vulkan-405.txt" ]
+  outputs = [ "data/vk-list-405.txt" ]
+}
+fuchsia_component("vulkan-cts-405") {
+  testonly = true
+  manifest = "meta/vulkan-cts-405.cmx"
+  deps = [
+    ":vulkan-cts-405-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-406-data") {
+  sources = [ "data/vulkan-406.txt" ]
+  outputs = [ "data/vk-list-406.txt" ]
+}
+fuchsia_component("vulkan-cts-406") {
+  testonly = true
+  manifest = "meta/vulkan-cts-406.cmx"
+  deps = [
+    ":vulkan-cts-406-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-407-data") {
+  sources = [ "data/vulkan-407.txt" ]
+  outputs = [ "data/vk-list-407.txt" ]
+}
+fuchsia_component("vulkan-cts-407") {
+  testonly = true
+  manifest = "meta/vulkan-cts-407.cmx"
+  deps = [
+    ":vulkan-cts-407-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-408-data") {
+  sources = [ "data/vulkan-408.txt" ]
+  outputs = [ "data/vk-list-408.txt" ]
+}
+fuchsia_component("vulkan-cts-408") {
+  testonly = true
+  manifest = "meta/vulkan-cts-408.cmx"
+  deps = [
+    ":vulkan-cts-408-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-409-data") {
+  sources = [ "data/vulkan-409.txt" ]
+  outputs = [ "data/vk-list-409.txt" ]
+}
+fuchsia_component("vulkan-cts-409") {
+  testonly = true
+  manifest = "meta/vulkan-cts-409.cmx"
+  deps = [
+    ":vulkan-cts-409-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-410-data") {
+  sources = [ "data/vulkan-410.txt" ]
+  outputs = [ "data/vk-list-410.txt" ]
+}
+fuchsia_component("vulkan-cts-410") {
+  testonly = true
+  manifest = "meta/vulkan-cts-410.cmx"
+  deps = [
+    ":vulkan-cts-410-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-411-data") {
+  sources = [ "data/vulkan-411.txt" ]
+  outputs = [ "data/vk-list-411.txt" ]
+}
+fuchsia_component("vulkan-cts-411") {
+  testonly = true
+  manifest = "meta/vulkan-cts-411.cmx"
+  deps = [
+    ":vulkan-cts-411-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-412-data") {
+  sources = [ "data/vulkan-412.txt" ]
+  outputs = [ "data/vk-list-412.txt" ]
+}
+fuchsia_component("vulkan-cts-412") {
+  testonly = true
+  manifest = "meta/vulkan-cts-412.cmx"
+  deps = [
+    ":vulkan-cts-412-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-413-data") {
+  sources = [ "data/vulkan-413.txt" ]
+  outputs = [ "data/vk-list-413.txt" ]
+}
+fuchsia_component("vulkan-cts-413") {
+  testonly = true
+  manifest = "meta/vulkan-cts-413.cmx"
+  deps = [
+    ":vulkan-cts-413-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-414-data") {
+  sources = [ "data/vulkan-414.txt" ]
+  outputs = [ "data/vk-list-414.txt" ]
+}
+fuchsia_component("vulkan-cts-414") {
+  testonly = true
+  manifest = "meta/vulkan-cts-414.cmx"
+  deps = [
+    ":vulkan-cts-414-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-415-data") {
+  sources = [ "data/vulkan-415.txt" ]
+  outputs = [ "data/vk-list-415.txt" ]
+}
+fuchsia_component("vulkan-cts-415") {
+  testonly = true
+  manifest = "meta/vulkan-cts-415.cmx"
+  deps = [
+    ":vulkan-cts-415-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-416-data") {
+  sources = [ "data/vulkan-416.txt" ]
+  outputs = [ "data/vk-list-416.txt" ]
+}
+fuchsia_component("vulkan-cts-416") {
+  testonly = true
+  manifest = "meta/vulkan-cts-416.cmx"
+  deps = [
+    ":vulkan-cts-416-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-417-data") {
+  sources = [ "data/vulkan-417.txt" ]
+  outputs = [ "data/vk-list-417.txt" ]
+}
+fuchsia_component("vulkan-cts-417") {
+  testonly = true
+  manifest = "meta/vulkan-cts-417.cmx"
+  deps = [
+    ":vulkan-cts-417-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-418-data") {
+  sources = [ "data/vulkan-418.txt" ]
+  outputs = [ "data/vk-list-418.txt" ]
+}
+fuchsia_component("vulkan-cts-418") {
+  testonly = true
+  manifest = "meta/vulkan-cts-418.cmx"
+  deps = [
+    ":vulkan-cts-418-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-419-data") {
+  sources = [ "data/vulkan-419.txt" ]
+  outputs = [ "data/vk-list-419.txt" ]
+}
+fuchsia_component("vulkan-cts-419") {
+  testonly = true
+  manifest = "meta/vulkan-cts-419.cmx"
+  deps = [
+    ":vulkan-cts-419-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-420-data") {
+  sources = [ "data/vulkan-420.txt" ]
+  outputs = [ "data/vk-list-420.txt" ]
+}
+fuchsia_component("vulkan-cts-420") {
+  testonly = true
+  manifest = "meta/vulkan-cts-420.cmx"
+  deps = [
+    ":vulkan-cts-420-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-421-data") {
+  sources = [ "data/vulkan-421.txt" ]
+  outputs = [ "data/vk-list-421.txt" ]
+}
+fuchsia_component("vulkan-cts-421") {
+  testonly = true
+  manifest = "meta/vulkan-cts-421.cmx"
+  deps = [
+    ":vulkan-cts-421-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-422-data") {
+  sources = [ "data/vulkan-422.txt" ]
+  outputs = [ "data/vk-list-422.txt" ]
+}
+fuchsia_component("vulkan-cts-422") {
+  testonly = true
+  manifest = "meta/vulkan-cts-422.cmx"
+  deps = [
+    ":vulkan-cts-422-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-423-data") {
+  sources = [ "data/vulkan-423.txt" ]
+  outputs = [ "data/vk-list-423.txt" ]
+}
+fuchsia_component("vulkan-cts-423") {
+  testonly = true
+  manifest = "meta/vulkan-cts-423.cmx"
+  deps = [
+    ":vulkan-cts-423-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-424-data") {
+  sources = [ "data/vulkan-424.txt" ]
+  outputs = [ "data/vk-list-424.txt" ]
+}
+fuchsia_component("vulkan-cts-424") {
+  testonly = true
+  manifest = "meta/vulkan-cts-424.cmx"
+  deps = [
+    ":vulkan-cts-424-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-425-data") {
+  sources = [ "data/vulkan-425.txt" ]
+  outputs = [ "data/vk-list-425.txt" ]
+}
+fuchsia_component("vulkan-cts-425") {
+  testonly = true
+  manifest = "meta/vulkan-cts-425.cmx"
+  deps = [
+    ":vulkan-cts-425-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-426-data") {
+  sources = [ "data/vulkan-426.txt" ]
+  outputs = [ "data/vk-list-426.txt" ]
+}
+fuchsia_component("vulkan-cts-426") {
+  testonly = true
+  manifest = "meta/vulkan-cts-426.cmx"
+  deps = [
+    ":vulkan-cts-426-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-427-data") {
+  sources = [ "data/vulkan-427.txt" ]
+  outputs = [ "data/vk-list-427.txt" ]
+}
+fuchsia_component("vulkan-cts-427") {
+  testonly = true
+  manifest = "meta/vulkan-cts-427.cmx"
+  deps = [
+    ":vulkan-cts-427-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-428-data") {
+  sources = [ "data/vulkan-428.txt" ]
+  outputs = [ "data/vk-list-428.txt" ]
+}
+fuchsia_component("vulkan-cts-428") {
+  testonly = true
+  manifest = "meta/vulkan-cts-428.cmx"
+  deps = [
+    ":vulkan-cts-428-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-429-data") {
+  sources = [ "data/vulkan-429.txt" ]
+  outputs = [ "data/vk-list-429.txt" ]
+}
+fuchsia_component("vulkan-cts-429") {
+  testonly = true
+  manifest = "meta/vulkan-cts-429.cmx"
+  deps = [
+    ":vulkan-cts-429-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-430-data") {
+  sources = [ "data/vulkan-430.txt" ]
+  outputs = [ "data/vk-list-430.txt" ]
+}
+fuchsia_component("vulkan-cts-430") {
+  testonly = true
+  manifest = "meta/vulkan-cts-430.cmx"
+  deps = [
+    ":vulkan-cts-430-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-431-data") {
+  sources = [ "data/vulkan-431.txt" ]
+  outputs = [ "data/vk-list-431.txt" ]
+}
+fuchsia_component("vulkan-cts-431") {
+  testonly = true
+  manifest = "meta/vulkan-cts-431.cmx"
+  deps = [
+    ":vulkan-cts-431-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-432-data") {
+  sources = [ "data/vulkan-432.txt" ]
+  outputs = [ "data/vk-list-432.txt" ]
+}
+fuchsia_component("vulkan-cts-432") {
+  testonly = true
+  manifest = "meta/vulkan-cts-432.cmx"
+  deps = [
+    ":vulkan-cts-432-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-433-data") {
+  sources = [ "data/vulkan-433.txt" ]
+  outputs = [ "data/vk-list-433.txt" ]
+}
+fuchsia_component("vulkan-cts-433") {
+  testonly = true
+  manifest = "meta/vulkan-cts-433.cmx"
+  deps = [
+    ":vulkan-cts-433-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-434-data") {
+  sources = [ "data/vulkan-434.txt" ]
+  outputs = [ "data/vk-list-434.txt" ]
+}
+fuchsia_component("vulkan-cts-434") {
+  testonly = true
+  manifest = "meta/vulkan-cts-434.cmx"
+  deps = [
+    ":vulkan-cts-434-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-435-data") {
+  sources = [ "data/vulkan-435.txt" ]
+  outputs = [ "data/vk-list-435.txt" ]
+}
+fuchsia_component("vulkan-cts-435") {
+  testonly = true
+  manifest = "meta/vulkan-cts-435.cmx"
+  deps = [
+    ":vulkan-cts-435-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-436-data") {
+  sources = [ "data/vulkan-436.txt" ]
+  outputs = [ "data/vk-list-436.txt" ]
+}
+fuchsia_component("vulkan-cts-436") {
+  testonly = true
+  manifest = "meta/vulkan-cts-436.cmx"
+  deps = [
+    ":vulkan-cts-436-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-437-data") {
+  sources = [ "data/vulkan-437.txt" ]
+  outputs = [ "data/vk-list-437.txt" ]
+}
+fuchsia_component("vulkan-cts-437") {
+  testonly = true
+  manifest = "meta/vulkan-cts-437.cmx"
+  deps = [
+    ":vulkan-cts-437-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-438-data") {
+  sources = [ "data/vulkan-438.txt" ]
+  outputs = [ "data/vk-list-438.txt" ]
+}
+fuchsia_component("vulkan-cts-438") {
+  testonly = true
+  manifest = "meta/vulkan-cts-438.cmx"
+  deps = [
+    ":vulkan-cts-438-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-439-data") {
+  sources = [ "data/vulkan-439.txt" ]
+  outputs = [ "data/vk-list-439.txt" ]
+}
+fuchsia_component("vulkan-cts-439") {
+  testonly = true
+  manifest = "meta/vulkan-cts-439.cmx"
+  deps = [
+    ":vulkan-cts-439-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-440-data") {
+  sources = [ "data/vulkan-440.txt" ]
+  outputs = [ "data/vk-list-440.txt" ]
+}
+fuchsia_component("vulkan-cts-440") {
+  testonly = true
+  manifest = "meta/vulkan-cts-440.cmx"
+  deps = [
+    ":vulkan-cts-440-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-441-data") {
+  sources = [ "data/vulkan-441.txt" ]
+  outputs = [ "data/vk-list-441.txt" ]
+}
+fuchsia_component("vulkan-cts-441") {
+  testonly = true
+  manifest = "meta/vulkan-cts-441.cmx"
+  deps = [
+    ":vulkan-cts-441-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-442-data") {
+  sources = [ "data/vulkan-442.txt" ]
+  outputs = [ "data/vk-list-442.txt" ]
+}
+fuchsia_component("vulkan-cts-442") {
+  testonly = true
+  manifest = "meta/vulkan-cts-442.cmx"
+  deps = [
+    ":vulkan-cts-442-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-443-data") {
+  sources = [ "data/vulkan-443.txt" ]
+  outputs = [ "data/vk-list-443.txt" ]
+}
+fuchsia_component("vulkan-cts-443") {
+  testonly = true
+  manifest = "meta/vulkan-cts-443.cmx"
+  deps = [
+    ":vulkan-cts-443-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-444-data") {
+  sources = [ "data/vulkan-444.txt" ]
+  outputs = [ "data/vk-list-444.txt" ]
+}
+fuchsia_component("vulkan-cts-444") {
+  testonly = true
+  manifest = "meta/vulkan-cts-444.cmx"
+  deps = [
+    ":vulkan-cts-444-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-445-data") {
+  sources = [ "data/vulkan-445.txt" ]
+  outputs = [ "data/vk-list-445.txt" ]
+}
+fuchsia_component("vulkan-cts-445") {
+  testonly = true
+  manifest = "meta/vulkan-cts-445.cmx"
+  deps = [
+    ":vulkan-cts-445-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-446-data") {
+  sources = [ "data/vulkan-446.txt" ]
+  outputs = [ "data/vk-list-446.txt" ]
+}
+fuchsia_component("vulkan-cts-446") {
+  testonly = true
+  manifest = "meta/vulkan-cts-446.cmx"
+  deps = [
+    ":vulkan-cts-446-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-447-data") {
+  sources = [ "data/vulkan-447.txt" ]
+  outputs = [ "data/vk-list-447.txt" ]
+}
+fuchsia_component("vulkan-cts-447") {
+  testonly = true
+  manifest = "meta/vulkan-cts-447.cmx"
+  deps = [
+    ":vulkan-cts-447-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-448-data") {
+  sources = [ "data/vulkan-448.txt" ]
+  outputs = [ "data/vk-list-448.txt" ]
+}
+fuchsia_component("vulkan-cts-448") {
+  testonly = true
+  manifest = "meta/vulkan-cts-448.cmx"
+  deps = [
+    ":vulkan-cts-448-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-449-data") {
+  sources = [ "data/vulkan-449.txt" ]
+  outputs = [ "data/vk-list-449.txt" ]
+}
+fuchsia_component("vulkan-cts-449") {
+  testonly = true
+  manifest = "meta/vulkan-cts-449.cmx"
+  deps = [
+    ":vulkan-cts-449-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-450-data") {
+  sources = [ "data/vulkan-450.txt" ]
+  outputs = [ "data/vk-list-450.txt" ]
+}
+fuchsia_component("vulkan-cts-450") {
+  testonly = true
+  manifest = "meta/vulkan-cts-450.cmx"
+  deps = [
+    ":vulkan-cts-450-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-451-data") {
+  sources = [ "data/vulkan-451.txt" ]
+  outputs = [ "data/vk-list-451.txt" ]
+}
+fuchsia_component("vulkan-cts-451") {
+  testonly = true
+  manifest = "meta/vulkan-cts-451.cmx"
+  deps = [
+    ":vulkan-cts-451-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-452-data") {
+  sources = [ "data/vulkan-452.txt" ]
+  outputs = [ "data/vk-list-452.txt" ]
+}
+fuchsia_component("vulkan-cts-452") {
+  testonly = true
+  manifest = "meta/vulkan-cts-452.cmx"
+  deps = [
+    ":vulkan-cts-452-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-453-data") {
+  sources = [ "data/vulkan-453.txt" ]
+  outputs = [ "data/vk-list-453.txt" ]
+}
+fuchsia_component("vulkan-cts-453") {
+  testonly = true
+  manifest = "meta/vulkan-cts-453.cmx"
+  deps = [
+    ":vulkan-cts-453-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-454-data") {
+  sources = [ "data/vulkan-454.txt" ]
+  outputs = [ "data/vk-list-454.txt" ]
+}
+fuchsia_component("vulkan-cts-454") {
+  testonly = true
+  manifest = "meta/vulkan-cts-454.cmx"
+  deps = [
+    ":vulkan-cts-454-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-455-data") {
+  sources = [ "data/vulkan-455.txt" ]
+  outputs = [ "data/vk-list-455.txt" ]
+}
+fuchsia_component("vulkan-cts-455") {
+  testonly = true
+  manifest = "meta/vulkan-cts-455.cmx"
+  deps = [
+    ":vulkan-cts-455-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-456-data") {
+  sources = [ "data/vulkan-456.txt" ]
+  outputs = [ "data/vk-list-456.txt" ]
+}
+fuchsia_component("vulkan-cts-456") {
+  testonly = true
+  manifest = "meta/vulkan-cts-456.cmx"
+  deps = [
+    ":vulkan-cts-456-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-457-data") {
+  sources = [ "data/vulkan-457.txt" ]
+  outputs = [ "data/vk-list-457.txt" ]
+}
+fuchsia_component("vulkan-cts-457") {
+  testonly = true
+  manifest = "meta/vulkan-cts-457.cmx"
+  deps = [
+    ":vulkan-cts-457-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-458-data") {
+  sources = [ "data/vulkan-458.txt" ]
+  outputs = [ "data/vk-list-458.txt" ]
+}
+fuchsia_component("vulkan-cts-458") {
+  testonly = true
+  manifest = "meta/vulkan-cts-458.cmx"
+  deps = [
+    ":vulkan-cts-458-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-459-data") {
+  sources = [ "data/vulkan-459.txt" ]
+  outputs = [ "data/vk-list-459.txt" ]
+}
+fuchsia_component("vulkan-cts-459") {
+  testonly = true
+  manifest = "meta/vulkan-cts-459.cmx"
+  deps = [
+    ":vulkan-cts-459-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-460-data") {
+  sources = [ "data/vulkan-460.txt" ]
+  outputs = [ "data/vk-list-460.txt" ]
+}
+fuchsia_component("vulkan-cts-460") {
+  testonly = true
+  manifest = "meta/vulkan-cts-460.cmx"
+  deps = [
+    ":vulkan-cts-460-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-461-data") {
+  sources = [ "data/vulkan-461.txt" ]
+  outputs = [ "data/vk-list-461.txt" ]
+}
+fuchsia_component("vulkan-cts-461") {
+  testonly = true
+  manifest = "meta/vulkan-cts-461.cmx"
+  deps = [
+    ":vulkan-cts-461-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-462-data") {
+  sources = [ "data/vulkan-462.txt" ]
+  outputs = [ "data/vk-list-462.txt" ]
+}
+fuchsia_component("vulkan-cts-462") {
+  testonly = true
+  manifest = "meta/vulkan-cts-462.cmx"
+  deps = [
+    ":vulkan-cts-462-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-463-data") {
+  sources = [ "data/vulkan-463.txt" ]
+  outputs = [ "data/vk-list-463.txt" ]
+}
+fuchsia_component("vulkan-cts-463") {
+  testonly = true
+  manifest = "meta/vulkan-cts-463.cmx"
+  deps = [
+    ":vulkan-cts-463-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-464-data") {
+  sources = [ "data/vulkan-464.txt" ]
+  outputs = [ "data/vk-list-464.txt" ]
+}
+fuchsia_component("vulkan-cts-464") {
+  testonly = true
+  manifest = "meta/vulkan-cts-464.cmx"
+  deps = [
+    ":vulkan-cts-464-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-465-data") {
+  sources = [ "data/vulkan-465.txt" ]
+  outputs = [ "data/vk-list-465.txt" ]
+}
+fuchsia_component("vulkan-cts-465") {
+  testonly = true
+  manifest = "meta/vulkan-cts-465.cmx"
+  deps = [
+    ":vulkan-cts-465-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-466-data") {
+  sources = [ "data/vulkan-466.txt" ]
+  outputs = [ "data/vk-list-466.txt" ]
+}
+fuchsia_component("vulkan-cts-466") {
+  testonly = true
+  manifest = "meta/vulkan-cts-466.cmx"
+  deps = [
+    ":vulkan-cts-466-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-467-data") {
+  sources = [ "data/vulkan-467.txt" ]
+  outputs = [ "data/vk-list-467.txt" ]
+}
+fuchsia_component("vulkan-cts-467") {
+  testonly = true
+  manifest = "meta/vulkan-cts-467.cmx"
+  deps = [
+    ":vulkan-cts-467-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-468-data") {
+  sources = [ "data/vulkan-468.txt" ]
+  outputs = [ "data/vk-list-468.txt" ]
+}
+fuchsia_component("vulkan-cts-468") {
+  testonly = true
+  manifest = "meta/vulkan-cts-468.cmx"
+  deps = [
+    ":vulkan-cts-468-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-469-data") {
+  sources = [ "data/vulkan-469.txt" ]
+  outputs = [ "data/vk-list-469.txt" ]
+}
+fuchsia_component("vulkan-cts-469") {
+  testonly = true
+  manifest = "meta/vulkan-cts-469.cmx"
+  deps = [
+    ":vulkan-cts-469-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-470-data") {
+  sources = [ "data/vulkan-470.txt" ]
+  outputs = [ "data/vk-list-470.txt" ]
+}
+fuchsia_component("vulkan-cts-470") {
+  testonly = true
+  manifest = "meta/vulkan-cts-470.cmx"
+  deps = [
+    ":vulkan-cts-470-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-471-data") {
+  sources = [ "data/vulkan-471.txt" ]
+  outputs = [ "data/vk-list-471.txt" ]
+}
+fuchsia_component("vulkan-cts-471") {
+  testonly = true
+  manifest = "meta/vulkan-cts-471.cmx"
+  deps = [
+    ":vulkan-cts-471-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-472-data") {
+  sources = [ "data/vulkan-472.txt" ]
+  outputs = [ "data/vk-list-472.txt" ]
+}
+fuchsia_component("vulkan-cts-472") {
+  testonly = true
+  manifest = "meta/vulkan-cts-472.cmx"
+  deps = [
+    ":vulkan-cts-472-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-473-data") {
+  sources = [ "data/vulkan-473.txt" ]
+  outputs = [ "data/vk-list-473.txt" ]
+}
+fuchsia_component("vulkan-cts-473") {
+  testonly = true
+  manifest = "meta/vulkan-cts-473.cmx"
+  deps = [
+    ":vulkan-cts-473-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-474-data") {
+  sources = [ "data/vulkan-474.txt" ]
+  outputs = [ "data/vk-list-474.txt" ]
+}
+fuchsia_component("vulkan-cts-474") {
+  testonly = true
+  manifest = "meta/vulkan-cts-474.cmx"
+  deps = [
+    ":vulkan-cts-474-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-475-data") {
+  sources = [ "data/vulkan-475.txt" ]
+  outputs = [ "data/vk-list-475.txt" ]
+}
+fuchsia_component("vulkan-cts-475") {
+  testonly = true
+  manifest = "meta/vulkan-cts-475.cmx"
+  deps = [
+    ":vulkan-cts-475-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-476-data") {
+  sources = [ "data/vulkan-476.txt" ]
+  outputs = [ "data/vk-list-476.txt" ]
+}
+fuchsia_component("vulkan-cts-476") {
+  testonly = true
+  manifest = "meta/vulkan-cts-476.cmx"
+  deps = [
+    ":vulkan-cts-476-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-477-data") {
+  sources = [ "data/vulkan-477.txt" ]
+  outputs = [ "data/vk-list-477.txt" ]
+}
+fuchsia_component("vulkan-cts-477") {
+  testonly = true
+  manifest = "meta/vulkan-cts-477.cmx"
+  deps = [
+    ":vulkan-cts-477-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-478-data") {
+  sources = [ "data/vulkan-478.txt" ]
+  outputs = [ "data/vk-list-478.txt" ]
+}
+fuchsia_component("vulkan-cts-478") {
+  testonly = true
+  manifest = "meta/vulkan-cts-478.cmx"
+  deps = [
+    ":vulkan-cts-478-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-479-data") {
+  sources = [ "data/vulkan-479.txt" ]
+  outputs = [ "data/vk-list-479.txt" ]
+}
+fuchsia_component("vulkan-cts-479") {
+  testonly = true
+  manifest = "meta/vulkan-cts-479.cmx"
+  deps = [
+    ":vulkan-cts-479-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-480-data") {
+  sources = [ "data/vulkan-480.txt" ]
+  outputs = [ "data/vk-list-480.txt" ]
+}
+fuchsia_component("vulkan-cts-480") {
+  testonly = true
+  manifest = "meta/vulkan-cts-480.cmx"
+  deps = [
+    ":vulkan-cts-480-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-481-data") {
+  sources = [ "data/vulkan-481.txt" ]
+  outputs = [ "data/vk-list-481.txt" ]
+}
+fuchsia_component("vulkan-cts-481") {
+  testonly = true
+  manifest = "meta/vulkan-cts-481.cmx"
+  deps = [
+    ":vulkan-cts-481-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-482-data") {
+  sources = [ "data/vulkan-482.txt" ]
+  outputs = [ "data/vk-list-482.txt" ]
+}
+fuchsia_component("vulkan-cts-482") {
+  testonly = true
+  manifest = "meta/vulkan-cts-482.cmx"
+  deps = [
+    ":vulkan-cts-482-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-483-data") {
+  sources = [ "data/vulkan-483.txt" ]
+  outputs = [ "data/vk-list-483.txt" ]
+}
+fuchsia_component("vulkan-cts-483") {
+  testonly = true
+  manifest = "meta/vulkan-cts-483.cmx"
+  deps = [
+    ":vulkan-cts-483-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-484-data") {
+  sources = [ "data/vulkan-484.txt" ]
+  outputs = [ "data/vk-list-484.txt" ]
+}
+fuchsia_component("vulkan-cts-484") {
+  testonly = true
+  manifest = "meta/vulkan-cts-484.cmx"
+  deps = [
+    ":vulkan-cts-484-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-485-data") {
+  sources = [ "data/vulkan-485.txt" ]
+  outputs = [ "data/vk-list-485.txt" ]
+}
+fuchsia_component("vulkan-cts-485") {
+  testonly = true
+  manifest = "meta/vulkan-cts-485.cmx"
+  deps = [
+    ":vulkan-cts-485-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-486-data") {
+  sources = [ "data/vulkan-486.txt" ]
+  outputs = [ "data/vk-list-486.txt" ]
+}
+fuchsia_component("vulkan-cts-486") {
+  testonly = true
+  manifest = "meta/vulkan-cts-486.cmx"
+  deps = [
+    ":vulkan-cts-486-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-487-data") {
+  sources = [ "data/vulkan-487.txt" ]
+  outputs = [ "data/vk-list-487.txt" ]
+}
+fuchsia_component("vulkan-cts-487") {
+  testonly = true
+  manifest = "meta/vulkan-cts-487.cmx"
+  deps = [
+    ":vulkan-cts-487-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-488-data") {
+  sources = [ "data/vulkan-488.txt" ]
+  outputs = [ "data/vk-list-488.txt" ]
+}
+fuchsia_component("vulkan-cts-488") {
+  testonly = true
+  manifest = "meta/vulkan-cts-488.cmx"
+  deps = [
+    ":vulkan-cts-488-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-489-data") {
+  sources = [ "data/vulkan-489.txt" ]
+  outputs = [ "data/vk-list-489.txt" ]
+}
+fuchsia_component("vulkan-cts-489") {
+  testonly = true
+  manifest = "meta/vulkan-cts-489.cmx"
+  deps = [
+    ":vulkan-cts-489-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-490-data") {
+  sources = [ "data/vulkan-490.txt" ]
+  outputs = [ "data/vk-list-490.txt" ]
+}
+fuchsia_component("vulkan-cts-490") {
+  testonly = true
+  manifest = "meta/vulkan-cts-490.cmx"
+  deps = [
+    ":vulkan-cts-490-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-491-data") {
+  sources = [ "data/vulkan-491.txt" ]
+  outputs = [ "data/vk-list-491.txt" ]
+}
+fuchsia_component("vulkan-cts-491") {
+  testonly = true
+  manifest = "meta/vulkan-cts-491.cmx"
+  deps = [
+    ":vulkan-cts-491-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-492-data") {
+  sources = [ "data/vulkan-492.txt" ]
+  outputs = [ "data/vk-list-492.txt" ]
+}
+fuchsia_component("vulkan-cts-492") {
+  testonly = true
+  manifest = "meta/vulkan-cts-492.cmx"
+  deps = [
+    ":vulkan-cts-492-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-493-data") {
+  sources = [ "data/vulkan-493.txt" ]
+  outputs = [ "data/vk-list-493.txt" ]
+}
+fuchsia_component("vulkan-cts-493") {
+  testonly = true
+  manifest = "meta/vulkan-cts-493.cmx"
+  deps = [
+    ":vulkan-cts-493-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-494-data") {
+  sources = [ "data/vulkan-494.txt" ]
+  outputs = [ "data/vk-list-494.txt" ]
+}
+fuchsia_component("vulkan-cts-494") {
+  testonly = true
+  manifest = "meta/vulkan-cts-494.cmx"
+  deps = [
+    ":vulkan-cts-494-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-495-data") {
+  sources = [ "data/vulkan-495.txt" ]
+  outputs = [ "data/vk-list-495.txt" ]
+}
+fuchsia_component("vulkan-cts-495") {
+  testonly = true
+  manifest = "meta/vulkan-cts-495.cmx"
+  deps = [
+    ":vulkan-cts-495-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-496-data") {
+  sources = [ "data/vulkan-496.txt" ]
+  outputs = [ "data/vk-list-496.txt" ]
+}
+fuchsia_component("vulkan-cts-496") {
+  testonly = true
+  manifest = "meta/vulkan-cts-496.cmx"
+  deps = [
+    ":vulkan-cts-496-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-497-data") {
+  sources = [ "data/vulkan-497.txt" ]
+  outputs = [ "data/vk-list-497.txt" ]
+}
+fuchsia_component("vulkan-cts-497") {
+  testonly = true
+  manifest = "meta/vulkan-cts-497.cmx"
+  deps = [
+    ":vulkan-cts-497-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-498-data") {
+  sources = [ "data/vulkan-498.txt" ]
+  outputs = [ "data/vk-list-498.txt" ]
+}
+fuchsia_component("vulkan-cts-498") {
+  testonly = true
+  manifest = "meta/vulkan-cts-498.cmx"
+  deps = [
+    ":vulkan-cts-498-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-499-data") {
+  sources = [ "data/vulkan-499.txt" ]
+  outputs = [ "data/vk-list-499.txt" ]
+}
+fuchsia_component("vulkan-cts-499") {
+  testonly = true
+  manifest = "meta/vulkan-cts-499.cmx"
+  deps = [
+    ":vulkan-cts-499-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-500-data") {
+  sources = [ "data/vulkan-500.txt" ]
+  outputs = [ "data/vk-list-500.txt" ]
+}
+fuchsia_component("vulkan-cts-500") {
+  testonly = true
+  manifest = "meta/vulkan-cts-500.cmx"
+  deps = [
+    ":vulkan-cts-500-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-501-data") {
+  sources = [ "data/vulkan-501.txt" ]
+  outputs = [ "data/vk-list-501.txt" ]
+}
+fuchsia_component("vulkan-cts-501") {
+  testonly = true
+  manifest = "meta/vulkan-cts-501.cmx"
+  deps = [
+    ":vulkan-cts-501-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-502-data") {
+  sources = [ "data/vulkan-502.txt" ]
+  outputs = [ "data/vk-list-502.txt" ]
+}
+fuchsia_component("vulkan-cts-502") {
+  testonly = true
+  manifest = "meta/vulkan-cts-502.cmx"
+  deps = [
+    ":vulkan-cts-502-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-503-data") {
+  sources = [ "data/vulkan-503.txt" ]
+  outputs = [ "data/vk-list-503.txt" ]
+}
+fuchsia_component("vulkan-cts-503") {
+  testonly = true
+  manifest = "meta/vulkan-cts-503.cmx"
+  deps = [
+    ":vulkan-cts-503-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-504-data") {
+  sources = [ "data/vulkan-504.txt" ]
+  outputs = [ "data/vk-list-504.txt" ]
+}
+fuchsia_component("vulkan-cts-504") {
+  testonly = true
+  manifest = "meta/vulkan-cts-504.cmx"
+  deps = [
+    ":vulkan-cts-504-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-505-data") {
+  sources = [ "data/vulkan-505.txt" ]
+  outputs = [ "data/vk-list-505.txt" ]
+}
+fuchsia_component("vulkan-cts-505") {
+  testonly = true
+  manifest = "meta/vulkan-cts-505.cmx"
+  deps = [
+    ":vulkan-cts-505-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-506-data") {
+  sources = [ "data/vulkan-506.txt" ]
+  outputs = [ "data/vk-list-506.txt" ]
+}
+fuchsia_component("vulkan-cts-506") {
+  testonly = true
+  manifest = "meta/vulkan-cts-506.cmx"
+  deps = [
+    ":vulkan-cts-506-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-507-data") {
+  sources = [ "data/vulkan-507.txt" ]
+  outputs = [ "data/vk-list-507.txt" ]
+}
+fuchsia_component("vulkan-cts-507") {
+  testonly = true
+  manifest = "meta/vulkan-cts-507.cmx"
+  deps = [
+    ":vulkan-cts-507-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-508-data") {
+  sources = [ "data/vulkan-508.txt" ]
+  outputs = [ "data/vk-list-508.txt" ]
+}
+fuchsia_component("vulkan-cts-508") {
+  testonly = true
+  manifest = "meta/vulkan-cts-508.cmx"
+  deps = [
+    ":vulkan-cts-508-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-509-data") {
+  sources = [ "data/vulkan-509.txt" ]
+  outputs = [ "data/vk-list-509.txt" ]
+}
+fuchsia_component("vulkan-cts-509") {
+  testonly = true
+  manifest = "meta/vulkan-cts-509.cmx"
+  deps = [
+    ":vulkan-cts-509-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-510-data") {
+  sources = [ "data/vulkan-510.txt" ]
+  outputs = [ "data/vk-list-510.txt" ]
+}
+fuchsia_component("vulkan-cts-510") {
+  testonly = true
+  manifest = "meta/vulkan-cts-510.cmx"
+  deps = [
+    ":vulkan-cts-510-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-511-data") {
+  sources = [ "data/vulkan-511.txt" ]
+  outputs = [ "data/vk-list-511.txt" ]
+}
+fuchsia_component("vulkan-cts-511") {
+  testonly = true
+  manifest = "meta/vulkan-cts-511.cmx"
+  deps = [
+    ":vulkan-cts-511-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-512-data") {
+  sources = [ "data/vulkan-512.txt" ]
+  outputs = [ "data/vk-list-512.txt" ]
+}
+fuchsia_component("vulkan-cts-512") {
+  testonly = true
+  manifest = "meta/vulkan-cts-512.cmx"
+  deps = [
+    ":vulkan-cts-512-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-513-data") {
+  sources = [ "data/vulkan-513.txt" ]
+  outputs = [ "data/vk-list-513.txt" ]
+}
+fuchsia_component("vulkan-cts-513") {
+  testonly = true
+  manifest = "meta/vulkan-cts-513.cmx"
+  deps = [
+    ":vulkan-cts-513-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-514-data") {
+  sources = [ "data/vulkan-514.txt" ]
+  outputs = [ "data/vk-list-514.txt" ]
+}
+fuchsia_component("vulkan-cts-514") {
+  testonly = true
+  manifest = "meta/vulkan-cts-514.cmx"
+  deps = [
+    ":vulkan-cts-514-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-515-data") {
+  sources = [ "data/vulkan-515.txt" ]
+  outputs = [ "data/vk-list-515.txt" ]
+}
+fuchsia_component("vulkan-cts-515") {
+  testonly = true
+  manifest = "meta/vulkan-cts-515.cmx"
+  deps = [
+    ":vulkan-cts-515-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-516-data") {
+  sources = [ "data/vulkan-516.txt" ]
+  outputs = [ "data/vk-list-516.txt" ]
+}
+fuchsia_component("vulkan-cts-516") {
+  testonly = true
+  manifest = "meta/vulkan-cts-516.cmx"
+  deps = [
+    ":vulkan-cts-516-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-517-data") {
+  sources = [ "data/vulkan-517.txt" ]
+  outputs = [ "data/vk-list-517.txt" ]
+}
+fuchsia_component("vulkan-cts-517") {
+  testonly = true
+  manifest = "meta/vulkan-cts-517.cmx"
+  deps = [
+    ":vulkan-cts-517-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-518-data") {
+  sources = [ "data/vulkan-518.txt" ]
+  outputs = [ "data/vk-list-518.txt" ]
+}
+fuchsia_component("vulkan-cts-518") {
+  testonly = true
+  manifest = "meta/vulkan-cts-518.cmx"
+  deps = [
+    ":vulkan-cts-518-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-519-data") {
+  sources = [ "data/vulkan-519.txt" ]
+  outputs = [ "data/vk-list-519.txt" ]
+}
+fuchsia_component("vulkan-cts-519") {
+  testonly = true
+  manifest = "meta/vulkan-cts-519.cmx"
+  deps = [
+    ":vulkan-cts-519-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-520-data") {
+  sources = [ "data/vulkan-520.txt" ]
+  outputs = [ "data/vk-list-520.txt" ]
+}
+fuchsia_component("vulkan-cts-520") {
+  testonly = true
+  manifest = "meta/vulkan-cts-520.cmx"
+  deps = [
+    ":vulkan-cts-520-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-521-data") {
+  sources = [ "data/vulkan-521.txt" ]
+  outputs = [ "data/vk-list-521.txt" ]
+}
+fuchsia_component("vulkan-cts-521") {
+  testonly = true
+  manifest = "meta/vulkan-cts-521.cmx"
+  deps = [
+    ":vulkan-cts-521-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-522-data") {
+  sources = [ "data/vulkan-522.txt" ]
+  outputs = [ "data/vk-list-522.txt" ]
+}
+fuchsia_component("vulkan-cts-522") {
+  testonly = true
+  manifest = "meta/vulkan-cts-522.cmx"
+  deps = [
+    ":vulkan-cts-522-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-523-data") {
+  sources = [ "data/vulkan-523.txt" ]
+  outputs = [ "data/vk-list-523.txt" ]
+}
+fuchsia_component("vulkan-cts-523") {
+  testonly = true
+  manifest = "meta/vulkan-cts-523.cmx"
+  deps = [
+    ":vulkan-cts-523-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-524-data") {
+  sources = [ "data/vulkan-524.txt" ]
+  outputs = [ "data/vk-list-524.txt" ]
+}
+fuchsia_component("vulkan-cts-524") {
+  testonly = true
+  manifest = "meta/vulkan-cts-524.cmx"
+  deps = [
+    ":vulkan-cts-524-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-525-data") {
+  sources = [ "data/vulkan-525.txt" ]
+  outputs = [ "data/vk-list-525.txt" ]
+}
+fuchsia_component("vulkan-cts-525") {
+  testonly = true
+  manifest = "meta/vulkan-cts-525.cmx"
+  deps = [
+    ":vulkan-cts-525-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-526-data") {
+  sources = [ "data/vulkan-526.txt" ]
+  outputs = [ "data/vk-list-526.txt" ]
+}
+fuchsia_component("vulkan-cts-526") {
+  testonly = true
+  manifest = "meta/vulkan-cts-526.cmx"
+  deps = [
+    ":vulkan-cts-526-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-527-data") {
+  sources = [ "data/vulkan-527.txt" ]
+  outputs = [ "data/vk-list-527.txt" ]
+}
+fuchsia_component("vulkan-cts-527") {
+  testonly = true
+  manifest = "meta/vulkan-cts-527.cmx"
+  deps = [
+    ":vulkan-cts-527-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-528-data") {
+  sources = [ "data/vulkan-528.txt" ]
+  outputs = [ "data/vk-list-528.txt" ]
+}
+fuchsia_component("vulkan-cts-528") {
+  testonly = true
+  manifest = "meta/vulkan-cts-528.cmx"
+  deps = [
+    ":vulkan-cts-528-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-529-data") {
+  sources = [ "data/vulkan-529.txt" ]
+  outputs = [ "data/vk-list-529.txt" ]
+}
+fuchsia_component("vulkan-cts-529") {
+  testonly = true
+  manifest = "meta/vulkan-cts-529.cmx"
+  deps = [
+    ":vulkan-cts-529-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-530-data") {
+  sources = [ "data/vulkan-530.txt" ]
+  outputs = [ "data/vk-list-530.txt" ]
+}
+fuchsia_component("vulkan-cts-530") {
+  testonly = true
+  manifest = "meta/vulkan-cts-530.cmx"
+  deps = [
+    ":vulkan-cts-530-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-531-data") {
+  sources = [ "data/vulkan-531.txt" ]
+  outputs = [ "data/vk-list-531.txt" ]
+}
+fuchsia_component("vulkan-cts-531") {
+  testonly = true
+  manifest = "meta/vulkan-cts-531.cmx"
+  deps = [
+    ":vulkan-cts-531-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-532-data") {
+  sources = [ "data/vulkan-532.txt" ]
+  outputs = [ "data/vk-list-532.txt" ]
+}
+fuchsia_component("vulkan-cts-532") {
+  testonly = true
+  manifest = "meta/vulkan-cts-532.cmx"
+  deps = [
+    ":vulkan-cts-532-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-533-data") {
+  sources = [ "data/vulkan-533.txt" ]
+  outputs = [ "data/vk-list-533.txt" ]
+}
+fuchsia_component("vulkan-cts-533") {
+  testonly = true
+  manifest = "meta/vulkan-cts-533.cmx"
+  deps = [
+    ":vulkan-cts-533-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-534-data") {
+  sources = [ "data/vulkan-534.txt" ]
+  outputs = [ "data/vk-list-534.txt" ]
+}
+fuchsia_component("vulkan-cts-534") {
+  testonly = true
+  manifest = "meta/vulkan-cts-534.cmx"
+  deps = [
+    ":vulkan-cts-534-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-535-data") {
+  sources = [ "data/vulkan-535.txt" ]
+  outputs = [ "data/vk-list-535.txt" ]
+}
+fuchsia_component("vulkan-cts-535") {
+  testonly = true
+  manifest = "meta/vulkan-cts-535.cmx"
+  deps = [
+    ":vulkan-cts-535-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-536-data") {
+  sources = [ "data/vulkan-536.txt" ]
+  outputs = [ "data/vk-list-536.txt" ]
+}
+fuchsia_component("vulkan-cts-536") {
+  testonly = true
+  manifest = "meta/vulkan-cts-536.cmx"
+  deps = [
+    ":vulkan-cts-536-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-537-data") {
+  sources = [ "data/vulkan-537.txt" ]
+  outputs = [ "data/vk-list-537.txt" ]
+}
+fuchsia_component("vulkan-cts-537") {
+  testonly = true
+  manifest = "meta/vulkan-cts-537.cmx"
+  deps = [
+    ":vulkan-cts-537-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-538-data") {
+  sources = [ "data/vulkan-538.txt" ]
+  outputs = [ "data/vk-list-538.txt" ]
+}
+fuchsia_component("vulkan-cts-538") {
+  testonly = true
+  manifest = "meta/vulkan-cts-538.cmx"
+  deps = [
+    ":vulkan-cts-538-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-539-data") {
+  sources = [ "data/vulkan-539.txt" ]
+  outputs = [ "data/vk-list-539.txt" ]
+}
+fuchsia_component("vulkan-cts-539") {
+  testonly = true
+  manifest = "meta/vulkan-cts-539.cmx"
+  deps = [
+    ":vulkan-cts-539-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-540-data") {
+  sources = [ "data/vulkan-540.txt" ]
+  outputs = [ "data/vk-list-540.txt" ]
+}
+fuchsia_component("vulkan-cts-540") {
+  testonly = true
+  manifest = "meta/vulkan-cts-540.cmx"
+  deps = [
+    ":vulkan-cts-540-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-541-data") {
+  sources = [ "data/vulkan-541.txt" ]
+  outputs = [ "data/vk-list-541.txt" ]
+}
+fuchsia_component("vulkan-cts-541") {
+  testonly = true
+  manifest = "meta/vulkan-cts-541.cmx"
+  deps = [
+    ":vulkan-cts-541-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-542-data") {
+  sources = [ "data/vulkan-542.txt" ]
+  outputs = [ "data/vk-list-542.txt" ]
+}
+fuchsia_component("vulkan-cts-542") {
+  testonly = true
+  manifest = "meta/vulkan-cts-542.cmx"
+  deps = [
+    ":vulkan-cts-542-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-543-data") {
+  sources = [ "data/vulkan-543.txt" ]
+  outputs = [ "data/vk-list-543.txt" ]
+}
+fuchsia_component("vulkan-cts-543") {
+  testonly = true
+  manifest = "meta/vulkan-cts-543.cmx"
+  deps = [
+    ":vulkan-cts-543-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-544-data") {
+  sources = [ "data/vulkan-544.txt" ]
+  outputs = [ "data/vk-list-544.txt" ]
+}
+fuchsia_component("vulkan-cts-544") {
+  testonly = true
+  manifest = "meta/vulkan-cts-544.cmx"
+  deps = [
+    ":vulkan-cts-544-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-545-data") {
+  sources = [ "data/vulkan-545.txt" ]
+  outputs = [ "data/vk-list-545.txt" ]
+}
+fuchsia_component("vulkan-cts-545") {
+  testonly = true
+  manifest = "meta/vulkan-cts-545.cmx"
+  deps = [
+    ":vulkan-cts-545-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-546-data") {
+  sources = [ "data/vulkan-546.txt" ]
+  outputs = [ "data/vk-list-546.txt" ]
+}
+fuchsia_component("vulkan-cts-546") {
+  testonly = true
+  manifest = "meta/vulkan-cts-546.cmx"
+  deps = [
+    ":vulkan-cts-546-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-547-data") {
+  sources = [ "data/vulkan-547.txt" ]
+  outputs = [ "data/vk-list-547.txt" ]
+}
+fuchsia_component("vulkan-cts-547") {
+  testonly = true
+  manifest = "meta/vulkan-cts-547.cmx"
+  deps = [
+    ":vulkan-cts-547-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-548-data") {
+  sources = [ "data/vulkan-548.txt" ]
+  outputs = [ "data/vk-list-548.txt" ]
+}
+fuchsia_component("vulkan-cts-548") {
+  testonly = true
+  manifest = "meta/vulkan-cts-548.cmx"
+  deps = [
+    ":vulkan-cts-548-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-549-data") {
+  sources = [ "data/vulkan-549.txt" ]
+  outputs = [ "data/vk-list-549.txt" ]
+}
+fuchsia_component("vulkan-cts-549") {
+  testonly = true
+  manifest = "meta/vulkan-cts-549.cmx"
+  deps = [
+    ":vulkan-cts-549-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-550-data") {
+  sources = [ "data/vulkan-550.txt" ]
+  outputs = [ "data/vk-list-550.txt" ]
+}
+fuchsia_component("vulkan-cts-550") {
+  testonly = true
+  manifest = "meta/vulkan-cts-550.cmx"
+  deps = [
+    ":vulkan-cts-550-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-551-data") {
+  sources = [ "data/vulkan-551.txt" ]
+  outputs = [ "data/vk-list-551.txt" ]
+}
+fuchsia_component("vulkan-cts-551") {
+  testonly = true
+  manifest = "meta/vulkan-cts-551.cmx"
+  deps = [
+    ":vulkan-cts-551-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-552-data") {
+  sources = [ "data/vulkan-552.txt" ]
+  outputs = [ "data/vk-list-552.txt" ]
+}
+fuchsia_component("vulkan-cts-552") {
+  testonly = true
+  manifest = "meta/vulkan-cts-552.cmx"
+  deps = [
+    ":vulkan-cts-552-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-553-data") {
+  sources = [ "data/vulkan-553.txt" ]
+  outputs = [ "data/vk-list-553.txt" ]
+}
+fuchsia_component("vulkan-cts-553") {
+  testonly = true
+  manifest = "meta/vulkan-cts-553.cmx"
+  deps = [
+    ":vulkan-cts-553-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-554-data") {
+  sources = [ "data/vulkan-554.txt" ]
+  outputs = [ "data/vk-list-554.txt" ]
+}
+fuchsia_component("vulkan-cts-554") {
+  testonly = true
+  manifest = "meta/vulkan-cts-554.cmx"
+  deps = [
+    ":vulkan-cts-554-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-555-data") {
+  sources = [ "data/vulkan-555.txt" ]
+  outputs = [ "data/vk-list-555.txt" ]
+}
+fuchsia_component("vulkan-cts-555") {
+  testonly = true
+  manifest = "meta/vulkan-cts-555.cmx"
+  deps = [
+    ":vulkan-cts-555-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-556-data") {
+  sources = [ "data/vulkan-556.txt" ]
+  outputs = [ "data/vk-list-556.txt" ]
+}
+fuchsia_component("vulkan-cts-556") {
+  testonly = true
+  manifest = "meta/vulkan-cts-556.cmx"
+  deps = [
+    ":vulkan-cts-556-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-557-data") {
+  sources = [ "data/vulkan-557.txt" ]
+  outputs = [ "data/vk-list-557.txt" ]
+}
+fuchsia_component("vulkan-cts-557") {
+  testonly = true
+  manifest = "meta/vulkan-cts-557.cmx"
+  deps = [
+    ":vulkan-cts-557-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-558-data") {
+  sources = [ "data/vulkan-558.txt" ]
+  outputs = [ "data/vk-list-558.txt" ]
+}
+fuchsia_component("vulkan-cts-558") {
+  testonly = true
+  manifest = "meta/vulkan-cts-558.cmx"
+  deps = [
+    ":vulkan-cts-558-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-559-data") {
+  sources = [ "data/vulkan-559.txt" ]
+  outputs = [ "data/vk-list-559.txt" ]
+}
+fuchsia_component("vulkan-cts-559") {
+  testonly = true
+  manifest = "meta/vulkan-cts-559.cmx"
+  deps = [
+    ":vulkan-cts-559-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-560-data") {
+  sources = [ "data/vulkan-560.txt" ]
+  outputs = [ "data/vk-list-560.txt" ]
+}
+fuchsia_component("vulkan-cts-560") {
+  testonly = true
+  manifest = "meta/vulkan-cts-560.cmx"
+  deps = [
+    ":vulkan-cts-560-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-561-data") {
+  sources = [ "data/vulkan-561.txt" ]
+  outputs = [ "data/vk-list-561.txt" ]
+}
+fuchsia_component("vulkan-cts-561") {
+  testonly = true
+  manifest = "meta/vulkan-cts-561.cmx"
+  deps = [
+    ":vulkan-cts-561-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-562-data") {
+  sources = [ "data/vulkan-562.txt" ]
+  outputs = [ "data/vk-list-562.txt" ]
+}
+fuchsia_component("vulkan-cts-562") {
+  testonly = true
+  manifest = "meta/vulkan-cts-562.cmx"
+  deps = [
+    ":vulkan-cts-562-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-563-data") {
+  sources = [ "data/vulkan-563.txt" ]
+  outputs = [ "data/vk-list-563.txt" ]
+}
+fuchsia_component("vulkan-cts-563") {
+  testonly = true
+  manifest = "meta/vulkan-cts-563.cmx"
+  deps = [
+    ":vulkan-cts-563-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-564-data") {
+  sources = [ "data/vulkan-564.txt" ]
+  outputs = [ "data/vk-list-564.txt" ]
+}
+fuchsia_component("vulkan-cts-564") {
+  testonly = true
+  manifest = "meta/vulkan-cts-564.cmx"
+  deps = [
+    ":vulkan-cts-564-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-565-data") {
+  sources = [ "data/vulkan-565.txt" ]
+  outputs = [ "data/vk-list-565.txt" ]
+}
+fuchsia_component("vulkan-cts-565") {
+  testonly = true
+  manifest = "meta/vulkan-cts-565.cmx"
+  deps = [
+    ":vulkan-cts-565-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-566-data") {
+  sources = [ "data/vulkan-566.txt" ]
+  outputs = [ "data/vk-list-566.txt" ]
+}
+fuchsia_component("vulkan-cts-566") {
+  testonly = true
+  manifest = "meta/vulkan-cts-566.cmx"
+  deps = [
+    ":vulkan-cts-566-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-567-data") {
+  sources = [ "data/vulkan-567.txt" ]
+  outputs = [ "data/vk-list-567.txt" ]
+}
+fuchsia_component("vulkan-cts-567") {
+  testonly = true
+  manifest = "meta/vulkan-cts-567.cmx"
+  deps = [
+    ":vulkan-cts-567-data",
+    "..:cts-deps",
+  ]
+}
+
+resource("vulkan-cts-568-data") {
+  sources = [ "data/vulkan-568.txt" ]
+  outputs = [ "data/vk-list-568.txt" ]
+}
+fuchsia_component("vulkan-cts-568") {
+  testonly = true
+  manifest = "meta/vulkan-cts-568.cmx"
+  deps = [
+    ":vulkan-cts-568-data",
+    "..:cts-deps",
+  ]
+}
+
+fuchsia_test_package("vulkan-cts-split") {
+  test_components = [
+    ":vulkan-cts-000",
+    ":vulkan-cts-001",
+    ":vulkan-cts-002",
+    ":vulkan-cts-003",
+    ":vulkan-cts-004",
+    ":vulkan-cts-005",
+    ":vulkan-cts-006",
+    ":vulkan-cts-007",
+    ":vulkan-cts-008",
+    ":vulkan-cts-009",
+    ":vulkan-cts-010",
+    ":vulkan-cts-011",
+    ":vulkan-cts-012",
+    ":vulkan-cts-013",
+    ":vulkan-cts-014",
+    ":vulkan-cts-015",
+    ":vulkan-cts-016",
+    ":vulkan-cts-017",
+    ":vulkan-cts-018",
+    ":vulkan-cts-019",
+    ":vulkan-cts-020",
+    ":vulkan-cts-021",
+    ":vulkan-cts-022",
+    ":vulkan-cts-023",
+    ":vulkan-cts-024",
+    ":vulkan-cts-025",
+    ":vulkan-cts-026",
+    ":vulkan-cts-027",
+    ":vulkan-cts-028",
+    ":vulkan-cts-029",
+    ":vulkan-cts-030",
+    ":vulkan-cts-031",
+    ":vulkan-cts-032",
+    ":vulkan-cts-033",
+    ":vulkan-cts-034",
+    ":vulkan-cts-035",
+    ":vulkan-cts-036",
+    ":vulkan-cts-037",
+    ":vulkan-cts-038",
+    ":vulkan-cts-039",
+    ":vulkan-cts-040",
+    ":vulkan-cts-041",
+    ":vulkan-cts-042",
+    ":vulkan-cts-043",
+    ":vulkan-cts-044",
+    ":vulkan-cts-045",
+    ":vulkan-cts-046",
+    ":vulkan-cts-047",
+    ":vulkan-cts-048",
+    ":vulkan-cts-049",
+    ":vulkan-cts-050",
+    ":vulkan-cts-051",
+    ":vulkan-cts-052",
+    ":vulkan-cts-053",
+    ":vulkan-cts-054",
+    ":vulkan-cts-055",
+    ":vulkan-cts-056",
+    ":vulkan-cts-057",
+    ":vulkan-cts-058",
+    ":vulkan-cts-059",
+    ":vulkan-cts-060",
+    ":vulkan-cts-061",
+    ":vulkan-cts-062",
+    ":vulkan-cts-063",
+    ":vulkan-cts-064",
+    ":vulkan-cts-065",
+    ":vulkan-cts-066",
+    ":vulkan-cts-067",
+    ":vulkan-cts-068",
+    ":vulkan-cts-069",
+    ":vulkan-cts-070",
+    ":vulkan-cts-071",
+    ":vulkan-cts-072",
+    ":vulkan-cts-073",
+    ":vulkan-cts-074",
+    ":vulkan-cts-075",
+    ":vulkan-cts-076",
+    ":vulkan-cts-077",
+    ":vulkan-cts-078",
+    ":vulkan-cts-079",
+    ":vulkan-cts-080",
+    ":vulkan-cts-081",
+    ":vulkan-cts-082",
+    ":vulkan-cts-083",
+    ":vulkan-cts-084",
+    ":vulkan-cts-085",
+    ":vulkan-cts-086",
+    ":vulkan-cts-087",
+    ":vulkan-cts-088",
+    ":vulkan-cts-089",
+    ":vulkan-cts-090",
+    ":vulkan-cts-091",
+    ":vulkan-cts-092",
+    ":vulkan-cts-093",
+    ":vulkan-cts-094",
+    ":vulkan-cts-095",
+    ":vulkan-cts-096",
+    ":vulkan-cts-097",
+    ":vulkan-cts-098",
+    ":vulkan-cts-099",
+    ":vulkan-cts-100",
+    ":vulkan-cts-101",
+    ":vulkan-cts-102",
+    ":vulkan-cts-103",
+    ":vulkan-cts-104",
+    ":vulkan-cts-105",
+    ":vulkan-cts-106",
+    ":vulkan-cts-107",
+    ":vulkan-cts-108",
+    ":vulkan-cts-109",
+    ":vulkan-cts-110",
+    ":vulkan-cts-111",
+    ":vulkan-cts-112",
+    ":vulkan-cts-113",
+    ":vulkan-cts-114",
+    ":vulkan-cts-115",
+    ":vulkan-cts-116",
+    ":vulkan-cts-117",
+    ":vulkan-cts-118",
+    ":vulkan-cts-119",
+    ":vulkan-cts-120",
+    ":vulkan-cts-121",
+    ":vulkan-cts-122",
+    ":vulkan-cts-123",
+    ":vulkan-cts-124",
+    ":vulkan-cts-125",
+    ":vulkan-cts-126",
+    ":vulkan-cts-127",
+    ":vulkan-cts-128",
+    ":vulkan-cts-129",
+    ":vulkan-cts-130",
+    ":vulkan-cts-131",
+    ":vulkan-cts-132",
+    ":vulkan-cts-133",
+    ":vulkan-cts-134",
+    ":vulkan-cts-135",
+    ":vulkan-cts-136",
+    ":vulkan-cts-137",
+    ":vulkan-cts-138",
+    ":vulkan-cts-139",
+    ":vulkan-cts-140",
+    ":vulkan-cts-141",
+    ":vulkan-cts-142",
+    ":vulkan-cts-143",
+    ":vulkan-cts-144",
+    ":vulkan-cts-145",
+    ":vulkan-cts-146",
+    ":vulkan-cts-147",
+    ":vulkan-cts-148",
+    ":vulkan-cts-149",
+    ":vulkan-cts-150",
+    ":vulkan-cts-151",
+    ":vulkan-cts-152",
+    ":vulkan-cts-153",
+    ":vulkan-cts-154",
+    ":vulkan-cts-155",
+    ":vulkan-cts-156",
+    ":vulkan-cts-157",
+    ":vulkan-cts-158",
+    ":vulkan-cts-159",
+    ":vulkan-cts-160",
+    ":vulkan-cts-161",
+    ":vulkan-cts-162",
+    ":vulkan-cts-163",
+    ":vulkan-cts-164",
+    ":vulkan-cts-165",
+    ":vulkan-cts-166",
+    ":vulkan-cts-167",
+    ":vulkan-cts-168",
+    ":vulkan-cts-169",
+    ":vulkan-cts-170",
+    ":vulkan-cts-171",
+    ":vulkan-cts-172",
+    ":vulkan-cts-173",
+    ":vulkan-cts-174",
+    ":vulkan-cts-175",
+    ":vulkan-cts-176",
+    ":vulkan-cts-177",
+    ":vulkan-cts-178",
+    ":vulkan-cts-179",
+    ":vulkan-cts-180",
+    ":vulkan-cts-181",
+    ":vulkan-cts-182",
+    ":vulkan-cts-183",
+    ":vulkan-cts-184",
+    ":vulkan-cts-185",
+    ":vulkan-cts-186",
+    ":vulkan-cts-187",
+    ":vulkan-cts-188",
+    ":vulkan-cts-189",
+    ":vulkan-cts-190",
+    ":vulkan-cts-191",
+    ":vulkan-cts-192",
+    ":vulkan-cts-193",
+    ":vulkan-cts-194",
+    ":vulkan-cts-195",
+    ":vulkan-cts-196",
+    ":vulkan-cts-197",
+    ":vulkan-cts-198",
+    ":vulkan-cts-199",
+    ":vulkan-cts-200",
+    ":vulkan-cts-201",
+    ":vulkan-cts-202",
+    ":vulkan-cts-203",
+    ":vulkan-cts-204",
+    ":vulkan-cts-205",
+    ":vulkan-cts-206",
+    ":vulkan-cts-207",
+    ":vulkan-cts-208",
+    ":vulkan-cts-209",
+    ":vulkan-cts-210",
+    ":vulkan-cts-211",
+    ":vulkan-cts-212",
+    ":vulkan-cts-213",
+    ":vulkan-cts-214",
+    ":vulkan-cts-215",
+    ":vulkan-cts-216",
+    ":vulkan-cts-217",
+    ":vulkan-cts-218",
+    ":vulkan-cts-219",
+    ":vulkan-cts-220",
+    ":vulkan-cts-221",
+    ":vulkan-cts-222",
+    ":vulkan-cts-223",
+    ":vulkan-cts-224",
+    ":vulkan-cts-225",
+    ":vulkan-cts-226",
+    ":vulkan-cts-227",
+    ":vulkan-cts-228",
+    ":vulkan-cts-229",
+    ":vulkan-cts-230",
+    ":vulkan-cts-231",
+    ":vulkan-cts-232",
+    ":vulkan-cts-233",
+    ":vulkan-cts-234",
+    ":vulkan-cts-235",
+    ":vulkan-cts-236",
+    ":vulkan-cts-237",
+    ":vulkan-cts-238",
+    ":vulkan-cts-239",
+    ":vulkan-cts-240",
+    ":vulkan-cts-241",
+    ":vulkan-cts-242",
+    ":vulkan-cts-243",
+    ":vulkan-cts-244",
+    ":vulkan-cts-245",
+    ":vulkan-cts-246",
+    ":vulkan-cts-247",
+    ":vulkan-cts-248",
+    ":vulkan-cts-249",
+    ":vulkan-cts-250",
+    ":vulkan-cts-251",
+    ":vulkan-cts-252",
+    ":vulkan-cts-253",
+    ":vulkan-cts-254",
+    ":vulkan-cts-255",
+    ":vulkan-cts-256",
+    ":vulkan-cts-257",
+    ":vulkan-cts-258",
+    ":vulkan-cts-259",
+    ":vulkan-cts-260",
+    ":vulkan-cts-261",
+    ":vulkan-cts-262",
+    ":vulkan-cts-263",
+    ":vulkan-cts-264",
+    ":vulkan-cts-265",
+    ":vulkan-cts-266",
+    ":vulkan-cts-267",
+    ":vulkan-cts-268",
+    ":vulkan-cts-269",
+    ":vulkan-cts-270",
+    ":vulkan-cts-271",
+    ":vulkan-cts-272",
+    ":vulkan-cts-273",
+    ":vulkan-cts-274",
+    ":vulkan-cts-275",
+    ":vulkan-cts-276",
+    ":vulkan-cts-277",
+    ":vulkan-cts-278",
+    ":vulkan-cts-279",
+    ":vulkan-cts-280",
+    ":vulkan-cts-281",
+    ":vulkan-cts-282",
+    ":vulkan-cts-283",
+    ":vulkan-cts-284",
+    ":vulkan-cts-285",
+    ":vulkan-cts-286",
+    ":vulkan-cts-287",
+    ":vulkan-cts-288",
+    ":vulkan-cts-289",
+    ":vulkan-cts-290",
+    ":vulkan-cts-291",
+    ":vulkan-cts-292",
+    ":vulkan-cts-293",
+    ":vulkan-cts-294",
+    ":vulkan-cts-295",
+    ":vulkan-cts-296",
+    ":vulkan-cts-297",
+    ":vulkan-cts-298",
+    ":vulkan-cts-299",
+    ":vulkan-cts-300",
+    ":vulkan-cts-301",
+    ":vulkan-cts-302",
+    ":vulkan-cts-303",
+    ":vulkan-cts-304",
+    ":vulkan-cts-305",
+    ":vulkan-cts-306",
+    ":vulkan-cts-307",
+    ":vulkan-cts-308",
+    ":vulkan-cts-309",
+    ":vulkan-cts-310",
+    ":vulkan-cts-311",
+    ":vulkan-cts-312",
+    ":vulkan-cts-313",
+    ":vulkan-cts-314",
+    ":vulkan-cts-315",
+    ":vulkan-cts-316",
+    ":vulkan-cts-317",
+    ":vulkan-cts-318",
+    ":vulkan-cts-319",
+    ":vulkan-cts-320",
+    ":vulkan-cts-321",
+    ":vulkan-cts-322",
+    ":vulkan-cts-323",
+    ":vulkan-cts-324",
+    ":vulkan-cts-325",
+    ":vulkan-cts-326",
+    ":vulkan-cts-327",
+    ":vulkan-cts-328",
+    ":vulkan-cts-329",
+    ":vulkan-cts-330",
+    ":vulkan-cts-331",
+    ":vulkan-cts-332",
+    ":vulkan-cts-333",
+    ":vulkan-cts-334",
+    ":vulkan-cts-335",
+    ":vulkan-cts-336",
+    ":vulkan-cts-337",
+    ":vulkan-cts-338",
+    ":vulkan-cts-339",
+    ":vulkan-cts-340",
+    ":vulkan-cts-341",
+    ":vulkan-cts-342",
+    ":vulkan-cts-343",
+    ":vulkan-cts-344",
+    ":vulkan-cts-345",
+    ":vulkan-cts-346",
+    ":vulkan-cts-347",
+    ":vulkan-cts-348",
+    ":vulkan-cts-349",
+    ":vulkan-cts-350",
+    ":vulkan-cts-351",
+    ":vulkan-cts-352",
+    ":vulkan-cts-353",
+    ":vulkan-cts-354",
+    ":vulkan-cts-355",
+    ":vulkan-cts-356",
+    ":vulkan-cts-357",
+    ":vulkan-cts-358",
+    ":vulkan-cts-359",
+    ":vulkan-cts-360",
+    ":vulkan-cts-361",
+    ":vulkan-cts-362",
+    ":vulkan-cts-363",
+    ":vulkan-cts-364",
+    ":vulkan-cts-365",
+    ":vulkan-cts-366",
+    ":vulkan-cts-367",
+    ":vulkan-cts-368",
+    ":vulkan-cts-369",
+    ":vulkan-cts-370",
+    ":vulkan-cts-371",
+    ":vulkan-cts-372",
+    ":vulkan-cts-373",
+    ":vulkan-cts-374",
+    ":vulkan-cts-375",
+    ":vulkan-cts-376",
+    ":vulkan-cts-377",
+    ":vulkan-cts-378",
+    ":vulkan-cts-379",
+    ":vulkan-cts-380",
+    ":vulkan-cts-381",
+    ":vulkan-cts-382",
+    ":vulkan-cts-383",
+    ":vulkan-cts-384",
+    ":vulkan-cts-385",
+    ":vulkan-cts-386",
+    ":vulkan-cts-387",
+    ":vulkan-cts-388",
+    ":vulkan-cts-389",
+    ":vulkan-cts-390",
+    ":vulkan-cts-391",
+    ":vulkan-cts-392",
+    ":vulkan-cts-393",
+    ":vulkan-cts-394",
+    ":vulkan-cts-395",
+    ":vulkan-cts-396",
+    ":vulkan-cts-397",
+    ":vulkan-cts-398",
+    ":vulkan-cts-399",
+    ":vulkan-cts-400",
+    ":vulkan-cts-401",
+    ":vulkan-cts-402",
+    ":vulkan-cts-403",
+    ":vulkan-cts-404",
+    ":vulkan-cts-405",
+    ":vulkan-cts-406",
+    ":vulkan-cts-407",
+    ":vulkan-cts-408",
+    ":vulkan-cts-409",
+    ":vulkan-cts-410",
+    ":vulkan-cts-411",
+    ":vulkan-cts-412",
+    ":vulkan-cts-413",
+    ":vulkan-cts-414",
+    ":vulkan-cts-415",
+    ":vulkan-cts-416",
+    ":vulkan-cts-417",
+    ":vulkan-cts-418",
+    ":vulkan-cts-419",
+    ":vulkan-cts-420",
+    ":vulkan-cts-421",
+    ":vulkan-cts-422",
+    ":vulkan-cts-423",
+    ":vulkan-cts-424",
+    ":vulkan-cts-425",
+    ":vulkan-cts-426",
+    ":vulkan-cts-427",
+    ":vulkan-cts-428",
+    ":vulkan-cts-429",
+    ":vulkan-cts-430",
+    ":vulkan-cts-431",
+    ":vulkan-cts-432",
+    ":vulkan-cts-433",
+    ":vulkan-cts-434",
+    ":vulkan-cts-435",
+    ":vulkan-cts-436",
+    ":vulkan-cts-437",
+    ":vulkan-cts-438",
+    ":vulkan-cts-439",
+    ":vulkan-cts-440",
+    ":vulkan-cts-441",
+    ":vulkan-cts-442",
+    ":vulkan-cts-443",
+    ":vulkan-cts-444",
+    ":vulkan-cts-445",
+    ":vulkan-cts-446",
+    ":vulkan-cts-447",
+    ":vulkan-cts-448",
+    ":vulkan-cts-449",
+    ":vulkan-cts-450",
+    ":vulkan-cts-451",
+    ":vulkan-cts-452",
+    ":vulkan-cts-453",
+    ":vulkan-cts-454",
+    ":vulkan-cts-455",
+    ":vulkan-cts-456",
+    ":vulkan-cts-457",
+    ":vulkan-cts-458",
+    ":vulkan-cts-459",
+    ":vulkan-cts-460",
+    ":vulkan-cts-461",
+    ":vulkan-cts-462",
+    ":vulkan-cts-463",
+    ":vulkan-cts-464",
+    ":vulkan-cts-465",
+    ":vulkan-cts-466",
+    ":vulkan-cts-467",
+    ":vulkan-cts-468",
+    ":vulkan-cts-469",
+    ":vulkan-cts-470",
+    ":vulkan-cts-471",
+    ":vulkan-cts-472",
+    ":vulkan-cts-473",
+    ":vulkan-cts-474",
+    ":vulkan-cts-475",
+    ":vulkan-cts-476",
+    ":vulkan-cts-477",
+    ":vulkan-cts-478",
+    ":vulkan-cts-479",
+    ":vulkan-cts-480",
+    ":vulkan-cts-481",
+    ":vulkan-cts-482",
+    ":vulkan-cts-483",
+    ":vulkan-cts-484",
+    ":vulkan-cts-485",
+    ":vulkan-cts-486",
+    ":vulkan-cts-487",
+    ":vulkan-cts-488",
+    ":vulkan-cts-489",
+    ":vulkan-cts-490",
+    ":vulkan-cts-491",
+    ":vulkan-cts-492",
+    ":vulkan-cts-493",
+    ":vulkan-cts-494",
+    ":vulkan-cts-495",
+    ":vulkan-cts-496",
+    ":vulkan-cts-497",
+    ":vulkan-cts-498",
+    ":vulkan-cts-499",
+    ":vulkan-cts-500",
+    ":vulkan-cts-501",
+    ":vulkan-cts-502",
+    ":vulkan-cts-503",
+    ":vulkan-cts-504",
+    ":vulkan-cts-505",
+    ":vulkan-cts-506",
+    ":vulkan-cts-507",
+    ":vulkan-cts-508",
+    ":vulkan-cts-509",
+    ":vulkan-cts-510",
+    ":vulkan-cts-511",
+    ":vulkan-cts-512",
+    ":vulkan-cts-513",
+    ":vulkan-cts-514",
+    ":vulkan-cts-515",
+    ":vulkan-cts-516",
+    ":vulkan-cts-517",
+    ":vulkan-cts-518",
+    ":vulkan-cts-519",
+    ":vulkan-cts-520",
+    ":vulkan-cts-521",
+    ":vulkan-cts-522",
+    ":vulkan-cts-523",
+    ":vulkan-cts-524",
+    ":vulkan-cts-525",
+    ":vulkan-cts-526",
+    ":vulkan-cts-527",
+    ":vulkan-cts-528",
+    ":vulkan-cts-529",
+    ":vulkan-cts-530",
+    ":vulkan-cts-531",
+    ":vulkan-cts-532",
+    ":vulkan-cts-533",
+    ":vulkan-cts-534",
+    ":vulkan-cts-535",
+    ":vulkan-cts-536",
+    ":vulkan-cts-537",
+    ":vulkan-cts-538",
+    ":vulkan-cts-539",
+    ":vulkan-cts-540",
+    ":vulkan-cts-541",
+    ":vulkan-cts-542",
+    ":vulkan-cts-543",
+    ":vulkan-cts-544",
+    ":vulkan-cts-545",
+    ":vulkan-cts-546",
+    ":vulkan-cts-547",
+    ":vulkan-cts-548",
+    ":vulkan-cts-549",
+    ":vulkan-cts-550",
+    ":vulkan-cts-551",
+    ":vulkan-cts-552",
+    ":vulkan-cts-553",
+    ":vulkan-cts-554",
+    ":vulkan-cts-555",
+    ":vulkan-cts-556",
+    ":vulkan-cts-557",
+    ":vulkan-cts-558",
+    ":vulkan-cts-559",
+    ":vulkan-cts-560",
+    ":vulkan-cts-561",
+    ":vulkan-cts-562",
+    ":vulkan-cts-563",
+    ":vulkan-cts-564",
+    ":vulkan-cts-565",
+    ":vulkan-cts-566",
+    ":vulkan-cts-567",
+    ":vulkan-cts-568",
+  ]
+  test_specs = {
+    environments = labeled_magma_hardware_envs
+  }
+}
+
+group("split-cts") {
+  testonly = true
+  deps = [ ":vulkan-cts-split" ]
+}
diff --git a/fuchsia/split-cts/data/vulkan-000.txt b/fuchsia/split-cts/data/vulkan-000.txt
new file mode 100644
index 0000000..91bacf1
--- /dev/null
+++ b/fuchsia/split-cts/data/vulkan-000.txt
@@ -0,0 +1,1000 @@
+dEQP-VK.info.build
+dEQP-VK.info.device
+dEQP-VK.info.platform
+dEQP-VK.info.memory_limits
+dEQP-VK.info.physical_devices
+dEQP-VK.info.physical_device_groups
+dEQP-VK.info.instance_layers
+dEQP-VK.info.instance_extensions
+dEQP-VK.info.device_features
+dEQP-VK.info.device_properties
+dEQP-VK.info.device_queue_family_properties
+dEQP-VK.info.device_memory_properties
+dEQP-VK.info.device_layers
+dEQP-VK.info.device_extensions
+dEQP-VK.info.device_no_khx_extensions
+dEQP-VK.info.device_memory_budget
+dEQP-VK.info.device_mandatory_features
+dEQP-VK.info.device_group_peer_memory_features
+dEQP-VK.api.version_check.version
+dEQP-VK.api.version_check.entry_points
+dEQP-VK.api.driver_properties.driver_id_match
+dEQP-VK.api.driver_properties.name_is_not_empty
+dEQP-VK.api.driver_properties.name_zero_terminated
+dEQP-VK.api.driver_properties.info_zero_terminated
+dEQP-VK.api.driver_properties.conformance_version
+dEQP-VK.api.smoke.create_sampler
+dEQP-VK.api.smoke.create_shader
+dEQP-VK.api.smoke.triangle
+dEQP-VK.api.smoke.triangle_ext_structs
+dEQP-VK.api.smoke.asm_triangle
+dEQP-VK.api.smoke.asm_triangle_no_opname
+dEQP-VK.api.smoke.unused_resolve_attachment
+dEQP-VK.api.info.format_properties.r4g4_unorm_pack8
+dEQP-VK.api.info.format_properties.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.format_properties.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.format_properties.r5g6b5_unorm_pack16
+dEQP-VK.api.info.format_properties.b5g6r5_unorm_pack16
+dEQP-VK.api.info.format_properties.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.format_properties.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.format_properties.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.format_properties.r8_unorm
+dEQP-VK.api.info.format_properties.r8_snorm
+dEQP-VK.api.info.format_properties.r8_uscaled
+dEQP-VK.api.info.format_properties.r8_sscaled
+dEQP-VK.api.info.format_properties.r8_uint
+dEQP-VK.api.info.format_properties.r8_sint
+dEQP-VK.api.info.format_properties.r8_srgb
+dEQP-VK.api.info.format_properties.r8g8_unorm
+dEQP-VK.api.info.format_properties.r8g8_snorm
+dEQP-VK.api.info.format_properties.r8g8_uscaled
+dEQP-VK.api.info.format_properties.r8g8_sscaled
+dEQP-VK.api.info.format_properties.r8g8_uint
+dEQP-VK.api.info.format_properties.r8g8_sint
+dEQP-VK.api.info.format_properties.r8g8_srgb
+dEQP-VK.api.info.format_properties.r8g8b8_unorm
+dEQP-VK.api.info.format_properties.r8g8b8_snorm
+dEQP-VK.api.info.format_properties.r8g8b8_uscaled
+dEQP-VK.api.info.format_properties.r8g8b8_sscaled
+dEQP-VK.api.info.format_properties.r8g8b8_uint
+dEQP-VK.api.info.format_properties.r8g8b8_sint
+dEQP-VK.api.info.format_properties.r8g8b8_srgb
+dEQP-VK.api.info.format_properties.b8g8r8_unorm
+dEQP-VK.api.info.format_properties.b8g8r8_snorm
+dEQP-VK.api.info.format_properties.b8g8r8_uscaled
+dEQP-VK.api.info.format_properties.b8g8r8_sscaled
+dEQP-VK.api.info.format_properties.b8g8r8_uint
+dEQP-VK.api.info.format_properties.b8g8r8_sint
+dEQP-VK.api.info.format_properties.b8g8r8_srgb
+dEQP-VK.api.info.format_properties.r8g8b8a8_unorm
+dEQP-VK.api.info.format_properties.r8g8b8a8_snorm
+dEQP-VK.api.info.format_properties.r8g8b8a8_uscaled
+dEQP-VK.api.info.format_properties.r8g8b8a8_sscaled
+dEQP-VK.api.info.format_properties.r8g8b8a8_uint
+dEQP-VK.api.info.format_properties.r8g8b8a8_sint
+dEQP-VK.api.info.format_properties.r8g8b8a8_srgb
+dEQP-VK.api.info.format_properties.b8g8r8a8_unorm
+dEQP-VK.api.info.format_properties.b8g8r8a8_snorm
+dEQP-VK.api.info.format_properties.b8g8r8a8_uscaled
+dEQP-VK.api.info.format_properties.b8g8r8a8_sscaled
+dEQP-VK.api.info.format_properties.b8g8r8a8_uint
+dEQP-VK.api.info.format_properties.b8g8r8a8_sint
+dEQP-VK.api.info.format_properties.b8g8r8a8_srgb
+dEQP-VK.api.info.format_properties.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.format_properties.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.format_properties.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.format_properties.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.format_properties.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.format_properties.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.format_properties.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.format_properties.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.format_properties.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.format_properties.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.format_properties.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.format_properties.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.format_properties.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.format_properties.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.format_properties.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.format_properties.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.format_properties.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.format_properties.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.format_properties.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.format_properties.r16_unorm
+dEQP-VK.api.info.format_properties.r16_snorm
+dEQP-VK.api.info.format_properties.r16_uscaled
+dEQP-VK.api.info.format_properties.r16_sscaled
+dEQP-VK.api.info.format_properties.r16_uint
+dEQP-VK.api.info.format_properties.r16_sint
+dEQP-VK.api.info.format_properties.r16_sfloat
+dEQP-VK.api.info.format_properties.r16g16_unorm
+dEQP-VK.api.info.format_properties.r16g16_snorm
+dEQP-VK.api.info.format_properties.r16g16_uscaled
+dEQP-VK.api.info.format_properties.r16g16_sscaled
+dEQP-VK.api.info.format_properties.r16g16_uint
+dEQP-VK.api.info.format_properties.r16g16_sint
+dEQP-VK.api.info.format_properties.r16g16_sfloat
+dEQP-VK.api.info.format_properties.r16g16b16_unorm
+dEQP-VK.api.info.format_properties.r16g16b16_snorm
+dEQP-VK.api.info.format_properties.r16g16b16_uscaled
+dEQP-VK.api.info.format_properties.r16g16b16_sscaled
+dEQP-VK.api.info.format_properties.r16g16b16_uint
+dEQP-VK.api.info.format_properties.r16g16b16_sint
+dEQP-VK.api.info.format_properties.r16g16b16_sfloat
+dEQP-VK.api.info.format_properties.r16g16b16a16_unorm
+dEQP-VK.api.info.format_properties.r16g16b16a16_snorm
+dEQP-VK.api.info.format_properties.r16g16b16a16_uscaled
+dEQP-VK.api.info.format_properties.r16g16b16a16_sscaled
+dEQP-VK.api.info.format_properties.r16g16b16a16_uint
+dEQP-VK.api.info.format_properties.r16g16b16a16_sint
+dEQP-VK.api.info.format_properties.r16g16b16a16_sfloat
+dEQP-VK.api.info.format_properties.r32_uint
+dEQP-VK.api.info.format_properties.r32_sint
+dEQP-VK.api.info.format_properties.r32_sfloat
+dEQP-VK.api.info.format_properties.r32g32_uint
+dEQP-VK.api.info.format_properties.r32g32_sint
+dEQP-VK.api.info.format_properties.r32g32_sfloat
+dEQP-VK.api.info.format_properties.r32g32b32_uint
+dEQP-VK.api.info.format_properties.r32g32b32_sint
+dEQP-VK.api.info.format_properties.r32g32b32_sfloat
+dEQP-VK.api.info.format_properties.r32g32b32a32_uint
+dEQP-VK.api.info.format_properties.r32g32b32a32_sint
+dEQP-VK.api.info.format_properties.r32g32b32a32_sfloat
+dEQP-VK.api.info.format_properties.r64_uint
+dEQP-VK.api.info.format_properties.r64_sint
+dEQP-VK.api.info.format_properties.r64_sfloat
+dEQP-VK.api.info.format_properties.r64g64_uint
+dEQP-VK.api.info.format_properties.r64g64_sint
+dEQP-VK.api.info.format_properties.r64g64_sfloat
+dEQP-VK.api.info.format_properties.r64g64b64_uint
+dEQP-VK.api.info.format_properties.r64g64b64_sint
+dEQP-VK.api.info.format_properties.r64g64b64_sfloat
+dEQP-VK.api.info.format_properties.r64g64b64a64_uint
+dEQP-VK.api.info.format_properties.r64g64b64a64_sint
+dEQP-VK.api.info.format_properties.r64g64b64a64_sfloat
+dEQP-VK.api.info.format_properties.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.format_properties.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.format_properties.d16_unorm
+dEQP-VK.api.info.format_properties.x8_d24_unorm_pack32
+dEQP-VK.api.info.format_properties.d32_sfloat
+dEQP-VK.api.info.format_properties.s8_uint
+dEQP-VK.api.info.format_properties.d16_unorm_s8_uint
+dEQP-VK.api.info.format_properties.d24_unorm_s8_uint
+dEQP-VK.api.info.format_properties.d32_sfloat_s8_uint
+dEQP-VK.api.info.format_properties.bc1_rgb_unorm_block
+dEQP-VK.api.info.format_properties.bc1_rgb_srgb_block
+dEQP-VK.api.info.format_properties.bc1_rgba_unorm_block
+dEQP-VK.api.info.format_properties.bc1_rgba_srgb_block
+dEQP-VK.api.info.format_properties.bc2_unorm_block
+dEQP-VK.api.info.format_properties.bc2_srgb_block
+dEQP-VK.api.info.format_properties.bc3_unorm_block
+dEQP-VK.api.info.format_properties.bc3_srgb_block
+dEQP-VK.api.info.format_properties.bc4_unorm_block
+dEQP-VK.api.info.format_properties.bc4_snorm_block
+dEQP-VK.api.info.format_properties.bc5_unorm_block
+dEQP-VK.api.info.format_properties.bc5_snorm_block
+dEQP-VK.api.info.format_properties.bc6h_ufloat_block
+dEQP-VK.api.info.format_properties.bc6h_sfloat_block
+dEQP-VK.api.info.format_properties.bc7_unorm_block
+dEQP-VK.api.info.format_properties.bc7_srgb_block
+dEQP-VK.api.info.format_properties.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.format_properties.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.format_properties.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.format_properties.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.format_properties.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.format_properties.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.format_properties.eac_r11_unorm_block
+dEQP-VK.api.info.format_properties.eac_r11_snorm_block
+dEQP-VK.api.info.format_properties.eac_r11g11_unorm_block
+dEQP-VK.api.info.format_properties.eac_r11g11_snorm_block
+dEQP-VK.api.info.format_properties.astc_4x4_unorm_block
+dEQP-VK.api.info.format_properties.astc_4x4_srgb_block
+dEQP-VK.api.info.format_properties.astc_5x4_unorm_block
+dEQP-VK.api.info.format_properties.astc_5x4_srgb_block
+dEQP-VK.api.info.format_properties.astc_5x5_unorm_block
+dEQP-VK.api.info.format_properties.astc_5x5_srgb_block
+dEQP-VK.api.info.format_properties.astc_6x5_unorm_block
+dEQP-VK.api.info.format_properties.astc_6x5_srgb_block
+dEQP-VK.api.info.format_properties.astc_6x6_unorm_block
+dEQP-VK.api.info.format_properties.astc_6x6_srgb_block
+dEQP-VK.api.info.format_properties.astc_8x5_unorm_block
+dEQP-VK.api.info.format_properties.astc_8x5_srgb_block
+dEQP-VK.api.info.format_properties.astc_8x6_unorm_block
+dEQP-VK.api.info.format_properties.astc_8x6_srgb_block
+dEQP-VK.api.info.format_properties.astc_8x8_unorm_block
+dEQP-VK.api.info.format_properties.astc_8x8_srgb_block
+dEQP-VK.api.info.format_properties.astc_10x5_unorm_block
+dEQP-VK.api.info.format_properties.astc_10x5_srgb_block
+dEQP-VK.api.info.format_properties.astc_10x6_unorm_block
+dEQP-VK.api.info.format_properties.astc_10x6_srgb_block
+dEQP-VK.api.info.format_properties.astc_10x8_unorm_block
+dEQP-VK.api.info.format_properties.astc_10x8_srgb_block
+dEQP-VK.api.info.format_properties.astc_10x10_unorm_block
+dEQP-VK.api.info.format_properties.astc_10x10_srgb_block
+dEQP-VK.api.info.format_properties.astc_12x10_unorm_block
+dEQP-VK.api.info.format_properties.astc_12x10_srgb_block
+dEQP-VK.api.info.format_properties.astc_12x12_unorm_block
+dEQP-VK.api.info.format_properties.astc_12x12_srgb_block
+dEQP-VK.api.info.format_properties.g8b8g8r8_422_unorm
+dEQP-VK.api.info.format_properties.b8g8r8g8_422_unorm
+dEQP-VK.api.info.format_properties.g8_b8_r8_3plane_420_unorm
+dEQP-VK.api.info.format_properties.g8_b8r8_2plane_420_unorm
+dEQP-VK.api.info.format_properties.g8_b8_r8_3plane_422_unorm
+dEQP-VK.api.info.format_properties.g8_b8r8_2plane_422_unorm
+dEQP-VK.api.info.format_properties.g8_b8_r8_3plane_444_unorm
+dEQP-VK.api.info.format_properties.r10x6_unorm_pack16
+dEQP-VK.api.info.format_properties.r10x6g10x6_unorm_2pack16
+dEQP-VK.api.info.format_properties.r10x6g10x6b10x6a10x6_unorm_4pack16
+dEQP-VK.api.info.format_properties.g10x6b10x6g10x6r10x6_422_unorm_4pack16
+dEQP-VK.api.info.format_properties.b10x6g10x6r10x6g10x6_422_unorm_4pack16
+dEQP-VK.api.info.format_properties.g10x6_b10x6_r10x6_3plane_420_unorm_3pack16
+dEQP-VK.api.info.format_properties.g10x6_b10x6r10x6_2plane_420_unorm_3pack16
+dEQP-VK.api.info.format_properties.g10x6_b10x6_r10x6_3plane_422_unorm_3pack16
+dEQP-VK.api.info.format_properties.g10x6_b10x6r10x6_2plane_422_unorm_3pack16
+dEQP-VK.api.info.format_properties.g10x6_b10x6_r10x6_3plane_444_unorm_3pack16
+dEQP-VK.api.info.format_properties.r12x4_unorm_pack16
+dEQP-VK.api.info.format_properties.r12x4g12x4_unorm_2pack16
+dEQP-VK.api.info.format_properties.r12x4g12x4b12x4a12x4_unorm_4pack16
+dEQP-VK.api.info.format_properties.g12x4b12x4g12x4r12x4_422_unorm_4pack16
+dEQP-VK.api.info.format_properties.b12x4g12x4r12x4g12x4_422_unorm_4pack16
+dEQP-VK.api.info.format_properties.g12x4_b12x4_r12x4_3plane_420_unorm_3pack16
+dEQP-VK.api.info.format_properties.g12x4_b12x4r12x4_2plane_420_unorm_3pack16
+dEQP-VK.api.info.format_properties.g12x4_b12x4_r12x4_3plane_422_unorm_3pack16
+dEQP-VK.api.info.format_properties.g12x4_b12x4r12x4_2plane_422_unorm_3pack16
+dEQP-VK.api.info.format_properties.g12x4_b12x4_r12x4_3plane_444_unorm_3pack16
+dEQP-VK.api.info.format_properties.g16b16g16r16_422_unorm
+dEQP-VK.api.info.format_properties.b16g16r16g16_422_unorm
+dEQP-VK.api.info.format_properties.g16_b16_r16_3plane_420_unorm
+dEQP-VK.api.info.format_properties.g16_b16r16_2plane_420_unorm
+dEQP-VK.api.info.format_properties.g16_b16_r16_3plane_422_unorm
+dEQP-VK.api.info.format_properties.g16_b16r16_2plane_422_unorm
+dEQP-VK.api.info.format_properties.g16_b16_r16_3plane_444_unorm
+dEQP-VK.api.info.format_properties.depth_stencil
+dEQP-VK.api.info.format_properties.compressed_formats
+dEQP-VK.api.info.image_format_properties.1d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties.1d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8_srgb
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8_srgb
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties.1d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties.1d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.d16_unorm
+dEQP-VK.api.info.image_format_properties.1d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.optimal.d32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.optimal.s8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties.1d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.1d.linear.r8_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r8_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r8_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r8_srgb
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8_srgb
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties.1d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.r16_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r16_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r16_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r16_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r16_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r16_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r16_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r32_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r32_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r64_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r64_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r64_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties.1d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.d16_unorm
+dEQP-VK.api.info.image_format_properties.1d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties.1d.linear.d32_sfloat
+dEQP-VK.api.info.image_format_properties.1d.linear.s8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties.1d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties.1d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties.2d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8_srgb
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8_srgb
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties.2d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties.2d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.d16_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties.2d.optimal.d32_sfloat
+dEQP-VK.api.info.image_format_properties.2d.optimal.s8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties.2d.optimal.g8b8g8r8_422_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.b8g8r8g8_422_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g8_b8_r8_3plane_420_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g8_b8r8_2plane_420_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g8_b8_r8_3plane_422_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g8_b8r8_2plane_422_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g8_b8_r8_3plane_444_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.r10x6_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.r10x6g10x6_unorm_2pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.r10x6g10x6b10x6a10x6_unorm_4pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g10x6b10x6g10x6r10x6_422_unorm_4pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.b10x6g10x6r10x6g10x6_422_unorm_4pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g10x6_b10x6_r10x6_3plane_420_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g10x6_b10x6r10x6_2plane_420_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g10x6_b10x6_r10x6_3plane_422_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g10x6_b10x6r10x6_2plane_422_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g10x6_b10x6_r10x6_3plane_444_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.r12x4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.r12x4g12x4_unorm_2pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.r12x4g12x4b12x4a12x4_unorm_4pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g12x4b12x4g12x4r12x4_422_unorm_4pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.b12x4g12x4r12x4g12x4_422_unorm_4pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g12x4_b12x4_r12x4_3plane_420_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g12x4_b12x4r12x4_2plane_420_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g12x4_b12x4_r12x4_3plane_422_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g12x4_b12x4r12x4_2plane_422_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g12x4_b12x4_r12x4_3plane_444_unorm_3pack16
+dEQP-VK.api.info.image_format_properties.2d.optimal.g16b16g16r16_422_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.b16g16r16g16_422_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g16_b16_r16_3plane_420_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g16_b16r16_2plane_420_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g16_b16_r16_3plane_422_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g16_b16r16_2plane_422_unorm
+dEQP-VK.api.info.image_format_properties.2d.optimal.g16_b16_r16_3plane_444_unorm
+dEQP-VK.api.info.image_format_properties.2d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties.2d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties.2d.linear.r8_unorm
+dEQP-VK.api.info.image_format_properties.2d.linear.r8_snorm
+dEQP-VK.api.info.image_format_properties.2d.linear.r8_uscaled
+dEQP-VK.api.info.image_format_properties.2d.linear.r8_sscaled
+dEQP-VK.api.info.image_format_properties.2d.linear.r8_uint
+dEQP-VK.api.info.image_format_properties.2d.linear.r8_sint
+dEQP-VK.api.info.image_format_properties.2d.linear.r8_srgb
+dEQP-VK.api.info.image_format_properties.2d.linear.r8g8_unorm
+dEQP-VK.api.info.image_format_properties.2d.linear.r8g8_snorm
+dEQP-VK.api.info.image_format_properties.2d.linear.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties.2d.linear.r8g8_sscaled
+dEQP-VK.api