layers:Add pre-built DevSim layer
authorTobin Ehlis <tobine@google.com>
Wed, 15 Nov 2017 23:10:39 +0000 (16:10 -0700)
committerTobin Ehlis <tobine@google.com>
Fri, 17 Nov 2017 16:38:09 +0000 (09:38 -0700)
Checking-in DevSim binary for linux to use in Travis-CI testing along
with seven initial json profiles to be tested w/ DevSim on top of mock.

layers/CMakeLists.txt
layers/linux/VkLayer_device_simulation.json [new file with mode: 0644]
layers/linux/libVkLayer_device_simulation.so [new file with mode: 0755]
tests/device_profiles/adreno_540.json [new file with mode: 0644]
tests/device_profiles/amd_radv_polaris10.json [new file with mode: 0644]
tests/device_profiles/geforce_940m.json [new file with mode: 0644]
tests/device_profiles/intel_hd_graphics_520_skylake_gt2.json [new file with mode: 0644]
tests/device_profiles/mali-t760.json [new file with mode: 0644]
tests/device_profiles/nvidia_tegra_x1.json [new file with mode: 0644]
tests/device_profiles/powervr_rogue_ge8300.json [new file with mode: 0644]

index f9f1333..d031171 100644 (file)
@@ -39,6 +39,14 @@ set(LAYER_JSON_FILES_NO_DEPENDENCIES
 
 set(LAYER_JSON_FILES ${LAYER_JSON_FILES_WITH_DEPENDENCIES} ${LAYER_JSON_FILES_NO_DEPENDENCIES})
 
+set(LAYER_BINARY_JSON_FILES
+    VkLayer_device_simulation
+    )
+
+set(LAYER_BINARY_FILES
+    libVkLayer_device_simulation
+    )
+
 if (WIN32)
     if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
         if (CMAKE_GENERATOR MATCHES "^Visual Studio.*")
@@ -77,6 +85,18 @@ else()
                 VERBATIM
                 )
         endforeach(config_file)
+        foreach (config_file ${LAYER_BINARY_JSON_FILES})
+            add_custom_target(${config_file}-json ALL
+                COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/linux/${config_file}.json
+                VERBATIM
+                )
+        endforeach(config_file)
+        foreach (config_file ${LAYER_BINARY_FILES})
+            add_custom_target(${config_file}-so ALL
+                COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/linux/${config_file}.so
+                VERBATIM
+                )
+        endforeach(config_file)
         # Add link to vk_validation_error_messages.h in build dir for scripts to pick up
         add_custom_target(vk_validation_error_messages ALL
             COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/vk_validation_error_messages.h
@@ -84,7 +104,7 @@ else()
             )
     endif()
 endif()
-# If a layer has a direcgt dependency on a project with the same name, use it.
+# If a layer has a direct dependency on a project with the same name, use it.
 foreach (config_file ${LAYER_JSON_FILES_WITH_DEPENDENCIES})
     add_dependencies(${config_file}-json ${config_file})
 endforeach(config_file)
@@ -92,7 +112,14 @@ endforeach(config_file)
 foreach (config_file ${LAYER_JSON_FILES_NO_DEPENDENCIES})
     add_dependencies(${config_file}-json VkLayer_utils)
 endforeach(config_file)
-
+if(UNIX)
+    foreach (config_file ${LAYER_BINARY_JSON_FILES})
+        add_dependencies(${config_file}-json VkLayer_utils)
+    endforeach(config_file)
+    foreach (config_file ${LAYER_BINARY_FILES})
+        add_dependencies(${config_file}-so VkLayer_utils)
+    endforeach(config_file)
+endif()
 
 # Add targets for JSON file install on Linux.
 # Need to remove the "./" from the library path before installing to /etc.
