{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "https://schema.khronos.org/vulkan/devsim_VK_KHR_portability_subset-provisional-1.json#",
    "title": "JSON schema for Vulkan device simulation layer configuration file",
    "description": "Schema for VK_KHR_portability_subset data structures, as used to configure the device simulation layer.",
    "type": "object",
    "additionalProperties": true,

    "definitions": {
        "$schema": {"type": "string", "format": "uri"},
        "uint32_t": {"type": "integer", "minimum": 0, "maximum": 4294967295},
        "uint64_t": {"type": "integer"},
        "VkBool32": {"$ref": "#/definitions/uint32_t"},
        "VkPhysicalDevicePortabilitySubsetPropertiesKHR": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "minVertexInputBindingStrideAlignment": {"$ref": "#/definitions/uint32_t"}
            }
        },
        "VkPhysicalDevicePortabilitySubsetFeaturesKHR": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "constantAlphaColorBlendFactors": {"$ref": "#/definitions/VkBool32"},
                "events": {"$ref": "#/definitions/VkBool32"},
                "imageViewFormatReinterpretation": {"$ref": "#/definitions/VkBool32"},
                "imageViewFormatSwizzle": {"$ref": "#/definitions/VkBool32"},
                "imageView2DOn3DImage": {"$ref": "#/definitions/VkBool32"},
                "multisampleArrayImage": {"$ref": "#/definitions/VkBool32"},
                "mutableComparisonSamplers": {"$ref": "#/definitions/VkBool32"},
                "pointPolygons": {"$ref": "#/definitions/VkBool32"},
                "samplerMipLodBias": {"$ref": "#/definitions/VkBool32"},
                "separateStencilMaskRef": {"$ref": "#/definitions/VkBool32"},
                "shaderSampleRateInterpolationFunctions": {"$ref": "#/definitions/VkBool32"},
                "tessellationIsolines": {"$ref": "#/definitions/VkBool32"},
                "tessellationPointMode": {"$ref": "#/definitions/VkBool32"},
                "triangleFans": {"$ref": "#/definitions/VkBool32"},
                "vertexAttributeAccessBeyondStride": {"$ref": "#/definitions/VkBool32"}
            }
        }
    },
    
    "required": ["$schema"],
    "properties": {
        "$schema": {"$ref": "#/definitions/$schema"},
        "VkPhysicalDevicePortabilitySubsetPropertiesKHR": {"$ref": "#/definitions/VkPhysicalDevicePortabilitySubsetPropertiesKHR"},
        "VkPhysicalDevicePortabilitySubsetFeaturesKHR": {"$ref": "#/definitions/VkPhysicalDevicePortabilitySubsetFeaturesKHR"},
        "properties": {"type": "null"},
        "features": {"type": "null"},
        "comments": {"type": "object"}
    }
}