{ "$schema": "http://json-schema.org/draft-04/schema#", "id": "https://schema.khronos.org/vulkan/vkpcc.json#", "title": "JSON schema for Vulkan pipeline state", "description": "Schema for representing Vulkan pipeline state for use with the offline Pipeline Cache Compiler.", "type": "object", "additionalProperties": true, "definitions": { "ShaderInfo" : { "stage" : {"type": "string", "format": "uri"}, "filename" : {"type": "string", "format": "uri"} }, "GraphicsPipelineState": { "type": "object", "additionalProperties": false, "properties": { "Renderpass": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkRenderPassCreateInfo"}, "Renderpass2": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkRenderPassCreateInfo2"}, "YcbcrSamplers": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkSamplerYcbcrConversionCreateInfo"}}}}, "ImmutableSamplers": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkSamplerCreateInfo"}}}}, "DescriptorSetLayouts": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkDescriptorSetLayoutCreateInfo"}}}}, "PipelineLayout": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkPipelineLayoutCreateInfo"}, "GraphicsPipeline": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkGraphicsPipelineCreateInfo"}, "ShaderFileNames": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"$ref": "#/definitions/ShaderInfo"}}, "PhysicalDeviceFeatures": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkPhysicalDeviceFeatures2"} }, "oneOf" : [{"required" : ["Renderpass"]}, {"required" : ["Renderpass2"]}], "required" : ["PipelineLayout", "GraphicsPipeline", "ShaderFileNames"] }, "ComputePipelineState": { "type": "object", "additionalProperties": false, "properties": { "YcbcrSamplers": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkSamplerYcbcrConversionCreateInfo"}}}}, "ImmutableSamplers": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkSamplerCreateInfo"}}}}, "DescriptorSetLayouts": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkDescriptorSetLayoutCreateInfo"}}}}, "PipelineLayout": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkPipelineLayoutCreateInfo"}, "ComputePipeline": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkComputePipelineCreateInfo"}, "ShaderFileNames": {"$ref": "#/definitions/ShaderInfo"}, "PhysicalDeviceFeatures": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkPhysicalDeviceFeatures2"} }, "required" : ["PipelineLayout", "ComputePipeline", "ShaderFileNames"] } }, "properties": { "GraphicsPipelineState" : {"$ref": "#/definitions/GraphicsPipelineState"}, "ComputePipelineState" : {"$ref": "#/definitions/ComputePipelineState"}, "PipelineUUID" : {"type": "array", "minItems": 16, "maxItems": 16, "items": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/uint8_t"}}, "DeviceExtensions" : {"type": "array", "items": {"type": "string", "format": "uri"}} }, "anyOf": [ {"required": ["GraphicsPipelineState"]}, {"required": ["ComputePipelineState"]} ] }