diff options
Diffstat (limited to 'json/vkpcc.json')
-rw-r--r-- | json/vkpcc.json | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/json/vkpcc.json b/json/vkpcc.json new file mode 100644 index 0000000..3e4c8b5 --- /dev/null +++ b/json/vkpcc.json @@ -0,0 +1,60 @@ +{ +"$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"]} +] +} |