{
  "schema": 1,
  "generated_utc": "20261013T122246Z",
  "app": {
    "package": "com.faux.vktest",
    "version": "1.11",
    "commit": "31b4d83fefbd",
    "checks": 66,
    "harness": 2
  },
  "device": {
    "manufacturer": "OPPO",
    "model": "CPH2853",
    "soc": "MT6835",
    "soc_maker": "Mediatek",
    "android": "16",
    "sdk": 36,
    "build": "OPPO\/CPH2853\/OP5F2BL1:16\/BP2A.250605.015\/V.R4T2.106af89_14cd288_14cd287:user\/release-keys",
    "cpu": {
      "cores": 8,
      "abi": "arm64-v8a",
      "hardware": "mt6835",
      "clusters": [
        {
          "cores": 6,
          "max_khz": 2000000
        },
        {
          "cores": 2,
          "max_khz": 2400000
        }
      ]
    },
    "ram_mb": 5616
  },
  "driver": {
    "device_name": "Mali-G57 MC2",
    "vendor_id": 5045,
    "device_id": 2425552912,
    "api_version": "1.3.219",
    "driver_version": 159387648,
    "instance_version": "1.4.0",
    "driver_id": 9,
    "name": "Mali-G57 MC2",
    "info": "v1.r38p1-01eac0.51dbefa0fd07f79a7a6805f21ef15c50",
    "conformance_version": "1.3.1.0",
    "driver_uuid": "27fd619040d3e83c209f6fb8af100a4d",
    "device_uuid": "10009390010000000000000000000000",
    "pipeline_cache_uuid": "37f842e9c66535b0af577be2688c8423",
    "kind": "system",
    "selection": "system",
    "loaded_via": "system",
    "library_sha256": null
  },
  "extensions": [
    "VK_KHR_incremental_present",
    "VK_KHR_shared_presentable_image",
    "VK_GOOGLE_display_timing",
    "VK_EXT_swapchain_maintenance1",
    "VK_KHR_swapchain_mutable_format",
    "VK_KHR_16bit_storage",
    "VK_KHR_8bit_storage",
    "VK_KHR_bind_memory2",
    "VK_KHR_buffer_device_address",
    "VK_KHR_create_renderpass2",
    "VK_KHR_copy_commands2",
    "VK_KHR_dedicated_allocation",
    "VK_KHR_depth_stencil_resolve",
    "VK_KHR_descriptor_update_template",
    "VK_KHR_device_group",
    "VK_KHR_driver_properties",
    "VK_KHR_dynamic_rendering",
    "VK_EXT_extended_dynamic_state",
    "VK_EXT_extended_dynamic_state2",
    "VK_KHR_external_fence",
    "VK_KHR_external_fence_fd",
    "VK_KHR_external_memory",
    "VK_KHR_external_memory_fd",
    "VK_KHR_external_semaphore",
    "VK_KHR_external_semaphore_fd",
    "VK_KHR_format_feature_flags2",
    "VK_KHR_get_memory_requirements2",
    "VK_KHR_global_priority",
    "VK_KHR_image_format_list",
    "VK_KHR_imageless_framebuffer",
    "VK_KHR_maintenance1",
    "VK_KHR_maintenance2",
    "VK_KHR_maintenance3",
    "VK_KHR_maintenance4",
    "VK_KHR_multiview",
    "VK_KHR_relaxed_block_layout",
    "VK_KHR_sampler_mirror_clamp_to_edge",
    "VK_KHR_sampler_ycbcr_conversion",
    "VK_KHR_separate_depth_stencil_layouts",
    "VK_KHR_shader_draw_parameters",
    "VK_KHR_shader_float16_int8",
    "VK_KHR_shader_float_controls",
    "VK_KHR_shader_integer_dot_product",
    "VK_KHR_shader_non_semantic_info",
    "VK_KHR_shader_subgroup_extended_types",
    "VK_KHR_spirv_1_4",
    "VK_KHR_storage_buffer_storage_class",
    "VK_KHR_timeline_semaphore",
    "VK_KHR_uniform_buffer_standard_layout",
    "VK_KHR_variable_pointers",
    "VK_KHR_vulkan_memory_model",
    "VK_KHR_zero_initialize_workgroup_memory",
    "VK_EXT_astc_decode_mode",
    "VK_EXT_calibrated_timestamps",
    "VK_EXT_descriptor_indexing",
    "VK_EXT_fragment_density_map",
    "VK_EXT_fragment_density_map2",
    "VK_EXT_global_priority",
    "VK_EXT_global_priority_query",
    "VK_EXT_host_query_reset",
    "VK_EXT_image_robustness",
    "VK_EXT_index_type_uint8",
    "VK_EXT_inline_uniform_block",
    "VK_EXT_line_rasterization",
    "VK_EXT_load_store_op_none",
    "VK_EXT_pipeline_creation_cache_control",
    "VK_EXT_pipeline_creation_feedback",
    "VK_EXT_primitives_generated_query",
    "VK_EXT_primitive_topology_list_restart",
    "VK_EXT_private_data",
    "VK_EXT_provoking_vertex",
    "VK_EXT_queue_family_foreign",
    "VK_EXT_device_memory_report",
    "VK_ARM_rasterization_order_attachment_access",
    "VK_EXT_scalar_block_layout",
    "VK_EXT_separate_stencil_usage",
    "VK_EXT_subgroup_size_control",
    "VK_EXT_texture_compression_astc_hdr",
    "VK_EXT_shader_subgroup_ballot",
    "VK_EXT_shader_subgroup_vote",
    "VK_EXT_texel_buffer_alignment",
    "VK_EXT_transform_feedback",
    "VK_EXT_external_memory_dma_buf",
    "VK_EXT_image_drm_format_modifier",
    "VK_EXT_custom_border_color",
    "VK_ANDROID_external_memory_android_hardware_buffer",
    "VK_KHR_swapchain",
    "VK_EXT_multisampled_render_to_single_sampled",
    "VK_EXT_image_compression_control",
    "VK_KHR_shader_terminate_invocation",
    "VK_EXT_shader_demote_to_helper_invocation",
    "VK_EXT_rgba10x6_formats",
    "VK_EXT_subpass_merge_feedback",
    "VK_EXT_4444_formats",
    "VK_KHR_synchronization2",
    "VK_EXT_tooling_info"
  ],
  "features": {
    "VkPhysicalDeviceFeatures": {
      "core_version": "1.0",
      "bits": {
        "robustBufferAccess": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "fullDrawIndexUint32": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "imageCubeArray": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "independentBlend": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "geometryShader": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "stage.geometry_point_to_quad",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "the quad the geometry shader made from one point",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "the half it does not cover",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "geometryShader"
            }
          ]
        },
        "tessellationShader": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "stage.tessellation_mirror",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "patches mirrored onto the left half",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "the half the vertex buffer named",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "tessellationShader"
            }
          ]
        },
        "sampleRateShading": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "dualSrcBlend": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "logicOp": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "multiDrawIndirect": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "core.multi_draw_indirect_instances",
              "advertised": false,
              "extension_listed": true,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "multiDrawIndirect"
            }
          ]
        },
        "drawIndirectFirstInstance": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "core.indirect_first_instance",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "left half, firstInstance 3: the fourth colour",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "right half, firstInstance 1: the second colour",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "drawIndirectFirstInstance"
            }
          ]
        },
        "depthClamp": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "depthBiasClamp": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "fillModeNonSolid": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "depthBounds": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "wideLines": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "largePoints": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "alphaToOne": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "multiViewport": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "limit.viewports",
              "advertised": false,
              "extension_listed": true,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "multiViewport"
            }
          ]
        },
        "samplerAnisotropy": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "textureCompressionETC2": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "claim.texture_compression_etc2",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "ETC2_R8G8B8_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ETC2_R8G8B8_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ETC2_R8G8B8A1_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ETC2_R8G8B8A1_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ETC2_R8G8B8A8_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ETC2_R8G8B8A8_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "EAC_R11_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "EAC_R11_SNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "EAC_R11G11_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "EAC_R11G11_SNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "textureCompressionETC2"
            }
          ]
        },
        "textureCompressionASTC_LDR": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "claim.texture_compression_astc_ldr",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "ASTC_4x4_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_4x4_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_5x4_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_5x4_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_5x5_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_5x5_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_6x5_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_6x5_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_6x6_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_6x6_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_8x5_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_8x5_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_8x6_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_8x6_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_8x8_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_8x8_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_10x5_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_10x5_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_10x6_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_10x6_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_10x8_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_10x8_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_10x10_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_10x10_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_12x10_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_12x10_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_12x12_UNORM_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "ASTC_12x12_SRGB_BLOCK: sampled, blit source, linear filter in optimalTilingFeatures",
                  "want": [
                    1,
                    1,
                    1
                  ],
                  "got": [
                    1,
                    1,
                    1
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "textureCompressionASTC_LDR"
            }
          ]
        },
        "textureCompressionBC": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "claim.texture_compression_bc",
              "advertised": false,
              "extension_listed": true,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "textureCompressionBC"
            },
            {
              "id": "bc.bc1_decode",
              "advertised": false,
              "extension_listed": true,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "textureCompressionBC"
            },
            {
              "id": "bc.bc3_decode",
              "advertised": false,
              "extension_listed": true,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "textureCompressionBC"
            }
          ]
        },
        "occlusionQueryPrecise": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "core.query_copy_same_command_buffer",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "rounds of 40 with a wrong sample count",
                  "want": [
                    0
                  ],
                  "got": [
                    0
                  ],
                  "ok": true
                },
                {
                  "what": "samples counted for the left half (a wrong round's value, when there was one)",
                  "want": [
                    2048
                  ],
                  "got": [
                    2048
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VkPhysicalDeviceFeatures",
              "bit": "occlusionQueryPrecise"
            }
          ]
        },
        "pipelineStatisticsQuery": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "vertexPipelineStoresAndAtomics": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "fragmentStoresAndAtomics": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderTessellationAndGeometryPointSize": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "shaderImageGatherExtended": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderStorageImageExtendedFormats": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderStorageImageMultisample": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "shaderStorageImageReadWithoutFormat": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderStorageImageWriteWithoutFormat": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderUniformBufferArrayDynamicIndexing": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderSampledImageArrayDynamicIndexing": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderStorageBufferArrayDynamicIndexing": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderStorageImageArrayDynamicIndexing": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderClipDistance": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "shaderCullDistance": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "shaderFloat64": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "shaderInt64": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "shaderInt16": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        },
        "shaderResourceResidency": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "shaderResourceMinLod": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseBinding": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseResidencyBuffer": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseResidencyImage2D": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseResidencyImage3D": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseResidency2Samples": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseResidency4Samples": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseResidency8Samples": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseResidency16Samples": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "sparseResidencyAliased": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "variableMultisampleRate": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "inheritedQueries": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        }
      },
      "verdict": "pass",
      "untested_bits": 19
    },
    "VK_EXT_extended_dynamic_state": {
      "extension_listed": true,
      "bits": {
        "extendedDynamicState": {
          "advertised": true,
          "verdict": "fail",
          "checks": [
            {
              "id": "eds1.cull_mode",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "cull back keeps a front face",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "cull front removes a front face",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state",
              "bit": "extendedDynamicState"
            },
            {
              "id": "eds1.front_face",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "clockwise quad is front under CLOCKWISE",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "clockwise quad is back under COUNTER_CLOCKWISE",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state",
              "bit": "extendedDynamicState"
            },
            {
              "id": "eds1.primitive_topology",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "strip fills the lower right of its half",
                  "x": 28,
                  "y": 56,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "list leaves the lower right of its half empty",
                  "x": 60,
                  "y": 56,
                  "want": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "list still draws its first triangle",
                  "x": 36,
                  "y": 8,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state",
              "bit": "extendedDynamicState"
            },
            {
              "id": "eds1.scissor_with_count",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "inside the scissor",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "outside the scissor",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state",
              "bit": "extendedDynamicState"
            },
            {
              "id": "eds1.depth_test_enable",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "depth test on: near wins",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "depth test off: last draw wins",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state",
              "bit": "extendedDynamicState"
            },
            {
              "id": "eds1.depth_write_enable",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "depth write on: far quad rejected",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "depth write off: far quad accepted",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state",
              "bit": "extendedDynamicState"
            },
            {
              "id": "eds1.depth_compare_op",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "LESS: near wins",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "ALWAYS: last draw wins",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state",
              "bit": "extendedDynamicState"
            },
            {
              "id": "eds1.vertex_stride",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "24 byte stride skips the fillers",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": false
                },
                {
                  "what": "12 byte stride reads consecutive vertices",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "fail",
              "feature": "VK_EXT_extended_dynamic_state",
              "bit": "extendedDynamicState"
            }
          ]
        }
      },
      "verdict": "fail",
      "untested_bits": 0
    },
    "VK_EXT_extended_dynamic_state2": {
      "extension_listed": true,
      "bits": {
        "extendedDynamicState2": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "eds2.rasterizer_discard_enable",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "discard off: drawn",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "discard on: nothing reaches the image",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state2",
              "bit": "extendedDynamicState2"
            },
            {
              "id": "eds2.depth_bias_enable",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "bias on: second draw passes LESS",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "bias off: second draw fails LESS",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state2",
              "bit": "extendedDynamicState2"
            },
            {
              "id": "eds2.primitive_restart_enable",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "restart on: first triangle drawn",
                  "x": 9,
                  "y": 9,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "restart on: strip is cut at 0xFFFF",
                  "x": 48,
                  "y": 22,
                  "want": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "restart off: 0xFFFF is an ordinary vertex",
                  "x": 48,
                  "y": 22,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_extended_dynamic_state2",
              "bit": "extendedDynamicState2"
            }
          ]
        },
        "extendedDynamicState2LogicOp": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "eds2.logic_op",
              "advertised": false,
              "extension_listed": true,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_extended_dynamic_state2",
              "bit": "extendedDynamicState2LogicOp"
            }
          ]
        },
        "extendedDynamicState2PatchControlPoints": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        }
      },
      "verdict": "pass",
      "untested_bits": 1
    },
    "VK_EXT_extended_dynamic_state3": {
      "extension_listed": false,
      "bits": {
        "extendedDynamicState3TessellationDomainOrigin": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3DepthClampEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "eds3.depth_clamp_enable",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_extended_dynamic_state3",
              "bit": "extendedDynamicState3DepthClampEnable"
            }
          ]
        },
        "extendedDynamicState3PolygonMode": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "eds3.polygon_mode",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_extended_dynamic_state3",
              "bit": "extendedDynamicState3PolygonMode"
            }
          ]
        },
        "extendedDynamicState3RasterizationSamples": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3SampleMask": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3AlphaToCoverageEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3AlphaToOneEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3LogicOpEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "eds3.logic_op_enable",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_extended_dynamic_state3",
              "bit": "extendedDynamicState3LogicOpEnable"
            }
          ]
        },
        "extendedDynamicState3ColorBlendEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "eds3.color_blend_enable",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_extended_dynamic_state3",
              "bit": "extendedDynamicState3ColorBlendEnable"
            }
          ]
        },
        "extendedDynamicState3ColorBlendEquation": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "eds3.color_blend_equation",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_extended_dynamic_state3",
              "bit": "extendedDynamicState3ColorBlendEquation"
            }
          ]
        },
        "extendedDynamicState3ColorWriteMask": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "eds3.color_write_mask",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_extended_dynamic_state3",
              "bit": "extendedDynamicState3ColorWriteMask"
            }
          ]
        },
        "extendedDynamicState3RasterizationStream": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3ConservativeRasterizationMode": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3ExtraPrimitiveOverestimationSize": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3DepthClipEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3SampleLocationsEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3ColorBlendAdvanced": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3ProvokingVertexMode": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3LineRasterizationMode": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3LineStippleEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3DepthClipNegativeOneToOne": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3ViewportWScalingEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3ViewportSwizzle": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3CoverageToColorEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3CoverageToColorLocation": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3CoverageModulationMode": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3CoverageModulationTableEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3CoverageModulationTable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3CoverageReductionMode": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3RepresentativeFragmentTestEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "extendedDynamicState3ShadingRateImageEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        }
      },
      "verdict": "unsupported",
      "untested_bits": 0
    },
    "VK_EXT_vertex_input_dynamic_state": {
      "extension_listed": false,
      "bits": {
        "vertexInputDynamicState": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "vids.attribute_offset",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_vertex_input_dynamic_state",
              "bit": "vertexInputDynamicState"
            }
          ]
        }
      },
      "verdict": "unsupported",
      "untested_bits": 0
    },
    "VK_EXT_custom_border_color": {
      "extension_listed": true,
      "bits": {
        "customBorderColors": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "border.custom_color",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "outside the texture: the custom border colour",
                  "x": 16,
                  "y": 32,
                  "want": [
                    64,
                    128,
                    191,
                    255
                  ],
                  "got": [
                    64,
                    128,
                    191,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "inside the texture: the texel",
                  "x": 48,
                  "y": 32,
                  "want": [
                    255,
                    0,
                    0,
                    255
                  ],
                  "got": [
                    255,
                    0,
                    0,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_custom_border_color",
              "bit": "customBorderColors"
            }
          ]
        },
        "customBorderColorWithoutFormat": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        }
      },
      "verdict": "pass",
      "untested_bits": 1
    },
    "VK_EXT_border_color_swizzle": {
      "extension_listed": false,
      "bits": {
        "borderColorSwizzle": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "border.swizzle",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_border_color_swizzle",
              "bit": "borderColorSwizzle"
            }
          ]
        },
        "borderColorSwizzleFromImage": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        }
      },
      "verdict": "unsupported",
      "untested_bits": 0
    },
    "VK_EXT_depth_clip_control": {
      "extension_listed": false,
      "bits": {
        "depthClipControl": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "depth.clip_control",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_depth_clip_control",
              "bit": "depthClipControl"
            }
          ]
        }
      },
      "verdict": "unsupported",
      "untested_bits": 0
    },
    "VK_EXT_depth_bias_control": {
      "extension_listed": false,
      "bits": {
        "depthBiasControl": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "leastRepresentableValueForceUnormRepresentation": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        },
        "floatRepresentation": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "depth.bias_float",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_depth_bias_control",
              "bit": "floatRepresentation"
            }
          ]
        },
        "depthBiasExact": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        }
      },
      "verdict": "unsupported",
      "untested_bits": 0
    },
    "VK_EXT_transform_feedback": {
      "extension_listed": true,
      "bits": {
        "transformFeedback": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "xfb.capture",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "captured vertex 0",
                  "want": [
                    1,
                    10,
                    100,
                    0.5
                  ],
                  "got": [
                    1,
                    10,
                    100,
                    0.5
                  ],
                  "ok": true
                },
                {
                  "what": "captured vertex 1",
                  "want": [
                    2,
                    20,
                    200,
                    0.5
                  ],
                  "got": [
                    2,
                    20,
                    200,
                    0.5
                  ],
                  "ok": true
                },
                {
                  "what": "captured vertex 2",
                  "want": [
                    3,
                    30,
                    300,
                    0.5
                  ],
                  "got": [
                    3,
                    30,
                    300,
                    0.5
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_transform_feedback",
              "bit": "transformFeedback"
            },
            {
              "id": "xfb.geometry_shader_capture",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "captured point 0",
                  "want": [
                    1,
                    10,
                    100,
                    0.5,
                    1.25,
                    1.5,
                    1.75,
                    2,
                    -1,
                    4,
                    64,
                    1
                  ],
                  "got": [
                    1,
                    10,
                    100,
                    0.5,
                    1.25,
                    1.5,
                    1.75,
                    2,
                    -1,
                    4,
                    64,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "captured point 1",
                  "want": [
                    2,
                    20,
                    200,
                    0.5,
                    2.25,
                    2.5,
                    2.75,
                    2,
                    -2,
                    8,
                    64,
                    1
                  ],
                  "got": [
                    2,
                    20,
                    200,
                    0.5,
                    2.25,
                    2.5,
                    2.75,
                    2,
                    -2,
                    8,
                    64,
                    1
                  ],
                  "ok": true
                },
                {
                  "what": "captured point 2",
                  "want": [
                    3,
                    30,
                    300,
                    0.5,
                    3.25,
                    3.5,
                    3.75,
                    2,
                    -3,
                    12,
                    64,
                    1
                  ],
                  "got": [
                    3,
                    30,
                    300,
                    0.5,
                    3.25,
                    3.5,
                    3.75,
                    2,
                    -3,
                    12,
                    64,
                    1
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_transform_feedback",
              "bit": "transformFeedback"
            }
          ]
        },
        "geometryStreams": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        }
      },
      "verdict": "pass",
      "untested_bits": 0
    },
    "VK_EXT_color_write_enable": {
      "extension_listed": false,
      "bits": {
        "colorWriteEnable": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "cwe.color_write_enable",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_color_write_enable",
              "bit": "colorWriteEnable"
            }
          ]
        }
      },
      "verdict": "unsupported",
      "untested_bits": 0
    },
    "VK_EXT_inline_uniform_block": {
      "extension_listed": true,
      "bits": {
        "inlineUniformBlock": {
          "advertised": true,
          "verdict": "pass",
          "checks": [
            {
              "id": "iub.inline_uniform_block",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "left half: the element the offset update wrote",
                  "x": 16,
                  "y": 32,
                  "want": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "got": [
                    0,
                    255,
                    0,
                    255
                  ],
                  "ok": true
                },
                {
                  "what": "right half: the second inline block",
                  "x": 48,
                  "y": 32,
                  "want": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "got": [
                    0,
                    0,
                    255,
                    255
                  ],
                  "ok": true
                }
              ],
              "verdict": "pass",
              "feature": "VK_EXT_inline_uniform_block",
              "bit": "inlineUniformBlock"
            }
          ]
        },
        "descriptorBindingInlineUniformBlockUpdateAfterBind": {
          "advertised": true,
          "verdict": "untested",
          "checks": []
        }
      },
      "verdict": "pass",
      "untested_bits": 1
    },
    "VK_KHR_timeline_semaphore": {
      "extension_listed": true,
      "bits": {
        "timelineSemaphore": {
          "advertised": true,
          "verdict": "fail",
          "checks": [
            {
              "id": "timeline.semaphore",
              "advertised": true,
              "extension_listed": true,
              "evidence": [
                {
                  "what": "counter after creation with initial value 5",
                  "want": [
                    5
                  ],
                  "got": [
                    5
                  ],
                  "ok": true
                },
                {
                  "what": "counter after a host signal to 9",
                  "want": [
                    9
                  ],
                  "got": [
                    9
                  ],
                  "ok": true
                },
                {
                  "what": "wait for 9 with no timeout: VK_SUCCESS (0)",
                  "want": [
                    0
                  ],
                  "got": [
                    0
                  ],
                  "ok": true
                },
                {
                  "what": "wait for 10 for one millisecond: VK_TIMEOUT (2)",
                  "want": [
                    2
                  ],
                  "got": [
                    -4
                  ],
                  "ok": false
                },
                {
                  "what": "wait for 12 after a queue signal, five seconds: VK_SUCCESS (0)",
                  "want": [
                    0
                  ],
                  "got": [
                    0
                  ],
                  "ok": true
                },
                {
                  "what": "counter after the queue signal",
                  "want": [
                    12
                  ],
                  "got": [
                    12
                  ],
                  "ok": true
                }
              ],
              "verdict": "fail",
              "feature": "VK_KHR_timeline_semaphore",
              "bit": "timelineSemaphore"
            }
          ]
        }
      },
      "verdict": "fail",
      "untested_bits": 0
    },
    "VK_KHR_shader_atomic_int64": {
      "extension_listed": false,
      "bits": {
        "shaderBufferInt64Atomics": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "atomic.int64_buffer",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_KHR_shader_atomic_int64",
              "bit": "shaderBufferInt64Atomics"
            }
          ]
        },
        "shaderSharedInt64Atomics": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        }
      },
      "verdict": "unsupported",
      "untested_bits": 0
    },
    "VK_EXT_robustness2": {
      "extension_listed": false,
      "bits": {
        "robustBufferAccess2": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "robust.buffer_access2",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_robustness2",
              "bit": "robustBufferAccess2"
            },
            {
              "id": "robust.storage_buffer_access2",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_robustness2",
              "bit": "robustBufferAccess2"
            }
          ]
        },
        "robustImageAccess2": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": [
            {
              "id": "robust.image_access2",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_robustness2",
              "bit": "robustImageAccess2"
            },
            {
              "id": "robust.image_access2_kinds",
              "advertised": false,
              "extension_listed": false,
              "evidence": [],
              "verdict": "unsupported",
              "feature": "VK_EXT_robustness2",
              "bit": "robustImageAccess2"
            }
          ]
        },
        "nullDescriptor": {
          "advertised": false,
          "verdict": "unsupported",
          "checks": []
        }
      },
      "verdict": "unsupported",
      "untested_bits": 0
    }
  },
  "valid": true,
  "harness": [
    {
      "id": "harness.baseline_draw",
      "evidence": [
        {
          "what": "drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    }
  ],
  "core": [
    {
      "id": "core.readback_same_command_buffer",
      "evidence": [
        {
          "what": "drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "push.max_combined_image_samplers",
      "evidence": [],
      "verdict": "unsupported"
    },
    {
      "id": "core.resubmit_command_buffer",
      "evidence": [
        {
          "what": "first submit: drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "second submit of the same command buffer: drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "second submit of the same command buffer: cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "core.compute_udiv",
      "evidence": [
        {
          "what": "703787787 \/ 47721859",
          "want": [
            14
          ],
          "got": [
            14
          ],
          "ok": true
        },
        {
          "what": "703787787 % 47721859",
          "want": [
            35681761
          ],
          "got": [
            35681761
          ],
          "ok": true
        },
        {
          "what": "4294967295 \/ 2147483649",
          "want": [
            1
          ],
          "got": [
            1
          ],
          "ok": true
        },
        {
          "what": "4294967295 % 2147483649",
          "want": [
            2147483646
          ],
          "got": [
            2147483646
          ],
          "ok": true
        },
        {
          "what": "4294967295 \/ 3",
          "want": [
            1431655765
          ],
          "got": [
            1431655765
          ],
          "ok": true
        },
        {
          "what": "4294967295 % 3",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        },
        {
          "what": "4000000000 \/ 3",
          "want": [
            1333333333
          ],
          "got": [
            1333333333
          ],
          "ok": true
        },
        {
          "what": "4000000000 % 3",
          "want": [
            1
          ],
          "got": [
            1
          ],
          "ok": true
        },
        {
          "what": "2147483648 \/ 65537",
          "want": [
            32767
          ],
          "got": [
            32767
          ],
          "ok": true
        },
        {
          "what": "2147483648 % 65537",
          "want": [
            32769
          ],
          "got": [
            32769
          ],
          "ok": true
        },
        {
          "what": "2147483647 \/ 46341",
          "want": [
            46340
          ],
          "got": [
            46340
          ],
          "ok": true
        },
        {
          "what": "2147483647 % 46341",
          "want": [
            41707
          ],
          "got": [
            41707
          ],
          "ok": true
        },
        {
          "what": "1000000007 \/ 31607",
          "want": [
            31638
          ],
          "got": [
            31638
          ],
          "ok": true
        },
        {
          "what": "1000000007 % 31607",
          "want": [
            17741
          ],
          "got": [
            17741
          ],
          "ok": true
        },
        {
          "what": "16777217 \/ 4097",
          "want": [
            4095
          ],
          "got": [
            4095
          ],
          "ok": true
        },
        {
          "what": "16777217 % 4097",
          "want": [
            2
          ],
          "got": [
            2
          ],
          "ok": true
        },
        {
          "what": "16777216 \/ 4096",
          "want": [
            4096
          ],
          "got": [
            4096
          ],
          "ok": true
        },
        {
          "what": "16777216 % 4096",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        },
        {
          "what": "4294967295 \/ 4294967295",
          "want": [
            1
          ],
          "got": [
            1
          ],
          "ok": true
        },
        {
          "what": "4294967295 % 4294967295",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        },
        {
          "what": "3000000000 \/ 1500000001",
          "want": [
            1
          ],
          "got": [
            1
          ],
          "ok": true
        },
        {
          "what": "3000000000 % 1500000001",
          "want": [
            1499999999
          ],
          "got": [
            1499999999
          ],
          "ok": true
        },
        {
          "what": "123456789 \/ 10007",
          "want": [
            12337
          ],
          "got": [
            12337
          ],
          "ok": true
        },
        {
          "what": "123456789 % 10007",
          "want": [
            430
          ],
          "got": [
            430
          ],
          "ok": true
        },
        {
          "what": "4294967294 \/ 2",
          "want": [
            2147483647
          ],
          "got": [
            2147483647
          ],
          "ok": true
        },
        {
          "what": "4294967294 % 2",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        },
        {
          "what": "65536 \/ 65537",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        },
        {
          "what": "65536 % 65537",
          "want": [
            65536
          ],
          "got": [
            65536
          ],
          "ok": true
        },
        {
          "what": "99999999 \/ 4294967295",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        },
        {
          "what": "99999999 % 4294967295",
          "want": [
            99999999
          ],
          "got": [
            99999999
          ],
          "ok": true
        },
        {
          "what": "1 \/ 1",
          "want": [
            1
          ],
          "got": [
            1
          ],
          "ok": true
        },
        {
          "what": "1 % 1",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "core.texel_fetch_beside_ubo",
      "evidence": [
        {
          "what": "left half: texel (1, 0)",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "right half: texel (0, 1)",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            255,
            255
          ],
          "got": [
            0,
            0,
            255,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "push.max_uniform_buffers",
      "evidence": [],
      "verdict": "unsupported"
    },
    {
      "id": "limit.uniform_buffer_range",
      "evidence": [
        {
          "what": "bytes in one uniform buffer binding (the driver's stated limit)",
          "got": 65536,
          "ok": true
        },
        {
          "what": "bytes changed in memory next to the driver's allocations",
          "got": 0,
          "ok": true
        },
        {
          "what": "drawn half: element 127 of the block",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "limit.dynamic_uniform_buffers",
      "evidence": [
        {
          "what": "dynamic uniform buffers in one set, bound with as many offsets (the driver's stated limit)",
          "got": 32,
          "ok": true
        },
        {
          "what": "bytes changed in memory next to the driver's allocations",
          "got": 0,
          "ok": true
        },
        {
          "what": "drawn half: the block the dynamic offset selects",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "stress.multi_draw_indirect_large",
      "evidence": [],
      "verdict": "unsupported"
    },
    {
      "id": "stress.compute_after_render",
      "evidence": [
        {
          "what": "wrong answers in 3200 divisions over 200 rounds",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        },
        {
          "what": "the last render pass: drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "stress.submit_memory",
      "evidence": [
        {
          "what": "KiB of memory gained over 4000 submits (limit 16384)",
          "got": 0,
          "ok": true
        },
        {
          "what": "the last submit: drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "core.copy_wide_row_length",
      "evidence": [
        {
          "what": "first copied row (the last green row)",
          "x": 16,
          "y": 0,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "second copied row, 4,210,688 bytes later (the first black row)",
          "x": 16,
          "y": 1,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "core.mediump_mul_extended",
      "evidence": [
        {
          "what": "low half of 255 * 3",
          "want": [
            765
          ],
          "got": [
            765
          ],
          "ok": true
        },
        {
          "what": "low half of 242 * 19",
          "want": [
            4598
          ],
          "got": [
            4598
          ],
          "ok": true
        },
        {
          "what": "low half of 229 * 35",
          "want": [
            8015
          ],
          "got": [
            8015
          ],
          "ok": true
        },
        {
          "what": "low half of 216 * 51",
          "want": [
            11016
          ],
          "got": [
            11016
          ],
          "ok": true
        },
        {
          "what": "low half of 203 * 67",
          "want": [
            13601
          ],
          "got": [
            13601
          ],
          "ok": true
        },
        {
          "what": "low half of 190 * 83",
          "want": [
            15770
          ],
          "got": [
            15770
          ],
          "ok": true
        },
        {
          "what": "low half of 177 * 99",
          "want": [
            17523
          ],
          "got": [
            17523
          ],
          "ok": true
        },
        {
          "what": "low half of 164 * 115",
          "want": [
            18860
          ],
          "got": [
            18860
          ],
          "ok": true
        },
        {
          "what": "low half of 151 * 131",
          "want": [
            19781
          ],
          "got": [
            19781
          ],
          "ok": true
        },
        {
          "what": "low half of 138 * 147",
          "want": [
            20286
          ],
          "got": [
            20286
          ],
          "ok": true
        },
        {
          "what": "low half of 125 * 163",
          "want": [
            20375
          ],
          "got": [
            20375
          ],
          "ok": true
        },
        {
          "what": "low half of 112 * 179",
          "want": [
            20048
          ],
          "got": [
            20048
          ],
          "ok": true
        },
        {
          "what": "low half of 99 * 195",
          "want": [
            19305
          ],
          "got": [
            19305
          ],
          "ok": true
        },
        {
          "what": "low half of 86 * 211",
          "want": [
            18146
          ],
          "got": [
            18146
          ],
          "ok": true
        },
        {
          "what": "low half of 73 * 227",
          "want": [
            16571
          ],
          "got": [
            16571
          ],
          "ok": true
        },
        {
          "what": "low half of 60 * 243",
          "want": [
            14580
          ],
          "got": [
            14580
          ],
          "ok": true
        },
        {
          "what": "high half of the first product",
          "want": [
            0
          ],
          "got": [
            0
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "core.msaa_resolve",
      "evidence": [
        {
          "what": "resolved image: drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "resolved image: cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "limit.color_attachments",
      "evidence": [
        {
          "what": "colour attachments in one render pass (the driver's stated limit)",
          "got": 8,
          "ok": true
        },
        {
          "what": "bytes changed in memory next to the driver's allocations",
          "got": 0,
          "ok": true
        },
        {
          "what": "first attachment: drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "first attachment: cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "limit.vertex_input",
      "evidence": [
        {
          "what": "vertex buffer bindings in one pipeline, bound in one call (the driver's stated limit)",
          "got": 32,
          "ok": true
        },
        {
          "what": "vertex attributes in one pipeline (the driver's stated limit)",
          "got": 32,
          "ok": true
        },
        {
          "what": "bytes changed in memory next to the driver's allocations",
          "got": 0,
          "ok": true
        },
        {
          "what": "drawn half",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "limit.push_constants_size",
      "evidence": [
        {
          "what": "push constant bytes pushed in one call (the driver's stated limit)",
          "got": 256,
          "ok": true
        },
        {
          "what": "bytes changed in memory next to the driver's allocations",
          "got": 0,
          "ok": true
        },
        {
          "what": "drawn half: the colour in the first 16 bytes",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "limit.per_stage_samplers",
      "evidence": [
        {
          "what": "combined image samplers in one descriptor set, bound and drawn with (capped by this check, below the stated limit)",
          "got": 4096,
          "ok": true
        },
        {
          "what": "bytes changed in memory next to the driver's allocations",
          "got": 0,
          "ok": true
        },
        {
          "what": "drawn half: the texture in element 0",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "limit.bound_descriptor_sets",
      "evidence": [
        {
          "what": "descriptor sets bound in one call (the driver's stated limit)",
          "got": 7,
          "ok": true
        },
        {
          "what": "bytes changed in memory next to the driver's allocations",
          "got": 0,
          "ok": true
        },
        {
          "what": "drawn half: the texture in set 0",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "stress.pipeline_cache_threads",
      "evidence": [
        {
          "what": "every vkCreateGraphicsPipelines call returned VK_SUCCESS",
          "got": 0,
          "ok": true
        },
        {
          "what": "pipelines asked for in 8 seconds, at least one from each thread",
          "got": 1024,
          "ok": true
        },
        {
          "what": "pipelines built, the same number",
          "got": 1024,
          "ok": true
        },
        {
          "what": "every save made while compiling returned VK_SUCCESS or VK_INCOMPLETE",
          "got": 0,
          "ok": true
        },
        {
          "what": "saves made while compiling",
          "got": 361,
          "ok": true
        },
        {
          "what": "bytes a save reported beyond the buffer size it was given",
          "got": 0,
          "ok": true
        },
        {
          "what": "bytes a save wrote past the end of the buffer it was given",
          "got": 0,
          "ok": true
        },
        {
          "what": "final save size in bytes holds a header",
          "got": 382240,
          "ok": true
        },
        {
          "what": "header names this device",
          "got": 32,
          "ok": true
        },
        {
          "what": "drawn half, after every pipeline drew it",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    },
    {
      "id": "stress.pipeline_threads_no_cache",
      "evidence": [
        {
          "what": "every vkCreateGraphicsPipelines call returned VK_SUCCESS",
          "got": 0,
          "ok": true
        },
        {
          "what": "pipelines asked for in 8 seconds, at least one from each thread",
          "got": 1024,
          "ok": true
        },
        {
          "what": "pipelines built, the same number",
          "got": 1024,
          "ok": true
        },
        {
          "what": "drawn half, after every pipeline drew it",
          "x": 16,
          "y": 32,
          "want": [
            0,
            255,
            0,
            255
          ],
          "got": [
            0,
            255,
            0,
            255
          ],
          "ok": true
        },
        {
          "what": "cleared half",
          "x": 48,
          "y": 32,
          "want": [
            0,
            0,
            0,
            255
          ],
          "got": [
            0,
            0,
            0,
            255
          ],
          "ok": true
        }
      ],
      "verdict": "pass"
    }
  ],
  "vulkan": {
    "device_type": 1,
    "limits": {
      "maxImageDimension1D": 16384,
      "maxImageDimension2D": 16384,
      "maxImageDimension3D": 16384,
      "maxImageDimensionCube": 16384,
      "maxImageArrayLayers": 4096,
      "maxTexelBufferElements": 268435456,
      "maxUniformBufferRange": 65536,
      "maxStorageBufferRange": 268435456,
      "maxPushConstantsSize": 256,
      "maxMemoryAllocationCount": 16384,
      "maxSamplerAllocationCount": 4294967295,
      "bufferImageGranularity": 1,
      "sparseAddressSpaceSize": 0,
      "maxBoundDescriptorSets": 7,
      "maxPerStageDescriptorSamplers": 500000,
      "maxPerStageDescriptorUniformBuffers": 36,
      "maxPerStageDescriptorStorageBuffers": 500000,
      "maxPerStageDescriptorSampledImages": 500000,
      "maxPerStageDescriptorStorageImages": 500000,
      "maxPerStageDescriptorInputAttachments": 9,
      "maxPerStageResources": 500000,
      "maxDescriptorSetSamplers": 500000,
      "maxDescriptorSetUniformBuffers": 216,
      "maxDescriptorSetUniformBuffersDynamic": 32,
      "maxDescriptorSetStorageBuffers": 500000,
      "maxDescriptorSetStorageBuffersDynamic": 32,
      "maxDescriptorSetSampledImages": 500000,
      "maxDescriptorSetStorageImages": 500000,
      "maxDescriptorSetInputAttachments": 9,
      "maxVertexInputAttributes": 32,
      "maxVertexInputBindings": 32,
      "maxVertexInputAttributeOffset": 2047,
      "maxVertexInputBindingStride": 2048,
      "maxVertexOutputComponents": 128,
      "maxTessellationGenerationLevel": 64,
      "maxTessellationPatchSize": 32,
      "maxTessellationControlPerVertexInputComponents": 128,
      "maxTessellationControlPerVertexOutputComponents": 128,
      "maxTessellationControlPerPatchOutputComponents": 120,
      "maxTessellationControlTotalOutputComponents": 4096,
      "maxTessellationEvaluationInputComponents": 128,
      "maxTessellationEvaluationOutputComponents": 128,
      "maxGeometryShaderInvocations": 32,
      "maxGeometryInputComponents": 128,
      "maxGeometryOutputComponents": 128,
      "maxGeometryOutputVertices": 256,
      "maxGeometryTotalOutputComponents": 2048,
      "maxFragmentInputComponents": 128,
      "maxFragmentOutputAttachments": 8,
      "maxFragmentDualSrcAttachments": 0,
      "maxFragmentCombinedOutputResources": 1000008,
      "maxComputeSharedMemorySize": 32768,
      "maxComputeWorkGroupCount": [
        4294967295,
        4294967295,
        4294967295
      ],
      "maxComputeWorkGroupInvocations": 512,
      "maxComputeWorkGroupSize": [
        512,
        512,
        512
      ],
      "subPixelPrecisionBits": 8,
      "subTexelPrecisionBits": 8,
      "mipmapPrecisionBits": 8,
      "maxDrawIndexedIndexValue": 4294967295,
      "maxDrawIndirectCount": 1,
      "maxSamplerLodBias": 126,
      "maxSamplerAnisotropy": 16,
      "maxViewports": 1,
      "maxViewportDimensions": [
        16384,
        16384
      ],
      "viewportBoundsRange": [
        -32768,
        32767
      ],
      "viewportSubPixelBits": 0,
      "minMemoryMapAlignment": 64,
      "minTexelBufferOffsetAlignment": 64,
      "minUniformBufferOffsetAlignment": 16,
      "minStorageBufferOffsetAlignment": 64,
      "minTexelOffset": -8,
      "maxTexelOffset": 7,
      "minTexelGatherOffset": -8,
      "maxTexelGatherOffset": 7,
      "minInterpolationOffset": -0.5,
      "maxInterpolationOffset": 0.5,
      "subPixelInterpolationOffsetBits": 4,
      "maxFramebufferWidth": 16384,
      "maxFramebufferHeight": 16384,
      "maxFramebufferLayers": 256,
      "framebufferColorSampleCounts": 13,
      "framebufferDepthSampleCounts": 13,
      "framebufferStencilSampleCounts": 13,
      "framebufferNoAttachmentsSampleCounts": 29,
      "maxColorAttachments": 8,
      "sampledImageColorSampleCounts": 13,
      "sampledImageIntegerSampleCounts": 13,
      "sampledImageDepthSampleCounts": 13,
      "sampledImageStencilSampleCounts": 13,
      "storageImageSampleCounts": 1,
      "maxSampleMaskWords": 1,
      "timestampComputeAndGraphics": 1,
      "timestampPeriod": 76.9230804,
      "maxClipDistances": 0,
      "maxCullDistances": 0,
      "maxCombinedClipAndCullDistances": 0,
      "discreteQueuePriorities": 2,
      "pointSizeRange": [
        1,
        1024
      ],
      "lineWidthRange": [
        1,
        1
      ],
      "pointSizeGranularity": 0.0625,
      "lineWidthGranularity": 0,
      "strictLines": 1,
      "standardSampleLocations": 1,
      "optimalBufferCopyOffsetAlignment": 64,
      "optimalBufferCopyRowPitchAlignment": 64,
      "nonCoherentAtomSize": 64
    },
    "sparse": {
      "residencyStandard2DBlockShape": 0,
      "residencyStandard2DMultisampleBlockShape": 0,
      "residencyStandard3DBlockShape": 0,
      "residencyAlignedMipSize": 0,
      "residencyNonResidentStrict": 0
    },
    "features_1_1": {
      "storageBuffer16BitAccess": 1,
      "uniformAndStorageBuffer16BitAccess": 1,
      "storagePushConstant16": 1,
      "storageInputOutput16": 1,
      "multiview": 1,
      "multiviewGeometryShader": 0,
      "multiviewTessellationShader": 0,
      "variablePointersStorageBuffer": 1,
      "variablePointers": 1,
      "protectedMemory": 0,
      "samplerYcbcrConversion": 1,
      "shaderDrawParameters": 1
    },
    "features_1_2": {
      "samplerMirrorClampToEdge": 1,
      "drawIndirectCount": 0,
      "storageBuffer8BitAccess": 1,
      "uniformAndStorageBuffer8BitAccess": 1,
      "storagePushConstant8": 1,
      "shaderBufferInt64Atomics": 0,
      "shaderSharedInt64Atomics": 0,
      "shaderFloat16": 1,
      "shaderInt8": 1,
      "descriptorIndexing": 1,
      "shaderInputAttachmentArrayDynamicIndexing": 1,
      "shaderUniformTexelBufferArrayDynamicIndexing": 1,
      "shaderStorageTexelBufferArrayDynamicIndexing": 1,
      "shaderUniformBufferArrayNonUniformIndexing": 1,
      "shaderSampledImageArrayNonUniformIndexing": 1,
      "shaderStorageBufferArrayNonUniformIndexing": 1,
      "shaderStorageImageArrayNonUniformIndexing": 1,
      "shaderInputAttachmentArrayNonUniformIndexing": 1,
      "shaderUniformTexelBufferArrayNonUniformIndexing": 1,
      "shaderStorageTexelBufferArrayNonUniformIndexing": 1,
      "descriptorBindingUniformBufferUpdateAfterBind": 1,
      "descriptorBindingSampledImageUpdateAfterBind": 1,
      "descriptorBindingStorageImageUpdateAfterBind": 1,
      "descriptorBindingStorageBufferUpdateAfterBind": 1,
      "descriptorBindingUniformTexelBufferUpdateAfterBind": 1,
      "descriptorBindingStorageTexelBufferUpdateAfterBind": 1,
      "descriptorBindingUpdateUnusedWhilePending": 1,
      "descriptorBindingPartiallyBound": 1,
      "descriptorBindingVariableDescriptorCount": 1,
      "runtimeDescriptorArray": 1,
      "samplerFilterMinmax": 0,
      "scalarBlockLayout": 1,
      "imagelessFramebuffer": 1,
      "uniformBufferStandardLayout": 1,
      "shaderSubgroupExtendedTypes": 1,
      "separateDepthStencilLayouts": 1,
      "hostQueryReset": 1,
      "timelineSemaphore": 1,
      "bufferDeviceAddress": 1,
      "bufferDeviceAddressCaptureReplay": 0,
      "bufferDeviceAddressMultiDevice": 0,
      "vulkanMemoryModel": 1,
      "vulkanMemoryModelDeviceScope": 1,
      "vulkanMemoryModelAvailabilityVisibilityChains": 1,
      "shaderOutputViewportIndex": 1,
      "shaderOutputLayer": 0,
      "subgroupBroadcastDynamicId": 1
    },
    "features_1_3": {
      "robustImageAccess": 1,
      "inlineUniformBlock": 1,
      "descriptorBindingInlineUniformBlockUpdateAfterBind": 1,
      "pipelineCreationCacheControl": 1,
      "privateData": 1,
      "shaderDemoteToHelperInvocation": 1,
      "shaderTerminateInvocation": 1,
      "subgroupSizeControl": 1,
      "computeFullSubgroups": 1,
      "synchronization2": 1,
      "textureCompressionASTC_HDR": 1,
      "shaderZeroInitializeWorkgroupMemory": 1,
      "dynamicRendering": 1,
      "shaderIntegerDotProduct": 1,
      "maintenance4": 1
    },
    "memory_heaps": [
      {
        "size": 5874233344,
        "flags": 1
      }
    ],
    "memory_types": [
      {
        "heap": 0,
        "flags": 7
      },
      {
        "heap": 0,
        "flags": 11
      },
      {
        "heap": 0,
        "flags": 17
      }
    ],
    "queue_families": [
      {
        "flags": 7,
        "count": 2,
        "timestamp_bits": 64,
        "min_transfer": [
          1,
          1,
          1
        ]
      }
    ],
    "formats": {
      "1": [
        447489,
        447489,
        0
      ],
      "2": [
        449923,
        449923,
        0
      ],
      "3": [
        449923,
        449923,
        0
      ],
      "4": [
        449923,
        449923,
        0
      ],
      "5": [
        449923,
        449923,
        0
      ],
      "6": [
        449923,
        449923,
        0
      ],
      "7": [
        449923,
        449923,
        0
      ],
      "8": [
        449923,
        449923,
        0
      ],
      "9": [
        449923,
        449923,
        88
      ],
      "10": [
        449923,
        449923,
        88
      ],
      "11": [
        0,
        0,
        64
      ],
      "12": [
        0,
        0,
        64
      ],
      "13": [
        183427,
        183427,
        88
      ],
      "14": [
        183427,
        183427,
        88
      ],
      "15": [
        449665,
        449665,
        0
      ],
      "16": [
        17227139,
        17227139,
        88
      ],
      "17": [
        449923,
        449923,
        88
      ],
      "18": [
        0,
        0,
        64
      ],
      "19": [
        0,
        0,
        64
      ],
      "20": [
        183427,
        183427,
        88
      ],
      "21": [
        183427,
        183427,
        88
      ],
      "22": [
        449665,
        449665,
        0
      ],
      "23": [
        449923,
        449923,
        88
      ],
      "24": [
        447489,
        447489,
        64
      ],
      "25": [
        0,
        0,
        64
      ],
      "26": [
        0,
        0,
        64
      ],
      "27": [
        181249,
        181249,
        64
      ],
      "28": [
        181249,
        181249,
        64
      ],
      "29": [
        449665,
        449667,
        0
      ],
      "30": [
        449921,
        449921,
        0
      ],
      "31": [
        447489,
        447489,
        0
      ],
      "32": [
        0,
        0,
        64
      ],
      "33": [
        0,
        0,
        64
      ],
      "34": [
        181249,
        181249,
        0
      ],
      "35": [
        181249,
        181249,
        0
      ],
      "36": [
        449667,
        449667,
        0
      ],
      "37": [
        449923,
        449923,
        88
      ],
      "38": [
        449923,
        449923,
        88
      ],
      "39": [
        0,
        0,
        64
      ],
      "40": [
        0,
        0,
        64
      ],
      "41": [
        183427,
        183427,
        88
      ],
      "42": [
        183427,
        183427,
        88
      ],
      "43": [
        449923,
        449923,
        0
      ],
      "44": [
        449923,
        449923,
        88
      ],
      "45": [
        447491,
        447491,
        0
      ],
      "46": [
        0,
        0,
        64
      ],
      "47": [
        0,
        0,
        64
      ],
      "48": [
        181249,
        181249,
        0
      ],
      "49": [
        181249,
        181249,
        0
      ],
      "50": [
        449923,
        449923,
        0
      ],
      "51": [
        449923,
        449923,
        88
      ],
      "52": [
        449923,
        449923,
        88
      ],
      "53": [
        0,
        0,
        64
      ],
      "54": [
        0,
        0,
        64
      ],
      "55": [
        183427,
        183427,
        88
      ],
      "56": [
        183427,
        183427,
        88
      ],
      "57": [
        449923,
        449923,
        0
      ],
      "58": [
        187779,
        187779,
        88
      ],
      "60": [
        0,
        0,
        64
      ],
      "61": [
        0,
        0,
        64
      ],
      "62": [
        181251,
        181251,
        64
      ],
      "63": [
        181249,
        181249,
        64
      ],
      "64": [
        449923,
        449923,
        88
      ],
      "65": [
        0,
        0,
        64
      ],
      "66": [
        0,
        0,
        64
      ],
      "67": [
        0,
        0,
        64
      ],
      "68": [
        183427,
        183427,
        88
      ],
      "69": [
        181249,
        181249,
        64
      ],
      "70": [
        56707,
        56707,
        88
      ],
      "71": [
        56707,
        56707,
        88
      ],
      "72": [
        0,
        0,
        64
      ],
      "73": [
        0,
        0,
        64
      ],
      "74": [
        52355,
        52355,
        88
      ],
      "75": [
        52355,
        52355,
        88
      ],
      "76": [
        449923,
        449923,
        88
      ],
      "77": [
        52611,
        52611,
        88
      ],
      "78": [
        52611,
        52611,
        88
      ],
      "79": [
        0,
        0,
        64
      ],
      "80": [
        0,
        0,
        64
      ],
      "81": [
        52355,
        52355,
        88
      ],
      "82": [
        52355,
        52355,
        88
      ],
      "83": [
        449923,
        449923,
        88
      ],
      "84": [
        50177,
        50177,
        64
      ],
      "85": [
        50177,
        50177,
        64
      ],
      "86": [
        0,
        0,
        64
      ],
      "87": [
        0,
        0,
        64
      ],
      "88": [
        50177,
        50177,
        64
      ],
      "89": [
        50177,
        50177,
        64
      ],
      "90": [
        449921,
        449921,
        64
      ],
      "91": [
        183683,
        183683,
        88
      ],
      "92": [
        52611,
        52611,
        88
      ],
      "93": [
        0,
        0,
        64
      ],
      "94": [
        0,
        0,
        64
      ],
      "95": [
        52355,
        52355,
        88
      ],
      "96": [
        52355,
        52355,
        88
      ],
      "97": [
        449923,
        449923,
        88
      ],
      "98": [
        52359,
        52359,
        120
      ],
      "99": [
        52359,
        52359,
        120
      ],
      "100": [
        56451,
        56451,
        88
      ],
      "101": [
        52355,
        52355,
        88
      ],
      "102": [
        52355,
        52355,
        88
      ],
      "103": [
        56451,
        56451,
        88
      ],
      "104": [
        50177,
        50177,
        88
      ],
      "105": [
        50177,
        50177,
        88
      ],
      "106": [
        54273,
        54273,
        88
      ],
      "107": [
        52355,
        52355,
        88
      ],
      "108": [
        52355,
        52355,
        88
      ],
      "109": [
        56451,
        56451,
        88
      ],
      "122": [
        56707,
        56707,
        24
      ],
      "123": [
        54659,
        54659,
        24
      ],
      "124": [
        56833,
        56833,
        0
      ],
      "125": [
        56833,
        56833,
        0
      ],
      "126": [
        56833,
        56833,
        0
      ],
      "127": [
        52737,
        52737,
        0
      ],
      "129": [
        56833,
        56833,
        0
      ],
      "130": [
        0,
        56833,
        0
      ],
      "147": [
        54273,
        54273,
        0
      ],
      "148": [
        54273,
        54273,
        0
      ],
      "149": [
        54273,
        54273,
        0
      ],
      "150": [
        54273,
        54273,
        0
      ],
      "151": [
        54273,
        54273,
        0
      ],
      "152": [
        54273,
        54273,
        0
      ],
      "153": [
        54273,
        54273,
        0
      ],
      "154": [
        54273,
        54273,
        0
      ],
      "155": [
        54273,
        54273,
        0
      ],
      "156": [
        54273,
        54273,
        0
      ],
      "157": [
        54273,
        54273,
        0
      ],
      "158": [
        54273,
        54273,
        0
      ],
      "159": [
        54273,
        54273,
        0
      ],
      "160": [
        54273,
        54273,
        0
      ],
      "161": [
        54273,
        54273,
        0
      ],
      "162": [
        54273,
        54273,
        0
      ],
      "163": [
        54273,
        54273,
        0
      ],
      "164": [
        54273,
        54273,
        0
      ],
      "165": [
        54273,
        54273,
        0
      ],
      "166": [
        54273,
        54273,
        0
      ],
      "167": [
        54273,
        54273,
        0
      ],
      "168": [
        54273,
        54273,
        0
      ],
      "169": [
        54273,
        54273,
        0
      ],
      "170": [
        54273,
        54273,
        0
      ],
      "171": [
        54273,
        54273,
        0
      ],
      "172": [
        54273,
        54273,
        0
      ],
      "173": [
        54273,
        54273,
        0
      ],
      "174": [
        54273,
        54273,
        0
      ],
      "175": [
        54273,
        54273,
        0
      ],
      "176": [
        54273,
        54273,
        0
      ],
      "177": [
        54273,
        54273,
        0
      ],
      "178": [
        54273,
        54273,
        0
      ],
      "179": [
        54273,
        54273,
        0
      ],
      "180": [
        54273,
        54273,
        0
      ],
      "181": [
        54273,
        54273,
        0
      ],
      "182": [
        54273,
        54273,
        0
      ],
      "183": [
        54273,
        54273,
        0
      ],
      "184": [
        54273,
        54273,
        0
      ],
      "1000156000": [
        8835073,
        8835073,
        0
      ],
      "1000156001": [
        8835073,
        8835073,
        0
      ],
      "1000156002": [
        13029377,
        13029377,
        0
      ],
      "1000156003": [
        13029377,
        13029377,
        0
      ],
      "1000156004": [
        13029377,
        13029377,
        0
      ],
      "1000156005": [
        13029377,
        13029377,
        0
      ],
      "1000340000": [
        449923,
        449923,
        0
      ],
      "1000340001": [
        449923,
        449923,
        0
      ],
      "1000066000": [
        54273,
        54273,
        0
      ],
      "1000066001": [
        54273,
        54273,
        0
      ],
      "1000066002": [
        54273,
        54273,
        0
      ],
      "1000066003": [
        54273,
        54273,
        0
      ],
      "1000066004": [
        54273,
        54273,
        0
      ],
      "1000066005": [
        54273,
        54273,
        0
      ],
      "1000066006": [
        54273,
        54273,
        0
      ],
      "1000066007": [
        54273,
        54273,
        0
      ],
      "1000066008": [
        54273,
        54273,
        0
      ],
      "1000066009": [
        54273,
        54273,
        0
      ],
      "1000066010": [
        54273,
        54273,
        0
      ],
      "1000066011": [
        54273,
        54273,
        0
      ],
      "1000066012": [
        54273,
        54273,
        0
      ],
      "1000066013": [
        54273,
        54273,
        0
      ]
    }
  }
}