aboutsummaryrefslogtreecommitdiffhomepage
path: root/json/vkpcc.json
diff options
context:
space:
mode:
Diffstat (limited to 'json/vkpcc.json')
-rw-r--r--json/vkpcc.json60
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"]}
+]
+}