| { |
| "$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"]} |
| ] |
| } |