1e5c31af7Sopenharmony_ci{
2e5c31af7Sopenharmony_ci"$schema": "http://json-schema.org/draft-04/schema#",
3e5c31af7Sopenharmony_ci"id": "https://schema.khronos.org/vulkan/vkpcc.json#",
4e5c31af7Sopenharmony_ci"title": "JSON schema for Vulkan pipeline state",
5e5c31af7Sopenharmony_ci"description": "Schema for representing Vulkan pipeline state for use with the offline Pipeline Cache Compiler.",
6e5c31af7Sopenharmony_ci"type": "object",
7e5c31af7Sopenharmony_ci"additionalProperties": true,
8e5c31af7Sopenharmony_ci
9e5c31af7Sopenharmony_ci"definitions": {
10e5c31af7Sopenharmony_ci    "ShaderInfo" : {
11e5c31af7Sopenharmony_ci        "stage" : {"type": "string", "format": "uri"},
12e5c31af7Sopenharmony_ci        "filename" : {"type": "string", "format": "uri"}
13e5c31af7Sopenharmony_ci    },
14e5c31af7Sopenharmony_ci
15e5c31af7Sopenharmony_ci    "GraphicsPipelineState": {
16e5c31af7Sopenharmony_ci        "type": "object",
17e5c31af7Sopenharmony_ci        "additionalProperties": false,
18e5c31af7Sopenharmony_ci        "properties": {
19e5c31af7Sopenharmony_ci            "Renderpass": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkRenderPassCreateInfo"},
20e5c31af7Sopenharmony_ci            "Renderpass2": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkRenderPassCreateInfo2"},
21e5c31af7Sopenharmony_ci            "YcbcrSamplers": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkSamplerYcbcrConversionCreateInfo"}}}},
22e5c31af7Sopenharmony_ci            "ImmutableSamplers": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkSamplerCreateInfo"}}}},
23e5c31af7Sopenharmony_ci            "DescriptorSetLayouts": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkDescriptorSetLayoutCreateInfo"}}}},
24e5c31af7Sopenharmony_ci            "PipelineLayout": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkPipelineLayoutCreateInfo"},
25e5c31af7Sopenharmony_ci            "GraphicsPipeline": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkGraphicsPipelineCreateInfo"},
26e5c31af7Sopenharmony_ci            "ShaderFileNames": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"$ref": "#/definitions/ShaderInfo"}},
27e5c31af7Sopenharmony_ci            "PhysicalDeviceFeatures": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkPhysicalDeviceFeatures2"}
28e5c31af7Sopenharmony_ci        },
29e5c31af7Sopenharmony_ci        "oneOf" : [{"required" : ["Renderpass"]}, {"required" : ["Renderpass2"]}],
30e5c31af7Sopenharmony_ci        "required" : ["PipelineLayout", "GraphicsPipeline", "ShaderFileNames"]
31e5c31af7Sopenharmony_ci    },
32e5c31af7Sopenharmony_ci
33e5c31af7Sopenharmony_ci    "ComputePipelineState": {
34e5c31af7Sopenharmony_ci        "type": "object",
35e5c31af7Sopenharmony_ci        "additionalProperties": false,
36e5c31af7Sopenharmony_ci        "properties": {
37e5c31af7Sopenharmony_ci            "YcbcrSamplers": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkSamplerYcbcrConversionCreateInfo"}}}},
38e5c31af7Sopenharmony_ci            "ImmutableSamplers": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkSamplerCreateInfo"}}}},
39e5c31af7Sopenharmony_ci            "DescriptorSetLayouts": {"type": "array", "minItems": 0, "maxItems": 255, "items": {"type": "object", "patternProperties": {"^\\w+$": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkDescriptorSetLayoutCreateInfo"}}}},
40e5c31af7Sopenharmony_ci            "PipelineLayout": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkPipelineLayoutCreateInfo"},
41e5c31af7Sopenharmony_ci            "ComputePipeline": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkComputePipelineCreateInfo"},
42e5c31af7Sopenharmony_ci            "ShaderFileNames": {"$ref": "#/definitions/ShaderInfo"},
43e5c31af7Sopenharmony_ci            "PhysicalDeviceFeatures": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/VkPhysicalDeviceFeatures2"}
44e5c31af7Sopenharmony_ci        },
45e5c31af7Sopenharmony_ci        "required" : ["PipelineLayout", "ComputePipeline", "ShaderFileNames"]
46e5c31af7Sopenharmony_ci    }
47e5c31af7Sopenharmony_ci},
48e5c31af7Sopenharmony_ci
49e5c31af7Sopenharmony_ci"properties": {
50e5c31af7Sopenharmony_ci    "GraphicsPipelineState"  : {"$ref": "#/definitions/GraphicsPipelineState"},
51e5c31af7Sopenharmony_ci    "ComputePipelineState"   : {"$ref": "#/definitions/ComputePipelineState"},
52e5c31af7Sopenharmony_ci    "PipelineUUID"           : {"type": "array", "minItems": 16, "maxItems": 16, "items": {"$ref": "https://schema.khronos.org/vulkan/vk.json#/definitions/uint8_t"}},
53e5c31af7Sopenharmony_ci    "DeviceExtensions"       : {"type": "array", "items": {"type": "string", "format": "uri"}}
54e5c31af7Sopenharmony_ci},
55e5c31af7Sopenharmony_ci
56e5c31af7Sopenharmony_ci"anyOf": [
57e5c31af7Sopenharmony_ci    {"required": ["GraphicsPipelineState"]},
58e5c31af7Sopenharmony_ci    {"required": ["ComputePipelineState"]}
59e5c31af7Sopenharmony_ci]
60e5c31af7Sopenharmony_ci}
61