diff --git a/layers/linux/VkLayer_device_simulation.json b/layers/linux/VkLayer_device_simulation.json
new file mode 100644 (file)
index 0000000..81b8213
--- /dev/null
@@ -0,0 +1,11 @@
+{
+    "file_format_version" : "1.1.0",
+    "layer" : {
+        "name": "VK_LAYER_LUNARG_device_simulation",
+        "type": "GLOBAL",
+        "library_path": "./libVkLayer_device_simulation.so",
+        "api_version": "1.0.65",
+        "implementation_version": "1.2.0",
+        "description": "LunarG device simulation layer"
+    }
+}
diff --git a/layers/linux/libVkLayer_device_simulation.so b/layers/linux/libVkLayer_device_simulation.so
new file mode 100755 (executable)
index 0000000..3bfea56
Binary files /dev/null and b/layers/linux/libVkLayer_device_simulation.so differ
diff --git a/tests/device_profiles/adreno_540.json b/tests/device_profiles/adreno_540.json
new file mode 100644 (file)
index 0000000..36f495c
--- /dev/null
@@ -0,0 +1,1518 @@
+{
+    "$schema": "https://schema.khronos.org/vulkan/devsim_1_0_0.json#",
+    "comments": {
+        "info": "Vulkan Hardware Report generated via https://vulkan.gpuinfo.org",
+        "desc": "https://vulkan.gpuinfo.org/displayreport.php?id=2114"
+    },
+    "environment": {
+        "architecture": "arm",
+        "comment": "",
+        "name": "android",
+        "reportversion": "1.4",
+        "submitter": "",
+        "version": "8.0.0"
+    },
+    "extended": {
+        "devicefeatures2": [],
+        "deviceproperties2": [
+            {
+                "extension": "VK_KHR_push_descriptor",
+                "name": "maxPushDescriptors",
+                "value": "32"
+            }
+        ]
+    },
+    "platformdetails": {
+        "android.BuildID": "47.1.A.5.51",
+        "android.BuildVersionIncremental": "3742384072",
+        "android.ProductManufacturer": "Sony",
+        "android.ProductModel": "G8142"
+    },
+    "surfacecapabilites": {
+        "maxImageArrayLayers": 1,
+        "maxImageCount": 3,
+        "maxImageExtent": {
+            "height": 4096,
+            "width": 4096
+        },
+        "minImageCount": 2,
+        "minImageExtent": {
+            "height": 1,
+            "width": 1
+        },
+        "presentmodes": [
+            1,
+            2,
+            1000111000,
+            1000111001
+        ],
+        "supportedCompositeAlpha": 8,
+        "supportedTransforms": 271,
+        "supportedUsageFlags": 159,
+        "surfaceExtension": "VK_KHR_android_surface",
+        "surfaceformats": [
+            {
+                "colorSpace": 0,
+                "format": 37
+            },
+            {
+                "colorSpace": 0,
+                "format": 43
+            },
+            {
+                "colorSpace": 0,
+                "format": 4
+            }
+        ],
+        "validSurface": true
+    },
+    "VkPhysicalDeviceFeatures": {
+        "alphaToOne": 1,
+        "depthBiasClamp": 1,
+        "depthBounds": 0,
+        "depthClamp": 1,
+        "drawIndirectFirstInstance": 0,
+        "dualSrcBlend": 0,
+        "fillModeNonSolid": 1,
+        "fragmentStoresAndAtomics": 1,
+        "fullDrawIndexUint32": 1,
+        "geometryShader": 0,
+        "imageCubeArray": 1,
+        "independentBlend": 1,
+        "inheritedQueries": 1,
+        "largePoints": 1,
+        "logicOp": 0,
+        "multiDrawIndirect": 1,
+        "multiViewport": 0,
+        "occlusionQueryPrecise": 0,
+        "pipelineStatisticsQuery": 0,
+        "robustBufferAccess": 1,
+        "sampleRateShading": 1,
+        "samplerAnisotropy": 1,
+        "shaderClipDistance": 1,
+        "shaderCullDistance": 1,
+        "shaderFloat64": 0,
+        "shaderImageGatherExtended": 1,
+        "shaderInt16": 0,
+        "shaderInt64": 0,
+        "shaderResourceMinLod": 0,
+        "shaderResourceResidency": 0,
+        "shaderSampledImageArrayDynamicIndexing": 1,
+        "shaderStorageBufferArrayDynamicIndexing": 0,
+        "shaderStorageImageArrayDynamicIndexing": 0,
+        "shaderStorageImageExtendedFormats": 1,
+        "shaderStorageImageMultisample": 0,
+        "shaderStorageImageReadWithoutFormat": 0,
+        "shaderStorageImageWriteWithoutFormat": 1,
+        "shaderTessellationAndGeometryPointSize": 0,
+        "shaderUniformBufferArrayDynamicIndexing": 1,
+        "sparseBinding": 0,
+        "sparseResidency16Samples": 0,
+        "sparseResidency2Samples": 0,
+        "sparseResidency4Samples": 0,
+        "sparseResidency8Samples": 0,
+        "sparseResidencyAliased": 0,
+        "sparseResidencyBuffer": 0,
+        "sparseResidencyImage2D": 0,
+        "sparseResidencyImage3D": 0,
+        "tessellationShader": 0,
+        "textureCompressionASTC_LDR": 1,
+        "textureCompressionBC": 0,
+        "textureCompressionETC2": 1,
+        "variableMultisampleRate": 0,
+        "vertexPipelineStoresAndAtomics": 0,
+        "wideLines": 0
+    },
+    "VkPhysicalDeviceProperties": {
+        "apiVersion": 4194353,
+        "deviceID": 84148225,
+        "deviceName": "Adreno (TM) 540",
+        "deviceType": 1,
+        "driverVersion": 60111537,
+        "limits": {
+            "bufferImageGranularity": 1,
+            "discreteQueuePriorities": 3,
+            "framebufferColorSampleCounts": 7,
+            "framebufferDepthSampleCounts": 7,
+            "framebufferNoAttachmentsSampleCounts": 7,
+            "framebufferStencilSampleCounts": 7,
+            "lineWidthGranularity": 0,
+            "lineWidthRange": [
+                1,
+                1
+            ],
+            "maxBoundDescriptorSets": 4,
+            "maxClipDistances": 8,
+            "maxColorAttachments": 8,
+            "maxCombinedClipAndCullDistances": 8,
+            "maxComputeSharedMemorySize": 32768,
+            "maxComputeWorkGroupCount": [
+                65535,
+                65535,
+                65535
+            ],
+            "maxComputeWorkGroupInvocations": 1024,
+            "maxComputeWorkGroupSize": [
+                1024,
+                1024,
+                64
+            ],
+            "maxCullDistances": 8,
+            "maxDescriptorSetInputAttachments": 8,
+            "maxDescriptorSetSampledImages": 768,
+            "maxDescriptorSetSamplers": 96,
+            "maxDescriptorSetStorageBuffers": 24,
+            "maxDescriptorSetStorageBuffersDynamic": 4,
+            "maxDescriptorSetStorageImages": 24,
+            "maxDescriptorSetUniformBuffers": 84,
+            "maxDescriptorSetUniformBuffersDynamic": 8,
+            "maxDrawIndexedIndexValue": 4294967295,
+            "maxDrawIndirectCount": 4294967295,
+            "maxFragmentCombinedOutputResources": 72,
+            "maxFragmentDualSrcAttachments": 0,
+            "maxFragmentInputComponents": 128,
+            "maxFragmentOutputAttachments": 8,
+            "maxFramebufferHeight": 16384,
+            "maxFramebufferLayers": 2048,
+            "maxFramebufferWidth": 16384,
+            "maxGeometryInputComponents": 0,
+            "maxGeometryOutputComponents": 0,
+            "maxGeometryOutputVertices": 0,
+            "maxGeometryShaderInvocations": 0,
+            "maxGeometryTotalOutputComponents": 0,
+            "maxImageArrayLayers": 2048,
+            "maxImageDimension1D": 16384,
+            "maxImageDimension2D": 16384,
+            "maxImageDimension3D": 2048,
+            "maxImageDimensionCube": 16384,
+            "maxInterpolationOffset": 0.4375,
+            "maxMemoryAllocationCount": 4096,
+            "maxPerStageDescriptorInputAttachments": 8,
+            "maxPerStageDescriptorSampledImages": 128,
+            "maxPerStageDescriptorSamplers": 16,
+            "maxPerStageDescriptorStorageBuffers": 24,
+            "maxPerStageDescriptorStorageImages": 4,
+            "maxPerStageDescriptorUniformBuffers": 14,
+            "maxPerStageResources": 158,
+            "maxPushConstantsSize": 128,
+            "maxSampleMaskWords": 1,
+            "maxSamplerAllocationCount": 4000,
+            "maxSamplerAnisotropy": 16,
+            "maxSamplerLodBias": 15.99609375,
+            "maxStorageBufferRange": 2147483647,
+            "maxTessellationControlPerPatchOutputComponents": 0,
+            "maxTessellationControlPerVertexInputComponents": 0,
+            "maxTessellationControlPerVertexOutputComponents": 0,
+            "maxTessellationControlTotalOutputComponents": 0,
+            "maxTessellationEvaluationInputComponents": 0,
+            "maxTessellationEvaluationOutputComponents": 0,
+            "maxTessellationGenerationLevel": 0,
+            "maxTessellationPatchSize": 0,
+            "maxTexelBufferElements": 65536,
+            "maxTexelGatherOffset": 31,
+            "maxTexelOffset": 7,
+            "maxUniformBufferRange": 65536,
+            "maxVertexInputAttributeOffset": 4096,
+            "maxVertexInputAttributes": 32,
+            "maxVertexInputBindingStride": 2048,
+            "maxVertexInputBindings": 32,
+            "maxVertexOutputComponents": 128,
+            "maxViewportDimensions": [
+                16384,
+                16384
+            ],
+            "maxViewports": 1,
+            "minInterpolationOffset": -0.5,
+            "minMemoryMapAlignment": 64,
+            "minStorageBufferOffsetAlignment": 64,
+            "minTexelBufferOffsetAlignment": 64,
+            "minTexelGatherOffset": -32,
+            "minTexelOffset": -8,
+            "minUniformBufferOffsetAlignment": 64,
+            "mipmapPrecisionBits": 8,
+            "nonCoherentAtomSize": 1,
+            "optimalBufferCopyOffsetAlignment": 64,
+            "optimalBufferCopyRowPitchAlignment": 64,
+            "pointSizeGranularity": 0.0625,
+            "pointSizeRange": [
+                1,
+                1023
+            ],
+            "sampledImageColorSampleCounts": 7,
+            "sampledImageDepthSampleCounts": 7,
+            "sampledImageIntegerSampleCounts": 7,
+            "sampledImageStencilSampleCounts": 7,
+            "sparseAddressSpaceSize": 0,
+            "standardSampleLocations": 1,
+            "storageImageSampleCounts": 1,
+            "strictLines": 1,
+            "subPixelInterpolationOffsetBits": 4,
+            "subPixelPrecisionBits": 4,
+            "subTexelPrecisionBits": 8,
+            "timestampComputeAndGraphics": 1,
+            "timestampPeriod": 52.0833320618,
+            "viewportBoundsRange": [
+                -32768,
+                32767
+            ],
+            "viewportSubPixelBits": 0
+        },
+        "pipelineCacheUUID": [
+            177,
+            58,
+            149,
+            3,
+            67,
+            81,
+            0,
+            0,
+            0,
+            0,
+            1,
+            0,
+            4,
+            5,
+            0,
+            0
+        ],
+        "sparseProperties": {
+            "residencyAlignedMipSize": 0,
+            "residencyNonResidentStrict": 0,
+            "residencyStandard2DBlockShape": 0,
+            "residencyStandard2DMultisampleBlockShape": 0,
+            "residencyStandard3DBlockShape": 0
+        },
+        "vendorID": 20803
+    },
+    "VkPhysicalDeviceMemoryProperties": {
+        "memoryHeaps": [
+            {
+                "flags": 1,
+                "size": 3912097792
+            }
+        ],
+        "memoryTypes": [
+            {
+                "heapIndex": 0,
+                "propertyFlags": 1
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 11
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 15
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 1
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 7
+            }
+        ]
+    },
+    "ArrayOfVkExtensionProperties": [
+        {
+            "extensionName": "VK_KHR_incremental_present",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_shared_presentable_image",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_GOOGLE_display_timing",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_swapchain",
+            "specVersion": 68
+        },
+        {
+            "extensionName": "VK_KHR_maintenance1",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_variable_pointers",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_storage_buffer_storage_class",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_relaxed_block_layout",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_get_memory_requirements2",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_dedicated_allocation",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_memory",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_memory_fd",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_semaphore",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_semaphore_fd",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_fence",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_fence_fd",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_bind_memory2",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_shader_draw_parameters",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_push_descriptor",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_descriptor_update_template",
+            "specVersion": 1
+        }
+    ],
+    "ArrayOfVkLayerProperties": [],
+    "ArrayOfVkQueueFamilyProperties": [
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 3,
+            "queueFlags": 3,
+            "timestampValidBits": 48
+        }
+    ],
+    "ArrayOfVkFormatProperties": [
+        {
+            "formatID": 1,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 2,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 3,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 4,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 5,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 6,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 7,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 8,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 9,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 10,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 11,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 12,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 13,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 14,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 15,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 16,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 17,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 18,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 19,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 20,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 21,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 22,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 23,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 24,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 25,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 26,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 27,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 28,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 29,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 30,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 31,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 32,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 33,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 34,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 35,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 36,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 37,
+            "linearTilingFeatures": 449923,
+            "optimalTilingFeatures": 449923,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 38,
+            "linearTilingFeatures": 54275,
+            "optimalTilingFeatures": 54275,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 39,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 40,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 41,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 42,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 43,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 44,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 45,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 46,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 47,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 48,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 49,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 50,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 51,
+            "linearTilingFeatures": 449923,
+            "optimalTilingFeatures": 449923,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 52,
+            "linearTilingFeatures": 54275,
+            "optimalTilingFeatures": 54275,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 53,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 54,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 55,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 56,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 57,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 58,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 59,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 60,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 61,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 62,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 63,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 64,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 65,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 66,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 67,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 68,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 69,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 70,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 71,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 72,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 73,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 74,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 75,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 76,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 77,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 78,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 79,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 80,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 81,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 82,
+            "linearTilingFeatures": 52353,
+            "optimalTilingFeatures": 52353,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 83,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 84,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 85,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 86,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 87,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 88,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 89,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 90,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 91,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 92,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 93,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 94,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 95,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 96,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 97,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 98,
+            "linearTilingFeatures": 52359,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 99,
+            "linearTilingFeatures": 52359,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 100,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 101,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 102,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 103,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 104,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 105,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 106,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 107,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 108,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 109,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 110,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 111,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 112,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 113,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 114,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 115,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 116,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 117,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 118,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 119,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 120,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 121,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 122,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 123,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 124,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 50689,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 125,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 126,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 127,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 128,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 129,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 130,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 131,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 132,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 133,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 134,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 135,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 136,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 137,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 138,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 139,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 140,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 141,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 142,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 143,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 144,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 145,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 146,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 147,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 148,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 149,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 150,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 151,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 152,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 153,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 154,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 155,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 156,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 157,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 158,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 159,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 160,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 161,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 162,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 163,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 164,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 165,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 166,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 167,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 168,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 169,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 170,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 171,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 172,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 173,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 174,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 175,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 176,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 177,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 178,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 179,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 180,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 181,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 182,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 183,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 184,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/device_profiles/amd_radv_polaris10.json b/tests/device_profiles/amd_radv_polaris10.json
new file mode 100644 (file)
index 0000000..38e3ce0
--- /dev/null
@@ -0,0 +1,1506 @@
+{
+    "$schema": "https://schema.khronos.org/vulkan/devsim_1_0_0.json#",
+    "comments": {
+        "info": "Vulkan Hardware Report generated via https://vulkan.gpuinfo.org",
+        "desc": "https://vulkan.gpuinfo.org/displayreport.php?id=2117"
+    },
+    "environment": {
+        "architecture": "x86_64",
+        "comment": "",
+        "name": "arch",
+        "reportversion": "1.4",
+        "submitter": "",
+        "version": "unknown"
+    },
+    "extended": {
+        "devicefeatures2": [],
+        "deviceproperties2": [
+            {
+                "extension": "VK_KHR_push_descriptor",
+                "name": "maxPushDescriptors",
+                "value": "32"
+            }
+        ]
+    },
+    "platformdetails": [],
+    "surfacecapabilites": {
+        "maxImageArrayLayers": 1,
+        "maxImageCount": 0,
+        "maxImageExtent": {
+            "height": 755,
+            "width": 927
+        },
+        "minImageCount": 2,
+        "minImageExtent": {
+            "height": 755,
+            "width": 927
+        },
+        "presentmodes": [
+            0,
+            1,
+            2
+        ],
+        "supportedCompositeAlpha": 9,
+        "supportedTransforms": 1,
+        "supportedUsageFlags": 23,
+        "surfaceExtension": "VK_KHR_xcb_surface",
+        "surfaceformats": [
+            {
+                "colorSpace": 0,
+                "format": 50
+            },
+            {
+                "colorSpace": 0,
+                "format": 44
+            }
+        ],
+        "validSurface": true
+    },
+    "VkPhysicalDeviceFeatures": {
+        "alphaToOne": 1,
+        "depthBiasClamp": 1,
+        "depthBounds": 1,
+        "depthClamp": 1,
+        "drawIndirectFirstInstance": 1,
+        "dualSrcBlend": 1,
+        "fillModeNonSolid": 1,
+        "fragmentStoresAndAtomics": 1,
+        "fullDrawIndexUint32": 1,
+        "geometryShader": 1,
+        "imageCubeArray": 1,
+        "independentBlend": 1,
+        "inheritedQueries": 1,
+        "largePoints": 1,
+        "logicOp": 1,
+        "multiDrawIndirect": 1,
+        "multiViewport": 1,
+        "occlusionQueryPrecise": 1,
+        "pipelineStatisticsQuery": 1,
+        "robustBufferAccess": 1,
+        "sampleRateShading": 1,
+        "samplerAnisotropy": 1,
+        "shaderClipDistance": 1,
+        "shaderCullDistance": 1,
+        "shaderFloat64": 1,
+        "shaderImageGatherExtended": 1,
+        "shaderInt16": 0,
+        "shaderInt64": 1,
+        "shaderResourceMinLod": 0,
+        "shaderResourceResidency": 0,
+        "shaderSampledImageArrayDynamicIndexing": 1,
+        "shaderStorageBufferArrayDynamicIndexing": 1,
+        "shaderStorageImageArrayDynamicIndexing": 1,
+        "shaderStorageImageExtendedFormats": 1,
+        "shaderStorageImageMultisample": 0,
+        "shaderStorageImageReadWithoutFormat": 1,
+        "shaderStorageImageWriteWithoutFormat": 1,
+        "shaderTessellationAndGeometryPointSize": 1,
+        "shaderUniformBufferArrayDynamicIndexing": 1,
+        "sparseBinding": 1,
+        "sparseResidency16Samples": 0,
+        "sparseResidency2Samples": 0,
+        "sparseResidency4Samples": 0,
+        "sparseResidency8Samples": 0,
+        "sparseResidencyAliased": 0,
+        "sparseResidencyBuffer": 0,
+        "sparseResidencyImage2D": 0,
+        "sparseResidencyImage3D": 0,
+        "tessellationShader": 1,
+        "textureCompressionASTC_LDR": 0,
+        "textureCompressionBC": 1,
+        "textureCompressionETC2": 0,
+        "variableMultisampleRate": 1,
+        "vertexPipelineStoresAndAtomics": 1,
+        "wideLines": 1
+    },
+    "VkPhysicalDeviceProperties": {
+        "apiVersion": 4194346,
+        "deviceID": 26591,
+        "deviceName": "AMD RADV POLARIS10",
+        "deviceType": 2,
+        "driverVersion": 71311365,
+        "limits": {
+            "bufferImageGranularity": 64,
+            "discreteQueuePriorities": 1,
+            "framebufferColorSampleCounts": 15,
+            "framebufferDepthSampleCounts": 15,
+            "framebufferNoAttachmentsSampleCounts": 15,
+            "framebufferStencilSampleCounts": 15,
+            "lineWidthGranularity": 0.0078125,
+            "lineWidthRange": [
+                0,
+                7.9921875
+            ],
+            "maxBoundDescriptorSets": 32,
+            "maxClipDistances": 8,
+            "maxColorAttachments": 8,
+            "maxCombinedClipAndCullDistances": 8,
+            "maxComputeSharedMemorySize": 32768,
+            "maxComputeWorkGroupCount": [
+                65535,
+                65535,
+                65535
+            ],
+            "maxComputeWorkGroupInvocations": 2048,
+            "maxComputeWorkGroupSize": [
+                2048,
+                2048,
+                2048
+            ],
+            "maxCullDistances": 8,
+            "maxDescriptorSetInputAttachments": 9586979,
+            "maxDescriptorSetSampledImages": 9586979,
+            "maxDescriptorSetSamplers": 9586979,
+            "maxDescriptorSetStorageBuffers": 9586979,
+            "maxDescriptorSetStorageBuffersDynamic": 8,
+            "maxDescriptorSetStorageImages": 9586979,
+            "maxDescriptorSetUniformBuffers": 9586979,
+            "maxDescriptorSetUniformBuffersDynamic": 8,
+            "maxDrawIndexedIndexValue": 4294967295,
+            "maxDrawIndirectCount": 4294967295,
+            "maxFragmentCombinedOutputResources": 8,
+            "maxFragmentDualSrcAttachments": 1,
+            "maxFragmentInputComponents": 128,
+            "maxFragmentOutputAttachments": 8,
+            "maxFramebufferHeight": 16384,
+            "maxFramebufferLayers": 1024,
+            "maxFramebufferWidth": 16384,
+            "maxGeometryInputComponents": 64,
+            "maxGeometryOutputComponents": 128,
+            "maxGeometryOutputVertices": 256,
+            "maxGeometryShaderInvocations": 127,
+            "maxGeometryTotalOutputComponents": 1024,
+            "maxImageArrayLayers": 2048,
+            "maxImageDimension1D": 16384,
+            "maxImageDimension2D": 16384,
+            "maxImageDimension3D": 2048,
+            "maxImageDimensionCube": 16384,
+            "maxInterpolationOffset": 2,
+            "maxMemoryAllocationCount": 4294967295,
+            "maxPerStageDescriptorInputAttachments": 9586979,
+            "maxPerStageDescriptorSampledImages": 9586979,
+            "maxPerStageDescriptorSamplers": 9586979,
+            "maxPerStageDescriptorStorageBuffers": 9586979,
+            "maxPerStageDescriptorStorageImages": 9586979,
+            "maxPerStageDescriptorUniformBuffers": 9586979,
+            "maxPerStageResources": 9586979,
+            "maxPushConstantsSize": 128,
+            "maxSampleMaskWords": 1,
+            "maxSamplerAllocationCount": 65536,
+            "maxSamplerAnisotropy": 16,
+            "maxSamplerLodBias": 16,
+            "maxStorageBufferRange": 4294967295,
+            "maxTessellationControlPerPatchOutputComponents": 120,
+            "maxTessellationControlPerVertexInputComponents": 128,
+            "maxTessellationControlPerVertexOutputComponents": 128,
+            "maxTessellationControlTotalOutputComponents": 4096,
+            "maxTessellationEvaluationInputComponents": 128,
+            "maxTessellationEvaluationOutputComponents": 128,
+            "maxTessellationGenerationLevel": 64,
+            "maxTessellationPatchSize": 32,
+            "maxTexelBufferElements": 134217728,
+            "maxTexelGatherOffset": 31,
+            "maxTexelOffset": 31,
+            "maxUniformBufferRange": 4294967295,
+            "maxVertexInputAttributeOffset": 2047,
+            "maxVertexInputAttributes": 32,
+            "maxVertexInputBindingStride": 2048,
+            "maxVertexInputBindings": 32,
+            "maxVertexOutputComponents": 128,
+            "maxViewportDimensions": [
+                16384,
+                16384
+            ],
+            "maxViewports": 16,
+            "minInterpolationOffset": -2,
+            "minMemoryMapAlignment": 4096,
+            "minStorageBufferOffsetAlignment": 4,
+            "minTexelBufferOffsetAlignment": 1,
+            "minTexelGatherOffset": -32,
+            "minTexelOffset": -32,
+            "minUniformBufferOffsetAlignment": 4,
+            "mipmapPrecisionBits": 4,
+            "nonCoherentAtomSize": 64,
+            "optimalBufferCopyOffsetAlignment": 128,
+            "optimalBufferCopyRowPitchAlignment": 128,
+            "pointSizeGranularity": 0.125,
+            "pointSizeRange": [
+                0.125,
+                255.875
+            ],
+            "sampledImageColorSampleCounts": 15,
+            "sampledImageDepthSampleCounts": 15,
+            "sampledImageIntegerSampleCounts": 1,
+            "sampledImageStencilSampleCounts": 15,
+            "sparseAddressSpaceSize": 4294967295,
+            "standardSampleLocations": 1,
+            "storageImageSampleCounts": 1,
+            "strictLines": 0,
+            "subPixelInterpolationOffsetBits": 8,
+            "subPixelPrecisionBits": 4,
+            "subTexelPrecisionBits": 4,
+            "timestampComputeAndGraphics": 1,
+            "timestampPeriod": 40,
+            "viewportBoundsRange": [
+                -32768,
+                32767
+            ],
+            "viewportSubPixelBits": 13
+        },
+        "pipelineCacheUUID": [
+            49,
+            76,
+            7,
+            90,
+            252,
+            1,
+            178,
+            89,
+            64,
+            0,
+            114,
+            97,
+            100,
+            118,
+            0,
+            0
+        ],
+        "sparseProperties": {
+            "residencyAlignedMipSize": 0,
+            "residencyNonResidentStrict": 0,
+            "residencyStandard2DBlockShape": 0,
+            "residencyStandard2DMultisampleBlockShape": 0,
+            "residencyStandard3DBlockShape": 0
+        },
+        "vendorID": 4098
+    },
+    "VkPhysicalDeviceMemoryProperties": {
+        "memoryHeaps": [
+            {
+                "flags": 1,
+                "size": 8305770496
+            },
+            {
+                "flags": 1,
+                "size": 233246720
+            },
+            {
+                "flags": 0,
+                "size": 8588075008
+            }
+        ],
+        "memoryTypes": [
+            {
+                "heapIndex": 0,
+                "propertyFlags": 1
+            },
+            {
+                "heapIndex": 2,
+                "propertyFlags": 6
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 7
+            },
+            {
+                "heapIndex": 2,
+                "propertyFlags": 14
+            }
+        ]
+    },
+    "ArrayOfVkExtensionProperties": [
+        {
+            "extensionName": "VK_KHR_descriptor_update_template",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_incremental_present",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_maintenance1",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_push_descriptor",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_sampler_mirror_clamp_to_edge",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_swapchain",
+            "specVersion": 68
+        },
+        {
+            "extensionName": "VK_AMD_draw_indirect_count",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_shader_draw_parameters",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_get_memory_requirements2",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_dedicated_allocation",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_memory",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_memory_fd",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_storage_buffer_storage_class",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_variable_pointers",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_semaphore",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_semaphore_fd",
+            "specVersion": 1
+        }
+    ],
+    "ArrayOfVkLayerProperties": [],
+    "ArrayOfVkQueueFamilyProperties": [
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 1,
+            "queueFlags": 15,
+            "timestampValidBits": 64
+        },
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 8,
+            "queueFlags": 14,
+            "timestampValidBits": 64
+        }
+    ],
+    "ArrayOfVkFormatProperties": [
+        {
+            "formatID": 1,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 2,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 3,
+            "linearTilingFeatures": 54275,
+            "optimalTilingFeatures": 54275,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 4,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 5,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 6,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 7,
+            "linearTilingFeatures": 54275,
+            "optimalTilingFeatures": 54275,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 8,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 9,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 10,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 11,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 12,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 13,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 14,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 15,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 16,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 17,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 18,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 19,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 20,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 21,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 22,
+            "linearTilingFeatures": 51584,
+            "optimalTilingFeatures": 51584,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 23,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 24,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 25,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 26,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 27,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 28,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 29,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 30,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 31,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 32,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 33,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 34,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 35,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 36,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 37,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 38,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 39,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 40,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 41,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 42,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 43,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 44,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 45,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 46,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 47,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 48,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 49,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 50,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 51,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 52,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 53,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 54,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 55,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 56,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 57,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 58,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 59,
+            "linearTilingFeatures": 51584,
+            "optimalTilingFeatures": 51584,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 60,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 61,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 62,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 63,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 64,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 65,
+            "linearTilingFeatures": 51584,
+            "optimalTilingFeatures": 51584,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 66,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 67,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 68,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 69,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 70,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 71,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 72,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 73,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 74,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 75,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 76,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 77,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 78,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 79,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 80,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 81,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 82,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 83,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 84,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 85,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 86,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 87,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 88,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 89,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 90,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 91,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 92,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 93,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 94,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 95,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 96,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 97,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 98,
+            "linearTilingFeatures": 52359,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 99,
+            "linearTilingFeatures": 52359,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 100,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 101,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 102,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 103,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 104,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 105,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 106,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 107,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 108,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 109,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 110,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 111,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 112,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 113,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 114,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 115,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 116,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 117,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 118,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 119,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 120,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 121,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 122,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 123,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 124,
+            "linearTilingFeatures": 49154,
+            "optimalTilingFeatures": 52739,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 125,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 126,
+            "linearTilingFeatures": 49154,
+            "optimalTilingFeatures": 52739,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 127,
+            "linearTilingFeatures": 49154,
+            "optimalTilingFeatures": 52739,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 128,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 52737,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 129,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 130,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 52737,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 131,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 132,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 133,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 134,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 135,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 136,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 137,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 138,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 139,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 140,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 141,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 142,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 143,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 144,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 145,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 146,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 147,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 148,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 149,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 150,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 151,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 152,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 153,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 154,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 155,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 156,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 157,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 158,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 159,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 160,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 161,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 162,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 163,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 164,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 165,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 166,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 167,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 168,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 169,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 170,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 171,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 172,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 173,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 174,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 175,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 176,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 177,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 178,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 179,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 180,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 181,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 182,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 183,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 184,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/device_profiles/geforce_940m.json b/tests/device_profiles/geforce_940m.json
new file mode 100644 (file)
index 0000000..779f4bd
--- /dev/null
@@ -0,0 +1,1677 @@
+{
+    "$schema": "https://schema.khronos.org/vulkan/devsim_1_0_0.json#",
+    "comments": {
+        "info": "Vulkan Hardware Report generated via https://vulkan.gpuinfo.org",
+        "desc": "https://vulkan.gpuinfo.org/displayreport.php?id=2110"
+    },
+    "environment": {
+        "architecture": "x86_64",
+        "comment": "",
+        "name": "windows",
+        "reportversion": "1.4",
+        "submitter": "",
+        "version": "10"
+    },
+    "extended": {
+        "devicefeatures2": [
+            {
+                "extension": "VK_KHX_multiview",
+                "name": "multiview",
+                "supported": true
+            },
+            {
+                "extension": "VK_KHX_multiview",
+                "name": "multiviewGeometryShader",
+                "supported": true
+            },
+            {
+                "extension": "VK_KHX_multiview",
+                "name": "multiviewTessellationShader",
+                "supported": true
+            }
+        ],
+        "deviceproperties2": [
+            {
+                "extension": "VK_KHX_multiview",
+                "name": "maxMultiviewViewCount",
+                "value": "32"
+            },
+            {
+                "extension": "VK_KHX_multiview",
+                "name": "maxMultiviewInstanceIndex",
+                "value": "134217727"
+            },
+            {
+                "extension": "VK_KHR_push_descriptor",
+                "name": "maxPushDescriptors",
+                "value": "32"
+            },
+            {
+                "extension": "VK_EXT_discard_rectangles",
+                "name": "maxDiscardRectangles",
+                "value": "8"
+            },
+            {
+                "extension": "VK_NVX_multiview_per_view_attributes",
+                "name": "perViewPositionAllComponents",
+                "value": "8"
+            }
+        ]
+    },
+    "platformdetails": [],
+    "surfacecapabilites": {
+        "maxImageArrayLayers": 1,
+        "maxImageCount": 8,
+        "maxImageExtent": {
+            "height": 749,
+            "width": 927
+        },
+        "minImageCount": 2,
+        "minImageExtent": {
+            "height": 749,
+            "width": 927
+        },
+        "presentmodes": [
+            2,
+            3,
+            1
+        ],
+        "supportedCompositeAlpha": 1,
+        "supportedTransforms": 1,
+        "supportedUsageFlags": 159,
+        "surfaceExtension": "VK_KHR_win32_surface",
+        "surfaceformats": [
+            {
+                "colorSpace": 0,
+                "format": 44
+            },
+            {
+                "colorSpace": 0,
+                "format": 50
+            }
+        ],
+        "validSurface": true
+    },
+    "VkPhysicalDeviceFeatures": {
+        "alphaToOne": 1,
+        "depthBiasClamp": 1,
+        "depthBounds": 1,
+        "depthClamp": 1,
+        "drawIndirectFirstInstance": 1,
+        "dualSrcBlend": 1,
+        "fillModeNonSolid": 1,
+        "fragmentStoresAndAtomics": 1,
+        "fullDrawIndexUint32": 1,
+        "geometryShader": 1,
+        "imageCubeArray": 1,
+        "independentBlend": 1,
+        "inheritedQueries": 1,
+        "largePoints": 1,
+        "logicOp": 1,
+        "multiDrawIndirect": 1,
+        "multiViewport": 1,
+        "occlusionQueryPrecise": 1,
+        "pipelineStatisticsQuery": 1,
+        "robustBufferAccess": 1,
+        "sampleRateShading": 1,
+        "samplerAnisotropy": 1,
+        "shaderClipDistance": 1,
+        "shaderCullDistance": 1,
+        "shaderFloat64": 1,
+        "shaderImageGatherExtended": 1,
+        "shaderInt16": 0,
+        "shaderInt64": 1,
+        "shaderResourceMinLod": 0,
+        "shaderResourceResidency": 0,
+        "shaderSampledImageArrayDynamicIndexing": 1,
+        "shaderStorageBufferArrayDynamicIndexing": 1,
+        "shaderStorageImageArrayDynamicIndexing": 1,
+        "shaderStorageImageExtendedFormats": 1,
+        "shaderStorageImageMultisample": 1,
+        "shaderStorageImageReadWithoutFormat": 1,
+        "shaderStorageImageWriteWithoutFormat": 1,
+        "shaderTessellationAndGeometryPointSize": 1,
+        "shaderUniformBufferArrayDynamicIndexing": 1,
+        "sparseBinding": 1,
+        "sparseResidency16Samples": 0,
+        "sparseResidency2Samples": 0,
+        "sparseResidency4Samples": 0,
+        "sparseResidency8Samples": 0,
+        "sparseResidencyAliased": 0,
+        "sparseResidencyBuffer": 0,
+        "sparseResidencyImage2D": 0,
+        "sparseResidencyImage3D": 0,
+        "tessellationShader": 1,
+        "textureCompressionASTC_LDR": 0,
+        "textureCompressionBC": 1,
+        "textureCompressionETC2": 0,
+        "variableMultisampleRate": 1,
+        "vertexPipelineStoresAndAtomics": 1,
+        "wideLines": 1
+    },
+    "VkPhysicalDeviceProperties": {
+        "apiVersion": 4194360,
+        "deviceID": 4935,
+        "deviceName": "GeForce 940M",
+        "deviceType": 2,
+        "driverVersion": 1627602944,
+        "limits": {
+            "bufferImageGranularity": 65536,
+            "discreteQueuePriorities": 2,
+            "framebufferColorSampleCounts": 15,
+            "framebufferDepthSampleCounts": 15,
+            "framebufferNoAttachmentsSampleCounts": 15,
+            "framebufferStencilSampleCounts": 15,
+            "lineWidthGranularity": 0.125,
+            "lineWidthRange": [
+                0.5,
+                10
+            ],
+            "maxBoundDescriptorSets": 8,
+            "maxClipDistances": 8,
+            "maxColorAttachments": 8,
+            "maxCombinedClipAndCullDistances": 8,
+            "maxComputeSharedMemorySize": 49152,
+            "maxComputeWorkGroupCount": [
+                2147483647,
+                65535,
+                65535
+            ],
+            "maxComputeWorkGroupInvocations": 1536,
+            "maxComputeWorkGroupSize": [
+                1536,
+                1024,
+                64
+            ],
+            "maxCullDistances": 8,
+            "maxDescriptorSetInputAttachments": 8,
+            "maxDescriptorSetSampledImages": 98304,
+            "maxDescriptorSetSamplers": 4000,
+            "maxDescriptorSetStorageBuffers": 4096,
+            "maxDescriptorSetStorageBuffersDynamic": 16,
+            "maxDescriptorSetStorageImages": 98304,
+            "maxDescriptorSetUniformBuffers": 72,
+            "maxDescriptorSetUniformBuffersDynamic": 72,
+            "maxDrawIndexedIndexValue": 4294967295,
+            "maxDrawIndirectCount": 4294967295,
+            "maxFragmentCombinedOutputResources": 16,
+            "maxFragmentDualSrcAttachments": 1,
+            "maxFragmentInputComponents": 128,
+            "maxFragmentOutputAttachments": 8,
+            "maxFramebufferHeight": 16384,
+            "maxFramebufferLayers": 2048,
+            "maxFramebufferWidth": 16384,
+            "maxGeometryInputComponents": 128,
+            "maxGeometryOutputComponents": 128,
+            "maxGeometryOutputVertices": 1024,
+            "maxGeometryShaderInvocations": 32,
+            "maxGeometryTotalOutputComponents": 1024,
+            "maxImageArrayLayers": 2048,
+            "maxImageDimension1D": 16384,
+            "maxImageDimension2D": 16384,
+            "maxImageDimension3D": 2048,
+            "maxImageDimensionCube": 16384,
+            "maxInterpolationOffset": 0.4375,
+            "maxMemoryAllocationCount": 4096,
+            "maxPerStageDescriptorInputAttachments": 8,
+            "maxPerStageDescriptorSampledImages": 16384,
+            "maxPerStageDescriptorSamplers": 4000,
+            "maxPerStageDescriptorStorageBuffers": 4096,
+            "maxPerStageDescriptorStorageImages": 16384,
+            "maxPerStageDescriptorUniformBuffers": 12,
+            "maxPerStageResources": 53268,
+            "maxPushConstantsSize": 256,
+            "maxSampleMaskWords": 1,
+            "maxSamplerAllocationCount": 4000,
+            "maxSamplerAnisotropy": 16,
+            "maxSamplerLodBias": 15,
+            "maxStorageBufferRange": 2147483647,
+            "maxTessellationControlPerPatchOutputComponents": 120,
+            "maxTessellationControlPerVertexInputComponents": 128,
+            "maxTessellationControlPerVertexOutputComponents": 128,
+            "maxTessellationControlTotalOutputComponents": 4216,
+            "maxTessellationEvaluationInputComponents": 128,
+            "maxTessellationEvaluationOutputComponents": 128,
+            "maxTessellationGenerationLevel": 64,
+            "maxTessellationPatchSize": 32,
+            "maxTexelBufferElements": 134217728,
+            "maxTexelGatherOffset": 31,
+            "maxTexelOffset": 7,
+            "maxUniformBufferRange": 65536,
+            "maxVertexInputAttributeOffset": 2047,
+            "maxVertexInputAttributes": 32,
+            "maxVertexInputBindingStride": 2048,
+            "maxVertexInputBindings": 32,
+            "maxVertexOutputComponents": 128,
+            "maxViewportDimensions": [
+                16384,
+                16384
+            ],
+            "maxViewports": 16,
+            "minInterpolationOffset": -0.5,
+            "minMemoryMapAlignment": 64,
+            "minStorageBufferOffsetAlignment": 32,
+            "minTexelBufferOffsetAlignment": 16,
+            "minTexelGatherOffset": -32,
+            "minTexelOffset": -8,
+            "minUniformBufferOffsetAlignment": 256,
+            "mipmapPrecisionBits": 8,
+            "nonCoherentAtomSize": 64,
+            "optimalBufferCopyOffsetAlignment": 1,
+            "optimalBufferCopyRowPitchAlignment": 1,
+            "pointSizeGranularity": 0.125,
+            "pointSizeRange": [
+                1,
+                189.875
+            ],
+            "sampledImageColorSampleCounts": 15,
+            "sampledImageDepthSampleCounts": 15,
+            "sampledImageIntegerSampleCounts": 15,
+            "sampledImageStencilSampleCounts": 15,
+            "sparseAddressSpaceSize": -1,
+            "standardSampleLocations": 1,
+            "storageImageSampleCounts": 15,
+            "strictLines": 1,
+            "subPixelInterpolationOffsetBits": 4,
+            "subPixelPrecisionBits": 8,
+            "subTexelPrecisionBits": 8,
+            "timestampComputeAndGraphics": 1,
+            "timestampPeriod": 1,
+            "viewportBoundsRange": [
+                -32768,
+                32768
+            ],
+            "viewportSubPixelBits": 8
+        },
+        "pipelineCacheUUID": [
+            5,
+            245,
+            46,
+            196,
+            153,
+            80,
+            67,
+            114,
+            195,
+            180,
+            214,
+            97,
+            191,
+            27,
+            94,
+            115
+        ],
+        "sparseProperties": {
+            "residencyAlignedMipSize": 1,
+            "residencyNonResidentStrict": 0,
+            "residencyStandard2DBlockShape": 1,
+            "residencyStandard2DMultisampleBlockShape": 1,
+            "residencyStandard3DBlockShape": 1
+        },
+        "vendorID": 4318
+    },
+    "VkPhysicalDeviceMemoryProperties": {
+        "memoryHeaps": [
+            {
+                "flags": 1,
+                "size": 2119041024
+            },
+            {
+                "flags": 0,
+                "size": 8500805632
+            }
+        ],
+        "memoryTypes": [
+            {
+                "heapIndex": 1,
+                "propertyFlags": 0
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 0
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 0
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 0
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 0
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 0
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 0
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 1
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 1
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 6
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 14
+            }
+        ]
+    },
+    "ArrayOfVkExtensionProperties": [
+        {
+            "extensionName": "VK_KHR_swapchain",
+            "specVersion": 68
+        },
+        {
+            "extensionName": "VK_KHR_16bit_storage",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_bind_memory2",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_descriptor_update_template",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_dedicated_allocation",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_get_memory_requirements2",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_image_format_list",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_maintenance1",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_maintenance2",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_push_descriptor",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_relaxed_block_layout",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_sampler_mirror_clamp_to_edge",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_sampler_ycbcr_conversion",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_shader_draw_parameters",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_storage_buffer_storage_class",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_memory",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_memory_win32",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_semaphore",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_semaphore_win32",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_win32_keyed_mutex",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_fence",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_fence_win32",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_variable_pointers",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHX_device_group",
+            "specVersion": 2
+        },
+        {
+            "extensionName": "VK_KHX_external_memory",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHX_external_memory_win32",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHX_external_semaphore",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHX_external_semaphore_win32",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHX_multiview",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHX_win32_keyed_mutex",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_EXT_blend_operation_advanced",
+            "specVersion": 2
+        },
+        {
+            "extensionName": "VK_EXT_depth_range_unrestricted",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_EXT_discard_rectangles",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_EXT_shader_subgroup_ballot",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_EXT_shader_subgroup_vote",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NV_dedicated_allocation",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NV_external_memory",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NV_external_memory_win32",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NV_glsl_shader",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NV_win32_keyed_mutex",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NVX_device_generated_commands",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NVX_multiview_per_view_attributes",
+            "specVersion": 1
+        }
+    ],
+    "ArrayOfVkLayerProperties": [
+        {
+            "description": "NVIDIA Optimus layer",
+            "implementationVersion": 1,
+            "layerName": "VK_LAYER_NV_optimus",
+            "specVersion": 4194360
+        }
+    ],
+    "ArrayOfVkQueueFamilyProperties": [
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 16,
+            "queueFlags": 15,
+            "timestampValidBits": 64
+        },
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 1,
+            "queueFlags": 4,
+            "timestampValidBits": 64
+        }
+    ],
+    "ArrayOfVkFormatProperties": [
+        {
+            "formatID": 1,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 2,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 3,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 4,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 5,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 6,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 7,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 8,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 9,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 10,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 11,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 12,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 13,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 14,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 15,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 16,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 17,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 18,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 19,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 20,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 21,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 22,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 23,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 24,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 25,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 26,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 27,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 28,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 29,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 30,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 31,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 32,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 33,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 34,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 35,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 36,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 37,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 38,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 39,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 40,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 41,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 42,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 43,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 44,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 45,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 46,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 47,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 48,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 49,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 50,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 51,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 52,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 53,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 54,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 55,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 56,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 57,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 58,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 59,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 60,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 61,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 62,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 63,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 64,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 65,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 66,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 67,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 68,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 69,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 70,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 71,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 72,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 73,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 74,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 75,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 76,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 77,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 78,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 79,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 80,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 81,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 82,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 83,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 84,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 85,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 86,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 87,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 88,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 89,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 90,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 91,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 92,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 93,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 94,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 95,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 96,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 97,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 98,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 99,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 100,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56711,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 101,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 102,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 103,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 104,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 105,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 106,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 107,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 108,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 109,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 110,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 111,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 112,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 113,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 114,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 115,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 116,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 117,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 118,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 119,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 120,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 121,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 122,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 123,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 124,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 125,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 126,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 127,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 128,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 129,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 130,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 131,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 132,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 133,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 134,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 135,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 136,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 137,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 138,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 139,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 140,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 141,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 142,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 143,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 144,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 145,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 146,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 147,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 148,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 149,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 150,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 151,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 152,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 153,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 154,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 155,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 156,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 157,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 158,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 159,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 160,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 161,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 162,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 163,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 164,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 165,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 166,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 167,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 168,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 169,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 170,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 171,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 172,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 173,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 174,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 175,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 176,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 177,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 178,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 179,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 180,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 181,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 182,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 183,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 184,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/device_profiles/intel_hd_graphics_520_skylake_gt2.json b/tests/device_profiles/intel_hd_graphics_520_skylake_gt2.json
new file mode 100644 (file)
index 0000000..15dbd17
--- /dev/null
@@ -0,0 +1,1472 @@
+{
+    "$schema": "https://schema.khronos.org/vulkan/devsim_1_0_0.json#",
+    "comments": {
+        "info": "Vulkan Hardware Report generated via https://vulkan.gpuinfo.org",
+        "desc": "https://vulkan.gpuinfo.org/displayreport.php?id=2098"
+    },
+    "environment": {
+        "architecture": "x86_64",
+        "comment": "",
+        "name": "arch",
+        "reportversion": "1.4",
+        "submitter": "Caio Silva",
+        "version": "unknown"
+    },
+    "extended": {
+        "devicefeatures2": [],
+        "deviceproperties2": [
+            {
+                "extension": "VK_KHR_push_descriptor",
+                "name": "maxPushDescriptors",
+                "value": "32"
+            }
+        ]
+    },
+    "platformdetails": [],
+    "surfacecapabilites": {
+        "maxImageArrayLayers": 1,
+        "maxImageCount": 0,
+        "maxImageExtent": {
+            "height": 755,
+            "width": 927
+        },
+        "minImageCount": 2,
+        "minImageExtent": {
+            "height": 755,
+            "width": 927
+        },
+        "presentmodes": [
+            0,
+            1,
+            2
+        ],
+        "supportedCompositeAlpha": 9,
+        "supportedTransforms": 1,
+        "supportedUsageFlags": 23,
+        "surfaceExtension": "VK_KHR_xcb_surface",
+        "surfaceformats": [
+            {
+                "colorSpace": 0,
+                "format": 50
+            },
+            {
+                "colorSpace": 0,
+                "format": 44
+            }
+        ],
+        "validSurface": true
+    },
+    "VkPhysicalDeviceFeatures": {
+        "alphaToOne": 1,
+        "depthBiasClamp": 1,
+        "depthBounds": 0,
+        "depthClamp": 1,
+        "drawIndirectFirstInstance": 1,
+        "dualSrcBlend": 1,
+        "fillModeNonSolid": 1,
+        "fragmentStoresAndAtomics": 1,
+        "fullDrawIndexUint32": 1,
+        "geometryShader": 1,
+        "imageCubeArray": 1,
+        "independentBlend": 1,
+        "inheritedQueries": 1,
+        "largePoints": 1,
+        "logicOp": 1,
+        "multiDrawIndirect": 1,
+        "multiViewport": 1,
+        "occlusionQueryPrecise": 1,
+        "pipelineStatisticsQuery": 1,
+        "robustBufferAccess": 1,
+        "sampleRateShading": 1,
+        "samplerAnisotropy": 1,
+        "shaderClipDistance": 1,
+        "shaderCullDistance": 1,
+        "shaderFloat64": 1,
+        "shaderImageGatherExtended": 1,
+        "shaderInt16": 0,
+        "shaderInt64": 1,
+        "shaderResourceMinLod": 0,
+        "shaderResourceResidency": 0,
+        "shaderSampledImageArrayDynamicIndexing": 1,
+        "shaderStorageBufferArrayDynamicIndexing": 1,
+        "shaderStorageImageArrayDynamicIndexing": 1,
+        "shaderStorageImageExtendedFormats": 1,
+        "shaderStorageImageMultisample": 0,
+        "shaderStorageImageReadWithoutFormat": 0,
+        "shaderStorageImageWriteWithoutFormat": 1,
+        "shaderTessellationAndGeometryPointSize": 1,
+        "shaderUniformBufferArrayDynamicIndexing": 1,
+        "sparseBinding": 0,
+        "sparseResidency16Samples": 0,
+        "sparseResidency2Samples": 0,
+        "sparseResidency4Samples": 0,
+        "sparseResidency8Samples": 0,
+        "sparseResidencyAliased": 0,
+        "sparseResidencyBuffer": 0,
+        "sparseResidencyImage2D": 0,
+        "sparseResidencyImage3D": 0,
+        "tessellationShader": 1,
+        "textureCompressionASTC_LDR": 1,
+        "textureCompressionBC": 1,
+        "textureCompressionETC2": 1,
+        "variableMultisampleRate": 0,
+        "vertexPipelineStoresAndAtomics": 1,
+        "wideLines": 1
+    },
+    "VkPhysicalDeviceProperties": {
+        "apiVersion": 4194358,
+        "deviceID": 6422,
+        "deviceName": "Intel(R) HD Graphics 520 (Skylake GT2)",
+        "deviceType": 1,
+        "driverVersion": 71311364,
+        "limits": {
+            "bufferImageGranularity": 64,
+            "discreteQueuePriorities": 1,
+            "framebufferColorSampleCounts": 31,
+            "framebufferDepthSampleCounts": 31,
+            "framebufferNoAttachmentsSampleCounts": 31,
+            "framebufferStencilSampleCounts": 31,
+            "lineWidthGranularity": 0.0078125,
+            "lineWidthRange": [
+                0,
+                7.9921875
+            ],
+            "maxBoundDescriptorSets": 8,
+            "maxClipDistances": 8,
+            "maxColorAttachments": 8,
+            "maxCombinedClipAndCullDistances": 8,
+            "maxComputeSharedMemorySize": 32768,
+            "maxComputeWorkGroupCount": [
+                65535,
+                65535,
+                65535
+            ],
+            "maxComputeWorkGroupInvocations": 896,
+            "maxComputeWorkGroupSize": [
+                896,
+                896,
+                896
+            ],
+            "maxCullDistances": 8,
+            "maxDescriptorSetInputAttachments": 256,
+            "maxDescriptorSetSampledImages": 256,
+            "maxDescriptorSetSamplers": 256,
+            "maxDescriptorSetStorageBuffers": 256,
+            "maxDescriptorSetStorageBuffersDynamic": 8,
+            "maxDescriptorSetStorageImages": 256,
+            "maxDescriptorSetUniformBuffers": 256,
+            "maxDescriptorSetUniformBuffersDynamic": 8,
+            "maxDrawIndexedIndexValue": 4294967295,
+            "maxDrawIndirectCount": 4294967295,
+            "maxFragmentCombinedOutputResources": 8,
+            "maxFragmentDualSrcAttachments": 1,
+            "maxFragmentInputComponents": 128,
+            "maxFragmentOutputAttachments": 8,
+            "maxFramebufferHeight": 16384,
+            "maxFramebufferLayers": 2048,
+            "maxFramebufferWidth": 16384,
+            "maxGeometryInputComponents": 64,
+            "maxGeometryOutputComponents": 128,
+            "maxGeometryOutputVertices": 256,
+            "maxGeometryShaderInvocations": 32,
+            "maxGeometryTotalOutputComponents": 1024,
+            "maxImageArrayLayers": 2048,
+            "maxImageDimension1D": 16384,
+            "maxImageDimension2D": 16384,
+            "maxImageDimension3D": 2048,
+            "maxImageDimensionCube": 16384,
+            "maxInterpolationOffset": 0.4375,
+            "maxMemoryAllocationCount": 4294967295,
+            "maxPerStageDescriptorInputAttachments": 64,
+            "maxPerStageDescriptorSampledImages": 128,
+            "maxPerStageDescriptorSamplers": 128,
+            "maxPerStageDescriptorStorageBuffers": 64,
+            "maxPerStageDescriptorStorageImages": 64,
+            "maxPerStageDescriptorUniformBuffers": 64,
+            "maxPerStageResources": 250,
+            "maxPushConstantsSize": 128,
+            "maxSampleMaskWords": 1,
+            "maxSamplerAllocationCount": 65536,
+            "maxSamplerAnisotropy": 16,
+            "maxSamplerLodBias": 16,
+            "maxStorageBufferRange": 1073741824,
+            "maxTessellationControlPerPatchOutputComponents": 128,
+            "maxTessellationControlPerVertexInputComponents": 128,
+            "maxTessellationControlPerVertexOutputComponents": 128,
+            "maxTessellationControlTotalOutputComponents": 2048,
+            "maxTessellationEvaluationInputComponents": 128,
+            "maxTessellationEvaluationOutputComponents": 128,
+            "maxTessellationGenerationLevel": 64,
+            "maxTessellationPatchSize": 32,
+            "maxTexelBufferElements": 134217728,
+            "maxTexelGatherOffset": 31,
+            "maxTexelOffset": 7,
+            "maxUniformBufferRange": 134217728,
+            "maxVertexInputAttributeOffset": 2047,
+            "maxVertexInputAttributes": 28,
+            "maxVertexInputBindingStride": 2048,
+            "maxVertexInputBindings": 28,
+            "maxVertexOutputComponents": 128,
+            "maxViewportDimensions": [
+                16384,
+                16384
+            ],
+            "maxViewports": 16,
+            "minInterpolationOffset": -0.5,
+            "minMemoryMapAlignment": 4096,
+            "minStorageBufferOffsetAlignment": 4,
+            "minTexelBufferOffsetAlignment": 1,
+            "minTexelGatherOffset": -32,
+            "minTexelOffset": -8,
+            "minUniformBufferOffsetAlignment": 16,
+            "mipmapPrecisionBits": 4,
+            "nonCoherentAtomSize": 64,
+            "optimalBufferCopyOffsetAlignment": 128,
+            "optimalBufferCopyRowPitchAlignment": 128,
+            "pointSizeGranularity": 0.125,
+            "pointSizeRange": [
+                0.125,
+                255.875
+            ],
+            "sampledImageColorSampleCounts": 31,
+            "sampledImageDepthSampleCounts": 31,
+            "sampledImageIntegerSampleCounts": 1,
+            "sampledImageStencilSampleCounts": 31,
+            "sparseAddressSpaceSize": 0,
+            "standardSampleLocations": 1,
+            "storageImageSampleCounts": 1,
+            "strictLines": 0,
+            "subPixelInterpolationOffsetBits": 4,
+            "subPixelPrecisionBits": 4,
+            "subTexelPrecisionBits": 4,
+            "timestampComputeAndGraphics": 0,
+            "timestampPeriod": 83.3333358765,
+            "viewportBoundsRange": [
+                -32768,
+                32767
+            ],
+            "viewportSubPixelBits": 13
+        },
+        "pipelineCacheUUID": [
+            55,
+            106,
+            221,
+            116,
+            216,
+            244,
+            14,
+            126,
+            210,
+            30,
+            145,
+            74,
+            98,
+            39,
+            52,
+            89
+        ],
+        "sparseProperties": {
+            "residencyAlignedMipSize": 0,
+            "residencyNonResidentStrict": 0,
+            "residencyStandard2DBlockShape": 0,
+            "residencyStandard2DMultisampleBlockShape": 0,
+            "residencyStandard3DBlockShape": 0
+        },
+        "vendorID": 32902
+    },
+    "VkPhysicalDeviceMemoryProperties": {
+        "memoryHeaps": [
+            {
+                "flags": 1,
+                "size": 11289211904
+            },
+            {
+                "flags": 1,
+                "size": 1073741824
+            }
+        ],
+        "memoryTypes": [
+            {
+                "heapIndex": 0,
+                "propertyFlags": 15
+            },
+            {
+                "heapIndex": 1,
+                "propertyFlags": 15
+            }
+        ]
+    },
+    "ArrayOfVkExtensionProperties": [
+        {
+            "extensionName": "VK_KHR_dedicated_allocation",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_descriptor_update_template",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_memory",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_external_memory_fd",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_get_memory_requirements2",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_incremental_present",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_maintenance1",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_push_descriptor",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_sampler_mirror_clamp_to_edge",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_shader_draw_parameters",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_storage_buffer_storage_class",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_swapchain",
+            "specVersion": 68
+        },
+        {
+            "extensionName": "VK_KHR_variable_pointers",
+            "specVersion": 1
+        }
+    ],
+    "ArrayOfVkLayerProperties": [],
+    "ArrayOfVkQueueFamilyProperties": [
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 1,
+            "queueFlags": 7,
+            "timestampValidBits": 36
+        }
+    ],
+    "ArrayOfVkFormatProperties": [
+        {
+            "formatID": 1,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 2,
+            "linearTilingFeatures": 56449,
+            "optimalTilingFeatures": 56449,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 3,
+            "linearTilingFeatures": 56449,
+            "optimalTilingFeatures": 56449,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 4,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 5,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 6,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 7,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 8,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 9,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 10,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 11,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 12,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 13,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 14,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 15,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 16,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 17,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 18,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 19,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 20,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 21,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 22,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 23,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 24,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 25,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 26,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 27,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 28,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 29,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 30,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 31,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 32,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 33,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 34,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 35,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 36,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 37,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 38,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 39,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 40,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 41,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 42,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 43,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 44,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 45,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 46,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 47,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 48,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 49,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 50,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 51,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 52,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 53,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 54,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 55,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 56,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 57,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 58,
+            "linearTilingFeatures": 56705,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 59,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 60,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 61,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 62,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 63,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 64,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 65,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 66,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 67,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 68,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 69,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 70,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 71,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 72,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 73,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 74,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 75,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 76,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 77,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 78,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 79,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 80,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 81,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 82,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 83,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 84,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 85,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 86,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 87,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 88,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 89,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 90,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 91,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 92,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 93,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 94,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 95,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 96,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 97,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 98,
+            "linearTilingFeatures": 52359,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 99,
+            "linearTilingFeatures": 52359,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 100,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 101,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 102,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 103,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 104,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 105,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 106,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 107,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 108,
+            "linearTilingFeatures": 52355,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 109,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 110,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 111,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 112,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 113,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 114,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 115,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 116,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 117,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 118,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 119,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 120,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 121,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 122,
+            "linearTilingFeatures": 56707,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 123,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 124,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 52737,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 125,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 52737,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 126,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 52737,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 127,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 52737,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 128,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 129,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 52737,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 130,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 52737,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 131,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 132,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 133,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 134,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 135,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 136,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 137,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 138,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 139,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 140,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 141,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 142,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 143,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 144,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 145,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 146,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 147,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 148,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 149,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 150,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 151,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 152,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 153,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 154,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 155,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 156,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 157,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 158,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 159,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 160,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 161,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 162,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 163,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 164,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 165,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 166,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 167,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 168,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 169,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 170,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 171,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 172,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 173,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 174,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 175,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 176,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 177,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 178,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 179,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 180,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 181,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 182,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 183,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 184,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/device_profiles/mali-t760.json b/tests/device_profiles/mali-t760.json
new file mode 100644 (file)
index 0000000..9c5cdac
--- /dev/null
@@ -0,0 +1,1426 @@
+{
+    "$schema": "https://schema.khronos.org/vulkan/devsim_1_0_0.json#",
+    "comments": {
+        "info": "Vulkan Hardware Report generated via https://vulkan.gpuinfo.org",
+        "desc": "https://vulkan.gpuinfo.org/displayreport.php?id=2001"
+    },
+    "environment": {
+        "architecture": "arm",
+        "comment": "",
+        "name": "android",
+        "reportversion": "1.4",
+        "submitter": "Iwandi",
+        "version": "7.1.2"
+    },
+    "extended": {
+        "devicefeatures2": [],
+        "deviceproperties2": []
+    },
+    "platformdetails": {
+        "android.BuildID": "NHG47K",
+        "android.BuildVersionIncremental": "eng.root.20170901.232851",
+        "android.ProductManufacturer": "rockchip",
+        "android.ProductModel": "rk3288"
+    },
+    "surfacecapabilites": {
+        "maxImageArrayLayers": 1,
+        "maxImageCount": 3,
+        "maxImageExtent": {
+            "height": 4096,
+            "width": 4096
+        },
+        "minImageCount": 2,
+        "minImageExtent": {
+            "height": 1,
+            "width": 1
+        },
+        "presentmodes": [
+            1,
+            2
+        ],
+        "supportedCompositeAlpha": 8,
+        "supportedTransforms": 271,
+        "supportedUsageFlags": 159,
+        "surfaceExtension": "VK_KHR_android_surface",
+        "surfaceformats": [
+            {
+                "colorSpace": 0,
+                "format": 37
+            },
+            {
+                "colorSpace": 0,
+                "format": 43
+            },
+            {
+                "colorSpace": 0,
+                "format": 4
+            }
+        ],
+        "validSurface": true
+    },
+    "VkPhysicalDeviceFeatures": {
+        "alphaToOne": 0,
+        "depthBiasClamp": 1,
+        "depthBounds": 0,
+        "depthClamp": 0,
+        "drawIndirectFirstInstance": 1,
+        "dualSrcBlend": 0,
+        "fillModeNonSolid": 0,
+        "fragmentStoresAndAtomics": 1,
+        "fullDrawIndexUint32": 1,
+        "geometryShader": 0,
+        "imageCubeArray": 0,
+        "independentBlend": 1,
+        "inheritedQueries": 0,
+        "largePoints": 1,
+        "logicOp": 0,
+        "multiDrawIndirect": 0,
+        "multiViewport": 0,
+        "occlusionQueryPrecise": 0,
+        "pipelineStatisticsQuery": 0,
+        "robustBufferAccess": 1,
+        "sampleRateShading": 0,
+        "samplerAnisotropy": 0,
+        "shaderClipDistance": 0,
+        "shaderCullDistance": 0,
+        "shaderFloat64": 0,
+        "shaderImageGatherExtended": 1,
+        "shaderInt16": 0,
+        "shaderInt64": 0,
+        "shaderResourceMinLod": 0,
+        "shaderResourceResidency": 0,
+        "shaderSampledImageArrayDynamicIndexing": 1,
+        "shaderStorageBufferArrayDynamicIndexing": 1,
+        "shaderStorageImageArrayDynamicIndexing": 1,
+        "shaderStorageImageExtendedFormats": 0,
+        "shaderStorageImageMultisample": 0,
+        "shaderStorageImageReadWithoutFormat": 0,
+        "shaderStorageImageWriteWithoutFormat": 0,
+        "shaderTessellationAndGeometryPointSize": 0,
+        "shaderUniformBufferArrayDynamicIndexing": 1,
+        "sparseBinding": 0,
+        "sparseResidency16Samples": 0,
+        "sparseResidency2Samples": 0,
+        "sparseResidency4Samples": 0,
+        "sparseResidency8Samples": 0,
+        "sparseResidencyAliased": 0,
+        "sparseResidencyBuffer": 0,
+        "sparseResidencyImage2D": 0,
+        "sparseResidencyImage3D": 0,
+        "tessellationShader": 0,
+        "textureCompressionASTC_LDR": 1,
+        "textureCompressionBC": 0,
+        "textureCompressionETC2": 1,
+        "variableMultisampleRate": 0,
+        "vertexPipelineStoresAndAtomics": 0,
+        "wideLines": 0
+    },
+    "VkPhysicalDeviceProperties": {
+        "apiVersion": 4194322,
+        "deviceID": 122683393,
+        "deviceName": "Mali-T760",
+        "deviceType": 1,
+        "driverVersion": 2734070174,
+        "limits": {
+            "bufferImageGranularity": 4096,
+            "discreteQueuePriorities": 2,
+            "framebufferColorSampleCounts": 5,
+            "framebufferDepthSampleCounts": 5,
+            "framebufferNoAttachmentsSampleCounts": 5,
+            "framebufferStencilSampleCounts": 5,
+            "lineWidthGranularity": 0,
+            "lineWidthRange": [
+                1,
+                1
+            ],
+            "maxBoundDescriptorSets": 4,
+            "maxClipDistances": 0,
+            "maxColorAttachments": 4,
+            "maxCombinedClipAndCullDistances": 0,
+            "maxComputeSharedMemorySize": 32768,
+            "maxComputeWorkGroupCount": [
+                65536,
+                65536,
+                65536
+            ],
+            "maxComputeWorkGroupInvocations": 256,
+            "maxComputeWorkGroupSize": [
+                256,
+                256,
+                256
+            ],
+            "maxCullDistances": 0,
+            "maxDescriptorSetInputAttachments": 4,
+            "maxDescriptorSetSampledImages": 96,
+            "maxDescriptorSetSamplers": 768,
+            "maxDescriptorSetStorageBuffers": 24,
+            "maxDescriptorSetStorageBuffersDynamic": 4,
+            "maxDescriptorSetStorageImages": 24,
+            "maxDescriptorSetUniformBuffers": 72,
+            "maxDescriptorSetUniformBuffersDynamic": 8,
+            "maxDrawIndexedIndexValue": 4294967295,
+            "maxDrawIndirectCount": 1,
+            "maxFragmentCombinedOutputResources": 12,
+            "maxFragmentDualSrcAttachments": 0,
+            "maxFragmentInputComponents": 128,
+            "maxFragmentOutputAttachments": 4,
+            "maxFramebufferHeight": 8192,
+            "maxFramebufferLayers": 256,
+            "maxFramebufferWidth": 8192,
+            "maxGeometryInputComponents": 0,
+            "maxGeometryOutputComponents": 0,
+            "maxGeometryOutputVertices": 0,
+            "maxGeometryShaderInvocations": 0,
+            "maxGeometryTotalOutputComponents": 0,
+            "maxImageArrayLayers": 256,
+            "maxImageDimension1D": 8192,
+            "maxImageDimension2D": 8192,
+            "maxImageDimension3D": 4096,
+            "maxImageDimensionCube": 8192,
+            "maxInterpolationOffset": 0,
+            "maxMemoryAllocationCount": 4294967295,
+            "maxPerStageDescriptorInputAttachments": 4,
+            "maxPerStageDescriptorSampledImages": 16,
+            "maxPerStageDescriptorSamplers": 128,
+            "maxPerStageDescriptorStorageBuffers": 4,
+            "maxPerStageDescriptorStorageImages": 4,
+            "maxPerStageDescriptorUniformBuffers": 12,
+            "maxPerStageResources": 44,
+            "maxPushConstantsSize": 128,
+            "maxSampleMaskWords": 1,
+            "maxSamplerAllocationCount": 16384,
+            "maxSamplerAnisotropy": 1,
+            "maxSamplerLodBias": 2,
+            "maxStorageBufferRange": 134217728,
+            "maxTessellationControlPerPatchOutputComponents": 0,
+            "maxTessellationControlPerVertexInputComponents": 0,
+            "maxTessellationControlPerVertexOutputComponents": 0,
+            "maxTessellationControlTotalOutputComponents": 0,
+            "maxTessellationEvaluationInputComponents": 0,
+            "maxTessellationEvaluationOutputComponents": 0,
+            "maxTessellationGenerationLevel": 0,
+            "maxTessellationPatchSize": 0,
+            "maxTexelBufferElements": 65536,
+            "maxTexelGatherOffset": 7,
+            "maxTexelOffset": 7,
+            "maxUniformBufferRange": 16384,
+            "maxVertexInputAttributeOffset": 2047,
+            "maxVertexInputAttributes": 16,
+            "maxVertexInputBindingStride": 2048,
+            "maxVertexInputBindings": 16,
+            "maxVertexOutputComponents": 128,
+            "maxViewportDimensions": [
+                8192,
+                8192
+            ],
+            "maxViewports": 1,
+            "minInterpolationOffset": 0,
+            "minMemoryMapAlignment": 64,
+            "minStorageBufferOffsetAlignment": 256,
+            "minTexelBufferOffsetAlignment": 256,
+            "minTexelGatherOffset": -8,
+            "minTexelOffset": -8,
+            "minUniformBufferOffsetAlignment": 16,
+            "mipmapPrecisionBits": 4,
+            "nonCoherentAtomSize": 64,
+            "optimalBufferCopyOffsetAlignment": 64,
+            "optimalBufferCopyRowPitchAlignment": 64,
+            "pointSizeGranularity": 0.0625,
+            "pointSizeRange": [
+                1,
+                64
+            ],
+            "sampledImageColorSampleCounts": 5,
+            "sampledImageDepthSampleCounts": 5,
+            "sampledImageIntegerSampleCounts": 1,
+            "sampledImageStencilSampleCounts": 5,
+            "sparseAddressSpaceSize": 0,
+            "standardSampleLocations": 1,
+            "storageImageSampleCounts": 1,
+            "strictLines": 1,
+            "subPixelInterpolationOffsetBits": 0,
+            "subPixelPrecisionBits": 4,
+            "subTexelPrecisionBits": 4,
+            "timestampComputeAndGraphics": 0,
+            "timestampPeriod": 0,
+            "viewportBoundsRange": [
+                -16384,
+                16383
+            ],
+            "viewportSubPixelBits": 0
+        },
+        "pipelineCacheUUID": [
+            88,
+            5,
+            49,
+            68,
+            63,
+            234,
+            15,
+            79,
+            105,
+            109,
+            177,
+            149,
+            123,
+            226,
+            236,
+            179
+        ],
+        "sparseProperties": {
+            "residencyAlignedMipSize": 0,
+            "residencyNonResidentStrict": 0,
+            "residencyStandard2DBlockShape": 0,
+            "residencyStandard2DMultisampleBlockShape": 0,
+            "residencyStandard3DBlockShape": 0
+        },
+        "vendorID": 5045
+    },
+    "VkPhysicalDeviceMemoryProperties": {
+        "memoryHeaps": [
+            {
+                "flags": 1,
+                "size": 2108874752
+            }
+        ],
+        "memoryTypes": [
+            {
+                "heapIndex": 0,
+                "propertyFlags": 7
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 11
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 17
+            }
+        ]
+    },
+    "ArrayOfVkExtensionProperties": [
+        {
+            "extensionName": "VK_KHR_swapchain",
+            "specVersion": 68
+        }
+    ],
+    "ArrayOfVkLayerProperties": [],
+    "ArrayOfVkQueueFamilyProperties": [
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 2,
+            "queueFlags": 7,
+            "timestampValidBits": 0
+        }
+    ],
+    "ArrayOfVkFormatProperties": [
+        {
+            "formatID": 1,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 2,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 3,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 4,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 5,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 6,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 7,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 8,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 9,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 10,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 11,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 12,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 13,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 14,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 15,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 16,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 17,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 18,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 19,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 20,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 21,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 22,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 23,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 24,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 25,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 26,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 27,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 28,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 29,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 30,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 31,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 32,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 33,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 34,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 35,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 36,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 37,
+            "linearTilingFeatures": 7555,
+            "optimalTilingFeatures": 7555,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 38,
+            "linearTilingFeatures": 7555,
+            "optimalTilingFeatures": 7555,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 39,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 40,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 41,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 42,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 43,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 44,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 45,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 46,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 47,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 48,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 49,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 50,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 51,
+            "linearTilingFeatures": 7555,
+            "optimalTilingFeatures": 7555,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 52,
+            "linearTilingFeatures": 7555,
+            "optimalTilingFeatures": 7555,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 53,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 54,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 55,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 56,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 57,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 58,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 59,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 60,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 61,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 62,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 63,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 64,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 65,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 66,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 67,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 68,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 69,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 70,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 71,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 72,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 73,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 74,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 75,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 76,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 77,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 78,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 79,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 80,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 81,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 82,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 83,
+            "linearTilingFeatures": 7553,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 84,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 85,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 86,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 87,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 88,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 89,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 90,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 91,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 92,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 93,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 94,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 95,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 96,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 97,
+            "linearTilingFeatures": 7555,
+            "optimalTilingFeatures": 7555,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 98,
+            "linearTilingFeatures": 3207,
+            "optimalTilingFeatures": 3207,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 99,
+            "linearTilingFeatures": 3207,
+            "optimalTilingFeatures": 3207,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 100,
+            "linearTilingFeatures": 7299,
+            "optimalTilingFeatures": 7299,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 101,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 102,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 103,
+            "linearTilingFeatures": 7299,
+            "optimalTilingFeatures": 7299,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 104,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 105,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 106,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 107,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 108,
+            "linearTilingFeatures": 3203,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 109,
+            "linearTilingFeatures": 7299,
+            "optimalTilingFeatures": 7299,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 110,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 111,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 112,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 113,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 114,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 115,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 116,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 117,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 118,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 119,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 120,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 121,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 122,
+            "linearTilingFeatures": 7297,
+            "optimalTilingFeatures": 7297,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 123,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 124,
+            "linearTilingFeatures": 5633,
+            "optimalTilingFeatures": 5633,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 125,
+            "linearTilingFeatures": 5633,
+            "optimalTilingFeatures": 5633,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 126,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 127,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 128,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 129,
+            "linearTilingFeatures": 5633,
+            "optimalTilingFeatures": 5633,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 130,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 131,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 132,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 133,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 134,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 135,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 136,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 137,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 138,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 139,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 140,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 141,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 142,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 143,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 144,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 145,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 146,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 147,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 148,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 149,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 150,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 151,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 152,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 153,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 154,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 155,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 156,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 157,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 158,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 159,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 160,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 161,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 162,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 163,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 164,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 165,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 166,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 167,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 168,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 169,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 170,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 171,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 172,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 173,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 174,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 175,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 176,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 177,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 178,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 179,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 180,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 181,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 182,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 183,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 184,
+            "linearTilingFeatures": 5121,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/device_profiles/nvidia_tegra_x1.json b/tests/device_profiles/nvidia_tegra_x1.json
new file mode 100644 (file)
index 0000000..b032970
--- /dev/null
@@ -0,0 +1,1462 @@
+{
+    "$schema": "https://schema.khronos.org/vulkan/devsim_1_0_0.json#",
+    "comments": {
+        "info": "Vulkan Hardware Report generated via https://vulkan.gpuinfo.org",
+        "desc": "https://vulkan.gpuinfo.org/displayreport.php?id=2115"
+    },
+    "environment": {
+        "architecture": "arm",
+        "comment": "",
+        "name": "android",
+        "reportversion": "1.4",
+        "submitter": "docofkult",
+        "version": "8.1.0"
+    },
+    "extended": {
+        "devicefeatures2": [],
+        "deviceproperties2": []
+    },
+    "platformdetails": {
+        "android.BuildID": "OPP5.170921.005",
+        "android.BuildVersionIncremental": "4373449",
+        "android.ProductManufacturer": "Google",
+        "android.ProductModel": "Pixel C"
+    },
+    "surfacecapabilites": {
+        "maxImageArrayLayers": 1,
+        "maxImageCount": 3,
+        "maxImageExtent": {
+            "height": 4096,
+            "width": 4096
+        },
+        "minImageCount": 2,
+        "minImageExtent": {
+            "height": 1,
+            "width": 1
+        },
+        "presentmodes": [
+            1,
+            2
+        ],
+        "supportedCompositeAlpha": 8,
+        "supportedTransforms": 271,
+        "supportedUsageFlags": 159,
+        "surfaceExtension": "VK_KHR_android_surface",
+        "surfaceformats": [
+            {
+                "colorSpace": 0,
+                "format": 37
+            },
+            {
+                "colorSpace": 0,
+                "format": 43
+            },
+            {
+                "colorSpace": 0,
+                "format": 4
+            }
+        ],
+        "validSurface": true
+    },
+    "VkPhysicalDeviceFeatures": {
+        "alphaToOne": 1,
+        "depthBiasClamp": 1,
+        "depthBounds": 1,
+        "depthClamp": 1,
+        "drawIndirectFirstInstance": 1,
+        "dualSrcBlend": 1,
+        "fillModeNonSolid": 1,
+        "fragmentStoresAndAtomics": 1,
+        "fullDrawIndexUint32": 1,
+        "geometryShader": 1,
+        "imageCubeArray": 1,
+        "independentBlend": 1,
+        "inheritedQueries": 1,
+        "largePoints": 1,
+        "logicOp": 1,
+        "multiDrawIndirect": 1,
+        "multiViewport": 1,
+        "occlusionQueryPrecise": 1,
+        "pipelineStatisticsQuery": 1,
+        "robustBufferAccess": 1,
+        "sampleRateShading": 1,
+        "samplerAnisotropy": 1,
+        "shaderClipDistance": 1,
+        "shaderCullDistance": 1,
+        "shaderFloat64": 1,
+        "shaderImageGatherExtended": 1,
+        "shaderInt16": 0,
+        "shaderInt64": 1,
+        "shaderResourceMinLod": 1,
+        "shaderResourceResidency": 1,
+        "shaderSampledImageArrayDynamicIndexing": 1,
+        "shaderStorageBufferArrayDynamicIndexing": 1,
+        "shaderStorageImageArrayDynamicIndexing": 1,
+        "shaderStorageImageExtendedFormats": 1,
+        "shaderStorageImageMultisample": 1,
+        "shaderStorageImageReadWithoutFormat": 1,
+        "shaderStorageImageWriteWithoutFormat": 1,
+        "shaderTessellationAndGeometryPointSize": 1,
+        "shaderUniformBufferArrayDynamicIndexing": 1,
+        "sparseBinding": 1,
+        "sparseResidency16Samples": 1,
+        "sparseResidency2Samples": 1,
+        "sparseResidency4Samples": 1,
+        "sparseResidency8Samples": 1,
+        "sparseResidencyAliased": 1,
+        "sparseResidencyBuffer": 1,
+        "sparseResidencyImage2D": 1,
+        "sparseResidencyImage3D": 1,
+        "tessellationShader": 1,
+        "textureCompressionASTC_LDR": 1,
+        "textureCompressionBC": 1,
+        "textureCompressionETC2": 1,
+        "variableMultisampleRate": 1,
+        "vertexPipelineStoresAndAtomics": 1,
+        "wideLines": 1
+    },
+    "VkPhysicalDeviceProperties": {
+        "apiVersion": 4194341,
+        "deviceID": 2461664215,
+        "deviceName": "NVIDIA Tegra X1",
+        "deviceType": 1,
+        "driverVersion": 1514143744,
+        "limits": {
+            "bufferImageGranularity": 1024,
+            "discreteQueuePriorities": 2,
+            "framebufferColorSampleCounts": 15,
+            "framebufferDepthSampleCounts": 15,
+            "framebufferNoAttachmentsSampleCounts": 15,
+            "framebufferStencilSampleCounts": 31,
+            "lineWidthGranularity": 0.125,
+            "lineWidthRange": [
+                0.5,
+                10
+            ],
+            "maxBoundDescriptorSets": 8,
+            "maxClipDistances": 8,
+            "maxColorAttachments": 8,
+            "maxCombinedClipAndCullDistances": 8,
+            "maxComputeSharedMemorySize": 49152,
+            "maxComputeWorkGroupCount": [
+                2147483647,
+                65535,
+                65535
+            ],
+            "maxComputeWorkGroupInvocations": 1536,
+            "maxComputeWorkGroupSize": [
+                1536,
+                1024,
+                64
+            ],
+            "maxCullDistances": 8,
+            "maxDescriptorSetInputAttachments": 8,
+            "maxDescriptorSetSampledImages": 49152,
+            "maxDescriptorSetSamplers": 4000,
+            "maxDescriptorSetStorageBuffers": 96,
+            "maxDescriptorSetStorageBuffersDynamic": 96,
+            "maxDescriptorSetStorageImages": 49152,
+            "maxDescriptorSetUniformBuffers": 72,
+            "maxDescriptorSetUniformBuffersDynamic": 72,
+            "maxDrawIndexedIndexValue": 4294967295,
+            "maxDrawIndirectCount": 4294967295,
+            "maxFragmentCombinedOutputResources": 16,
+            "maxFragmentDualSrcAttachments": 1,
+            "maxFragmentInputComponents": 128,
+            "maxFragmentOutputAttachments": 8,
+            "maxFramebufferHeight": 16384,
+            "maxFramebufferLayers": 2048,
+            "maxFramebufferWidth": 16384,
+            "maxGeometryInputComponents": 128,
+            "maxGeometryOutputComponents": 128,
+            "maxGeometryOutputVertices": 1024,
+            "maxGeometryShaderInvocations": 32,
+            "maxGeometryTotalOutputComponents": 1024,
+            "maxImageArrayLayers": 2048,
+            "maxImageDimension1D": 16384,
+            "maxImageDimension2D": 16384,
+            "maxImageDimension3D": 2048,
+            "maxImageDimensionCube": 16384,
+            "maxInterpolationOffset": 0.4375,
+            "maxMemoryAllocationCount": 4294967295,
+            "maxPerStageDescriptorInputAttachments": 8,
+            "maxPerStageDescriptorSampledImages": 8192,
+            "maxPerStageDescriptorSamplers": 4000,
+            "maxPerStageDescriptorStorageBuffers": 16,
+            "maxPerStageDescriptorStorageImages": 8192,
+            "maxPerStageDescriptorUniformBuffers": 12,
+            "maxPerStageResources": 24612,
+            "maxPushConstantsSize": 256,
+            "maxSampleMaskWords": 1,
+            "maxSamplerAllocationCount": 4000,
+            "maxSamplerAnisotropy": 16,
+            "maxSamplerLodBias": 15,
+            "maxStorageBufferRange": 2147483647,
+            "maxTessellationControlPerPatchOutputComponents": 120,
+            "maxTessellationControlPerVertexInputComponents": 128,
+            "maxTessellationControlPerVertexOutputComponents": 128,
+            "maxTessellationControlTotalOutputComponents": 4216,
+            "maxTessellationEvaluationInputComponents": 128,
+            "maxTessellationEvaluationOutputComponents": 128,
+            "maxTessellationGenerationLevel": 64,
+            "maxTessellationPatchSize": 32,
+            "maxTexelBufferElements": 134217728,
+            "maxTexelGatherOffset": 31,
+            "maxTexelOffset": 7,
+            "maxUniformBufferRange": 65536,
+            "maxVertexInputAttributeOffset": 2047,
+            "maxVertexInputAttributes": 32,
+            "maxVertexInputBindingStride": 2048,
+            "maxVertexInputBindings": 32,
+            "maxVertexOutputComponents": 128,
+            "maxViewportDimensions": [
+                16384,
+                16384
+            ],
+            "maxViewports": 16,
+            "minInterpolationOffset": -0.5,
+            "minMemoryMapAlignment": 64,
+            "minStorageBufferOffsetAlignment": 32,
+            "minTexelBufferOffsetAlignment": 16,
+            "minTexelGatherOffset": -32,
+            "minTexelOffset": -8,
+            "minUniformBufferOffsetAlignment": 256,
+            "mipmapPrecisionBits": 8,
+            "nonCoherentAtomSize": 64,
+            "optimalBufferCopyOffsetAlignment": 1,
+            "optimalBufferCopyRowPitchAlignment": 1,
+            "pointSizeGranularity": 0.125,
+            "pointSizeRange": [
+                1,
+                189.875
+            ],
+            "sampledImageColorSampleCounts": 15,
+            "sampledImageDepthSampleCounts": 15,
+            "sampledImageIntegerSampleCounts": 15,
+            "sampledImageStencilSampleCounts": 31,
+            "sparseAddressSpaceSize": -1,
+            "standardSampleLocations": 1,
+            "storageImageSampleCounts": 15,
+            "strictLines": 1,
+            "subPixelInterpolationOffsetBits": 4,
+            "subPixelPrecisionBits": 8,
+            "subTexelPrecisionBits": 8,
+            "timestampComputeAndGraphics": 1,
+            "timestampPeriod": 1,
+            "viewportBoundsRange": [
+                -32768,
+                32768
+            ],
+            "viewportSubPixelBits": 8
+        },
+        "pipelineCacheUUID": [
+            3,
+            97,
+            64,
+            32,
+            90,
+            58,
+            133,
+            178,
+            194,
+            22,
+            194,
+            34,
+            248,
+            46,
+            137,
+            8
+        ],
+        "sparseProperties": {
+            "residencyAlignedMipSize": 0,
+            "residencyNonResidentStrict": 1,
+            "residencyStandard2DBlockShape": 1,
+            "residencyStandard2DMultisampleBlockShape": 1,
+            "residencyStandard3DBlockShape": 1
+        },
+        "vendorID": 4318
+    },
+    "VkPhysicalDeviceMemoryProperties": {
+        "memoryHeaps": [
+            {
+                "flags": 1,
+                "size": 1610612736
+            }
+        ],
+        "memoryTypes": [
+            {
+                "heapIndex": 0,
+                "propertyFlags": 1
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 1
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 7
+            },
+            {
+                "heapIndex": 0,
+                "propertyFlags": 11
+            }
+        ]
+    },
+    "ArrayOfVkExtensionProperties": [
+        {
+            "extensionName": "VK_KHR_incremental_present",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_swapchain",
+            "specVersion": 68
+        },
+        {
+            "extensionName": "VK_KHR_maintenance1",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_shader_draw_parameters",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_sampler_mirror_clamp_to_edge",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_EXT_shader_subgroup_ballot",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_EXT_shader_subgroup_vote",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NV_dedicated_allocation",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_NV_glsl_shader",
+            "specVersion": 1
+        }
+    ],
+    "ArrayOfVkLayerProperties": [],
+    "ArrayOfVkQueueFamilyProperties": [
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 16,
+            "queueFlags": 15,
+            "timestampValidBits": 64
+        }
+    ],
+    "ArrayOfVkFormatProperties": [
+        {
+            "formatID": 1,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 2,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 3,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 4,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 5,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 6,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 7,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 8,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 9,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 10,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 11,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 12,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 13,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 14,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 15,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 16,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 17,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 18,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 19,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 20,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 21,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 22,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 23,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 24,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 25,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 26,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 27,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 28,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 29,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 30,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 31,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 32,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 33,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 34,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 35,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 36,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 37,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 38,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 39,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 40,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 41,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 42,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 43,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 44,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 45,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 46,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 47,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 48,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 49,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 50,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 51,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 52,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 53,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 54,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 55,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 56,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 57,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 58,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56705,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 59,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 60,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 61,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 62,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50177,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 63,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 64,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 65,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 66,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 67,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 68,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 69,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 70,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 71,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 72,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 73,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 74,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 75,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 76,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 77,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 78,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 79,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 80,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 81,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 82,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 83,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 84,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 85,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 86,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 87,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 88,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 89,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 90,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 91,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 92,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 93,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 94,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 95,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 96,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 97,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 98,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 99,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52359,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 100,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56711,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 101,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 102,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 103,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 104,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 105,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 106,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 107,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 108,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 52355,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 109,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 110,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 111,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 112,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 113,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 114,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 115,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 116,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 117,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 118,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 119,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 120,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 121,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 122,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 56707,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 123,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 124,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 125,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 126,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 127,
+            "linearTilingFeatures": 50177,
+            "optimalTilingFeatures": 50689,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 128,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 129,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 130,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54785,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 131,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 132,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 133,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 134,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 135,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 136,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 137,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 138,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 139,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 140,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 141,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 142,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 143,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 144,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 145,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 146,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 147,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 148,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 149,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 150,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 151,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 152,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 153,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 154,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 155,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 156,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 157,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 158,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 159,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 160,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 161,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 162,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 163,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 164,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 165,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 166,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 167,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 168,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 169,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 170,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 171,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 172,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 173,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 174,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 175,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 176,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 177,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 178,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 179,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 180,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 181,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 182,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 183,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 184,
+            "linearTilingFeatures": 54273,
+            "optimalTilingFeatures": 54273,
+            "bufferFeatures": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/device_profiles/powervr_rogue_ge8300.json b/tests/device_profiles/powervr_rogue_ge8300.json
new file mode 100644 (file)
index 0000000..cb88c92
--- /dev/null
@@ -0,0 +1,1440 @@
+{
+    "$schema": "https://schema.khronos.org/vulkan/devsim_1_0_0.json#",
+    "comments": {
+        "info": "Vulkan Hardware Report generated via https://vulkan.gpuinfo.org",
+        "desc": "https://vulkan.gpuinfo.org/displayreport.php?id=1999"
+    },
+    "environment": {
+        "architecture": "arm",
+        "comment": "",
+        "name": "android",
+        "reportversion": "1.4",
+        "submitter": "",
+        "version": "7.0"
+    },
+    "extended": {
+        "devicefeatures2": [],
+        "deviceproperties2": []
+    },
+    "platformdetails": {
+        "android.BuildID": "NRD90M",
+        "android.BuildVersionIncremental": "1496325358",
+        "android.ProductManufacturer": "Acer",
+        "android.ProductModel": "B3-A40"
+    },
+    "surfacecapabilites": {
+        "maxImageArrayLayers": 1,
+        "maxImageCount": 3,
+        "maxImageExtent": {
+            "height": 4096,
+            "width": 4096
+        },
+        "minImageCount": 2,
+        "minImageExtent": {
+            "height": 1,
+            "width": 1
+        },
+        "presentmodes": [
+            1,
+            2
+        ],
+        "supportedCompositeAlpha": 8,
+        "supportedTransforms": 271,
+        "supportedUsageFlags": 159,
+        "surfaceExtension": "VK_KHR_android_surface",
+        "surfaceformats": [
+            {
+                "colorSpace": 0,
+                "format": 37
+            },
+            {
+                "colorSpace": 0,
+                "format": 43
+            },
+            {
+                "colorSpace": 0,
+                "format": 4
+            }
+        ],
+        "validSurface": true
+    },
+    "VkPhysicalDeviceFeatures": {
+        "alphaToOne": 1,
+        "depthBiasClamp": 1,
+        "depthBounds": 0,
+        "depthClamp": 0,
+        "drawIndirectFirstInstance": 0,
+        "dualSrcBlend": 0,
+        "fillModeNonSolid": 0,
+        "fragmentStoresAndAtomics": 0,
+        "fullDrawIndexUint32": 1,
+        "geometryShader": 0,
+        "imageCubeArray": 1,
+        "independentBlend": 1,
+        "inheritedQueries": 0,
+        "largePoints": 1,
+        "logicOp": 1,
+        "multiDrawIndirect": 1,
+        "multiViewport": 0,
+        "occlusionQueryPrecise": 1,
+        "pipelineStatisticsQuery": 0,
+        "robustBufferAccess": 1,
+        "sampleRateShading": 1,
+        "samplerAnisotropy": 1,
+        "shaderClipDistance": 0,
+        "shaderCullDistance": 0,
+        "shaderFloat64": 0,
+        "shaderImageGatherExtended": 0,
+        "shaderInt16": 0,
+        "shaderInt64": 0,
+        "shaderResourceMinLod": 0,
+        "shaderResourceResidency": 0,
+        "shaderSampledImageArrayDynamicIndexing": 0,
+        "shaderStorageBufferArrayDynamicIndexing": 0,
+        "shaderStorageImageArrayDynamicIndexing": 0,
+        "shaderStorageImageExtendedFormats": 0,
+        "shaderStorageImageMultisample": 0,
+        "shaderStorageImageReadWithoutFormat": 0,
+        "shaderStorageImageWriteWithoutFormat": 0,
+        "shaderTessellationAndGeometryPointSize": 0,
+        "shaderUniformBufferArrayDynamicIndexing": 1,
+        "sparseBinding": 0,
+        "sparseResidency16Samples": 0,
+        "sparseResidency2Samples": 0,
+        "sparseResidency4Samples": 0,
+        "sparseResidency8Samples": 0,
+        "sparseResidencyAliased": 0,
+        "sparseResidencyBuffer": 0,
+        "sparseResidencyImage2D": 0,
+        "sparseResidencyImage3D": 0,
+        "tessellationShader": 0,
+        "textureCompressionASTC_LDR": 0,
+        "textureCompressionBC": 0,
+        "textureCompressionETC2": 1,
+        "variableMultisampleRate": 0,
+        "vertexPipelineStoresAndAtomics": 0,
+        "wideLines": 0
+    },
+    "VkPhysicalDeviceProperties": {
+        "apiVersion": 4194307,
+        "deviceID": 1455646,
+        "deviceName": "PowerVR Rogue GE8300",
+        "deviceType": 2,
+        "driverVersion": 4490469,
+        "limits": {
+            "bufferImageGranularity": 1,
+            "discreteQueuePriorities": 3,
+            "framebufferColorSampleCounts": 7,
+            "framebufferDepthSampleCounts": 7,
+            "framebufferNoAttachmentsSampleCounts": 7,
+            "framebufferStencilSampleCounts": 7,
+            "lineWidthGranularity": 0,
+            "lineWidthRange": [
+                1,
+                1
+            ],
+            "maxBoundDescriptorSets": 4,
+            "maxClipDistances": 0,
+            "maxColorAttachments": 8,
+            "maxCombinedClipAndCullDistances": 0,
+            "maxComputeSharedMemorySize": 16384,
+            "maxComputeWorkGroupCount": [
+                65536,
+                65536,
+                65536
+            ],
+            "maxComputeWorkGroupInvocations": 512,
+            "maxComputeWorkGroupSize": [
+                512,
+                512,
+                64
+            ],
+            "maxCullDistances": 0,
+            "maxDescriptorSetInputAttachments": 256,
+            "maxDescriptorSetSampledImages": 256,
+            "maxDescriptorSetSamplers": 256,
+            "maxDescriptorSetStorageBuffers": 256,
+            "maxDescriptorSetStorageBuffersDynamic": 8,
+            "maxDescriptorSetStorageImages": 256,
+            "maxDescriptorSetUniformBuffers": 256,
+            "maxDescriptorSetUniformBuffersDynamic": 8,
+            "maxDrawIndexedIndexValue": 4294967295,
+            "maxDrawIndirectCount": 2147483648,
+            "maxFragmentCombinedOutputResources": 8,
+            "maxFragmentDualSrcAttachments": 0,
+            "maxFragmentInputComponents": 128,
+            "maxFragmentOutputAttachments": 8,
+            "maxFramebufferHeight": 8192,
+            "maxFramebufferLayers": 2048,
+            "maxFramebufferWidth": 8192,
+            "maxGeometryInputComponents": 128,
+            "maxGeometryOutputComponents": 128,
+            "maxGeometryOutputVertices": 256,
+            "maxGeometryShaderInvocations": 32,
+            "maxGeometryTotalOutputComponents": 1024,
+            "maxImageArrayLayers": 2048,
+            "maxImageDimension1D": 8192,
+            "maxImageDimension2D": 8192,
+            "maxImageDimension3D": 2048,
+            "maxImageDimensionCube": 8192,
+            "maxInterpolationOffset": 0.499999970198,
+            "maxMemoryAllocationCount": 9999,
+            "maxPerStageDescriptorInputAttachments": 128,
+            "maxPerStageDescriptorSampledImages": 128,
+            "maxPerStageDescriptorSamplers": 128,
+            "maxPerStageDescriptorStorageBuffers": 128,
+            "maxPerStageDescriptorStorageImages": 128,
+            "maxPerStageDescriptorUniformBuffers": 128,
+            "maxPerStageResources": 128,
+            "maxPushConstantsSize": 128,
+            "maxSampleMaskWords": 1,
+            "maxSamplerAllocationCount": 9999,
+            "maxSamplerAnisotropy": 16,
+            "maxSamplerLodBias": 15,
+            "maxStorageBufferRange": 134217728,
+            "maxTessellationControlPerPatchOutputComponents": 0,
+            "maxTessellationControlPerVertexInputComponents": 0,
+            "maxTessellationControlPerVertexOutputComponents": 0,
+            "maxTessellationControlTotalOutputComponents": 0,
+            "maxTessellationEvaluationInputComponents": 0,
+            "maxTessellationEvaluationOutputComponents": 0,
+            "maxTessellationGenerationLevel": 0,
+            "maxTessellationPatchSize": 0,
+            "maxTexelBufferElements": 65536,
+            "maxTexelGatherOffset": 0,
+            "maxTexelOffset": 7,
+            "maxUniformBufferRange": 134217728,
+            "maxVertexInputAttributeOffset": 65535,
+            "maxVertexInputAttributes": 16,
+            "maxVertexInputBindingStride": 2147483648,
+            "maxVertexInputBindings": 16,
+            "maxVertexOutputComponents": 128,
+            "maxViewportDimensions": [
+                8192,
+                8192
+            ],
+            "maxViewports": 16,
+            "minInterpolationOffset": -0.5,
+            "minMemoryMapAlignment": 64,
+            "minStorageBufferOffsetAlignment": 4,
+            "minTexelBufferOffsetAlignment": 4,
+            "minTexelGatherOffset": 0,
+            "minTexelOffset": -8,
+            "minUniformBufferOffsetAlignment": 4,
+            "mipmapPrecisionBits": 4,
+            "nonCoherentAtomSize": 128,
+            "optimalBufferCopyOffsetAlignment": 4,
+            "optimalBufferCopyRowPitchAlignment": 4,
+            "pointSizeGranularity": 0,
+            "pointSizeRange": [
+                1,
+                511
+            ],
+            "sampledImageColorSampleCounts": 7,
+            "sampledImageDepthSampleCounts": 7,
+            "sampledImageIntegerSampleCounts": 7,
+            "sampledImageStencilSampleCounts": 7,
+            "sparseAddressSpaceSize": 274877906944,
+            "standardSampleLocations": 1,
+            "storageImageSampleCounts": 7,
+            "strictLines": 0,
+            "subPixelInterpolationOffsetBits": 4,
+            "subPixelPrecisionBits": 8,
+            "subTexelPrecisionBits": 8,
+            "timestampComputeAndGraphics": 0,
+            "timestampPeriod": 0,
+            "viewportBoundsRange": [
+                -16384,
+                16383
+            ],
+            "viewportSubPixelBits": 0
+        },
+        "pipelineCacheUUID": [
+            50,
+            50,
+            32,
+            52,
+            48,
+            32,
+            53,
+            52,
+            32,
+            51,
+            48,
+            0,
+            0,
+            0,
+            0,
+            0
+        ],
+        "sparseProperties": {
+            "residencyAlignedMipSize": 0,
+            "residencyNonResidentStrict": 0,
+            "residencyStandard2DBlockShape": 0,
+            "residencyStandard2DMultisampleBlockShape": 0,
+            "residencyStandard3DBlockShape": 0
+        },
+        "vendorID": 4112
+    },
+    "VkPhysicalDeviceMemoryProperties": {
+        "memoryHeaps": [
+            {
+                "flags": 1,
+                "size": 1073741824
+            }
+        ],
+        "memoryTypes": [
+            {
+                "heapIndex": 0,
+                "propertyFlags": 7
+            }
+        ]
+    },
+    "ArrayOfVkExtensionProperties": [
+        {
+            "extensionName": "VK_IMG_filter_cubic",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_sampler_mirror_clamp_to_edge",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_IMG_format_pvrtc",
+            "specVersion": 1
+        },
+        {
+            "extensionName": "VK_KHR_swapchain",
+            "specVersion": 68
+        }
+    ],
+    "ArrayOfVkLayerProperties": [],
+    "ArrayOfVkQueueFamilyProperties": [
+        {
+            "minImageTransferGranularity": {
+                "depth": 1,
+                "height": 1,
+                "width": 1
+            },
+            "queueCount": 2,
+            "queueFlags": 7,
+            "timestampValidBits": 0
+        },
+        {
+            "minImageTransferGranularity": {
+                "depth": 0,
+                "height": 0,
+                "width": 0
+            },
+            "queueCount": 0,
+            "queueFlags": 0,
+            "timestampValidBits": 0
+        }
+    ],
+    "ArrayOfVkFormatProperties": [
+        {
+            "formatID": 1,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 2,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 11649,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 3,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 4,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 5,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 11649,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 6,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 11649,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 7,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 11649,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 8,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 9,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 10,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 11,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 12,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 13,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 14,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 15,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 11649,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 16,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 17,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 18,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 19,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 20,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 21,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 22,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 11649,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 23,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 24,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 25,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 26,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 27,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 28,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 29,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 30,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 31,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 32,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 33,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 34,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 35,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 36,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 37,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15747,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 38,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15747,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 39,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 40,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 41,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 42,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 43,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 44,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 45,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 46,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 47,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 48,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 49,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 50,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 51,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 52,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 53,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 54,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 55,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 11393,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 56,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 11393,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 57,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 15745,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 58,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 59,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 60,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 61,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 62,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 63,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 64,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 65,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 66,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 67,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 68,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 69,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 70,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 71,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 72,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 73,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 74,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 75,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 76,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 77,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 78,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 79,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 80,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 81,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 82,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 83,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 84,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 85,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 86,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 87,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 88,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 89,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 90,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 91,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 92,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 72
+        },
+        {
+            "formatID": 93,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 94,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 95,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 96,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 97,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 7555,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 98,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3207,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 99,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3207,
+            "bufferFeatures": 120
+        },
+        {
+            "formatID": 100,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3459,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 101,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 102,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 103,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3459,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 104,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 105,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3201,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 106,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3457,
+            "bufferFeatures": 64
+        },
+        {
+            "formatID": 107,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 108,
+            "linearTilingFeatures": 3201,
+            "optimalTilingFeatures": 3203,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 109,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 3459,
+            "bufferFeatures": 88
+        },
+        {
+            "formatID": 110,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 111,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 112,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 113,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 114,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 115,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 116,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 117,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 118,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 119,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 120,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 121,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 122,
+            "linearTilingFeatures": 3457,
+            "optimalTilingFeatures": 7553,
+            "bufferFeatures": 8
+        },
+        {
+            "formatID": 123,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 5121,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 124,
+            "linearTilingFeatures": 3585,
+            "optimalTilingFeatures": 3585,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 125,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 126,
+            "linearTilingFeatures": 3585,
+            "optimalTilingFeatures": 3585,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 127,
+            "linearTilingFeatures": 3585,
+            "optimalTilingFeatures": 3585,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 128,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 129,
+            "linearTilingFeatures": 3585,
+            "optimalTilingFeatures": 3585,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 130,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 131,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 132,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 133,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 134,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 135,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 136,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 137,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 138,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 139,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 140,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 141,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 142,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 143,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 144,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 145,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 146,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 147,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 9217,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 148,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 9217,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 149,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 9217,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 150,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 9217,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 151,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 9217,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 152,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 9217,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 153,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 154,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 155,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 156,
+            "linearTilingFeatures": 1025,
+            "optimalTilingFeatures": 1025,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 157,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 158,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 159,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 160,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 161,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 162,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 163,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 164,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 165,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 166,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 167,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 168,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 169,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 170,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 171,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 172,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 173,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 174,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 175,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 176,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 177,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 178,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 179,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 180,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 181,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 182,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 183,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        },
+        {
+            "formatID": 184,
+            "linearTilingFeatures": 0,
+            "optimalTilingFeatures": 0,
+            "bufferFeatures": 0
+        }
+    ]
+}
\ No newline at end of file