{
    "$schema": "https://schema.khronos.org/vulkan/profiles-0.8.2-273.json#",
    "capabilities": {
        "MUST": {
            "extensions": {
                "VK_KHR_maintenance5": 1,
                "VK_KHR_shader_float16_int8": 1,
                "VK_KHR_16bit_storage": 1,
                "VK_KHR_vertex_attribute_divisor": 1,
                "VK_EXT_custom_border_color": 1,
                "VK_EXT_device_memory_report": 1,
                "VK_EXT_external_memory_acquire_unmodified": 1,
                "VK_EXT_index_type_uint8": 1,
                "VK_EXT_load_store_op_none": 1,
                "VK_EXT_primitive_topology_list_restart": 1,
                "VK_EXT_provoking_vertex": 1,
                "VK_EXT_scalar_block_layout": 1,
                "VK_EXT_surface_maintenance1": 1,
                "VK_EXT_swapchain_maintenance1": 1,
                "VK_EXT_4444_formats": 1,
                "VK_ANDROID_external_format_resolve": 1,
                "VK_GOOGLE_surfaceless_query": 1
            },
            "features": {
                "VkPhysicalDeviceFeatures": {
                    "drawIndirectFirstInstance": true,
                    "shaderImageGatherExtended": true,
                    "shaderStorageImageExtendedFormats": true,
                    "shaderStorageImageReadWithoutFormat": true,
                    "shaderStorageImageWriteWithoutFormat": true,
                    "samplerAnisotropy": true
                },
                "VkPhysicalDeviceVulkan12Features": {
                    "shaderFloat16": true,
                    "shaderInt8": true
                },
                "VkPhysicalDeviceCustomBorderColorFeaturesEXT": {
                    "customBorderColors": true
                },
                "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT": {
                    "primitiveTopologyListRestart": true
                },
                "VkPhysicalDeviceProvokingVertexFeaturesEXT": {
                    "provokingVertexLast": true
                },
                "VkPhysicalDeviceIndexTypeUint8FeaturesEXT": {
                    "indexTypeUint8": true
                },
                "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR": {
                    "vertexAttributeInstanceRateDivisor": true
                },
                "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
                    "samplerYcbcrConversion": true
                },
                "VkPhysicalDeviceShaderFloat16Int8Features": {
                    "shaderFloat16": true,
                    "shaderInt8": true
                },
                "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures": {
                    "shaderSubgroupExtendedTypes": true
                },
                "VkPhysicalDevice8BitStorageFeatures": {
                    "storageBuffer8BitAccess": true
                },
                "VkPhysicalDevice16BitStorageFeatures": {
                    "storageBuffer16BitAccess": true
                }
            },
            "properties": {
                "VkPhysicalDeviceProperties": {
                    "limits": {
                        "maxPerStageDescriptorUniformBuffers": 13,
                        "maxPerStageDescriptorStorageBuffers": 12,
                        "maxColorAttachments": 8,
                        "maxPerStageDescriptorSampledImages": 128,
                        "maxPerStageDescriptorSamplers": 128
                    }
                },
                "VkPhysicalDeviceVulkan11Properties": {
                  "subgroupSupportedOperations": ["VK_SUBGROUP_FEATURE_BASIC_BIT", "VK_SUBGROUP_FEATURE_VOTE_BIT", "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT", "VK_SUBGROUP_FEATURE_BALLOT_BIT", "VK_SUBGROUP_FEATURE_SHUFFLE_BIT", "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"]
                }
            },
            "formats": {
                "VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT": {
                    "VkFormatProperties": {
                        "linearTilingFeatures": ["VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "VK_FORMAT_FEATURE_BLIT_DST_BIT", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"],
                        "optimalTilingFeatures": ["VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "VK_FORMAT_FEATURE_BLIT_SRC_BIT", "VK_FORMAT_FEATURE_BLIT_DST_BIT", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"],
                        "bufferFeatures": []
                    }
                },
                "VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT": {
                    "VkFormatProperties": {
                        "linearTilingFeatures": ["VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "VK_FORMAT_FEATURE_BLIT_DST_BIT", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"],
                        "optimalTilingFeatures": ["VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "VK_FORMAT_FEATURE_BLIT_SRC_BIT", "VK_FORMAT_FEATURE_BLIT_DST_BIT", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"],
                        "bufferFeatures": []
                    }
                }
            }
        },
        "primitivesGeneratedQuery": {
            "extensions": {
                "VK_EXT_primitives_generated_query": 1
            },
            "features": {
                "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT": {
                    "primitivesGeneratedQuery": true
                }
            }
        },
        "pipelineStatisticsQuery": {
            "features": {
                "VkPhysicalDeviceFeatures": {
                    "pipelineStatisticsQuery": true
                }
            }
        },
        "swBresenhamLines": {
            "extensions": {
                "VK_EXT_line_rasterization": 1
            },
            "features": {
                "VkPhysicalDeviceLineRasterizationFeaturesEXT": {
                    "bresenhamLines": true
                }
            }
        },
        "hwBresenhamLines": {
            "extensions": {
                "VK_IMG_relaxed_line_rasterization": 1
            },
            "features": {
                "VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG": {
                    "relaxedLineRasterization": true
                }
            }
        }
    },
    "profiles": {
        "VP_ANDROID_15_minimums": {
            "version": 1,
            "api-version": "1.3.273",
            "label": "Vulkan Minimum Requirements for Android 15",
            "description": "Collection of functionality that is mandated for chipsets that launch (or renew Google Requirements Freeze) on Android 15",
            "contributors": {
                "Trevor David Black": {
                    "company": "Google",
                    "email": "vantablack@google.com",
                    "contact": true
                },
                "Ian Elliott": {
                    "company": "Google",
                    "email": "ianelliott@google.com",
                    "contact": true
                }
            },
            "history": [
                {
                    "revision": 1,
                    "date": "2023-12-15",
                    "author": "Ian Elliott",
                    "comment": "First version"
                 }
            ],
            "profiles": [
                "VP_ANDROID_baseline_2022"
             ],
             "capabilities": [
                "MUST",
                ["primitivesGeneratedQuery", "pipelineStatisticsQuery"],
                ["swBresenhamLines", "hwBresenhamLines"]
            ]
        }
    }
}
