1{
2    "$schema": "https://schema.khronos.org/vulkan/profiles-0.8.2-273.json#",
3    "capabilities": {
4        "MUST": {
5            "extensions": {
6                "VK_KHR_maintenance5": 1,
7                "VK_KHR_shader_float16_int8": 1,
8                "VK_KHR_16bit_storage": 1,
9                "VK_KHR_vertex_attribute_divisor": 1,
10                "VK_EXT_custom_border_color": 1,
11                "VK_EXT_device_memory_report": 1,
12                "VK_EXT_external_memory_acquire_unmodified": 1,
13                "VK_EXT_index_type_uint8": 1,
14                "VK_EXT_load_store_op_none": 1,
15                "VK_EXT_primitive_topology_list_restart": 1,
16                "VK_EXT_provoking_vertex": 1,
17                "VK_EXT_scalar_block_layout": 1,
18                "VK_EXT_surface_maintenance1": 1,
19                "VK_EXT_swapchain_maintenance1": 1,
20                "VK_EXT_4444_formats": 1,
21                "VK_ANDROID_external_format_resolve": 1,
22                "VK_GOOGLE_surfaceless_query": 1
23            },
24            "features": {
25                "VkPhysicalDeviceFeatures": {
26                    "drawIndirectFirstInstance": true,
27                    "shaderImageGatherExtended": true,
28                    "shaderStorageImageExtendedFormats": true,
29                    "shaderStorageImageReadWithoutFormat": true,
30                    "shaderStorageImageWriteWithoutFormat": true,
31                    "samplerAnisotropy": true
32                },
33                "VkPhysicalDeviceVulkan12Features": {
34                    "shaderFloat16": true,
35                    "shaderInt8": true
36                },
37                "VkPhysicalDeviceCustomBorderColorFeaturesEXT": {
38                    "customBorderColors": true
39                },
40                "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT": {
41                    "primitiveTopologyListRestart": true
42                },
43                "VkPhysicalDeviceProvokingVertexFeaturesEXT": {
44                    "provokingVertexLast": true
45                },
46                "VkPhysicalDeviceIndexTypeUint8FeaturesEXT": {
47                    "indexTypeUint8": true
48                },
49                "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR": {
50                    "vertexAttributeInstanceRateDivisor": true
51                },
52                "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
53                    "samplerYcbcrConversion": true
54                },
55                "VkPhysicalDeviceShaderFloat16Int8Features": {
56                    "shaderFloat16": true,
57                    "shaderInt8": true
58                },
59                "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures": {
60                    "shaderSubgroupExtendedTypes": true
61                },
62                "VkPhysicalDevice8BitStorageFeatures": {
63                    "storageBuffer8BitAccess": true
64                },
65                "VkPhysicalDevice16BitStorageFeatures": {
66                    "storageBuffer16BitAccess": true
67                }
68            },
69            "properties": {
70                "VkPhysicalDeviceProperties": {
71                    "limits": {
72                        "maxPerStageDescriptorUniformBuffers": 13,
73                        "maxPerStageDescriptorStorageBuffers": 12,
74                        "maxColorAttachments": 8,
75                        "maxPerStageDescriptorSampledImages": 128,
76                        "maxPerStageDescriptorSamplers": 128
77                    }
78                },
79                "VkPhysicalDeviceVulkan11Properties": {
80                  "subgroupSupportedOperations": ["VK_SUBGROUP_FEATURE_BASIC_BIT", "VK_SUBGROUP_FEATURE_VOTE_BIT", "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT", "VK_SUBGROUP_FEATURE_BALLOT_BIT", "VK_SUBGROUP_FEATURE_SHUFFLE_BIT", "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"]
81                }
82            },
83            "formats": {
84                "VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT": {
85                    "VkFormatProperties": {
86                        "linearTilingFeatures": ["VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "VK_FORMAT_FEATURE_BLIT_DST_BIT", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"],
87                        "optimalTilingFeatures": ["VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "VK_FORMAT_FEATURE_BLIT_SRC_BIT", "VK_FORMAT_FEATURE_BLIT_DST_BIT", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"],
88                        "bufferFeatures": []
89                    }
90                },
91                "VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT": {
92                    "VkFormatProperties": {
93                        "linearTilingFeatures": ["VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "VK_FORMAT_FEATURE_BLIT_DST_BIT", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"],
94                        "optimalTilingFeatures": ["VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "VK_FORMAT_FEATURE_BLIT_SRC_BIT", "VK_FORMAT_FEATURE_BLIT_DST_BIT", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"],
95                        "bufferFeatures": []
96                    }
97                }
98            }
99        },
100        "primitivesGeneratedQuery": {
101            "extensions": {
102                "VK_EXT_primitives_generated_query": 1
103            },
104            "features": {
105                "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT": {
106                    "primitivesGeneratedQuery": true
107                }
108            }
109        },
110        "pipelineStatisticsQuery": {
111            "features": {
112                "VkPhysicalDeviceFeatures": {
113                    "pipelineStatisticsQuery": true
114                }
115            }
116        },
117        "swBresenhamLines": {
118            "extensions": {
119                "VK_EXT_line_rasterization": 1
120            },
121            "features": {
122                "VkPhysicalDeviceLineRasterizationFeaturesEXT": {
123                    "bresenhamLines": true
124                }
125            }
126        },
127        "hwBresenhamLines": {
128            "extensions": {
129                "VK_IMG_relaxed_line_rasterization": 1
130            },
131            "features": {
132                "VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG": {
133                    "relaxedLineRasterization": true
134                }
135            }
136        }
137    },
138    "profiles": {
139        "VP_ANDROID_15_minimums": {
140            "version": 1,
141            "api-version": "1.3.273",
142            "label": "Vulkan Minimum Requirements for Android 15",
143            "description": "Collection of functionality that is mandated for chipsets that launch (or renew Google Requirements Freeze) on Android 15",
144            "contributors": {
145                "Trevor David Black": {
146                    "company": "Google",
147                    "email": "vantablack@google.com",
148                    "contact": true
149                },
150                "Ian Elliott": {
151                    "company": "Google",
152                    "email": "ianelliott@google.com",
153                    "contact": true
154                }
155            },
156            "history": [
157                {
158                    "revision": 1,
159                    "date": "2023-12-15",
160                    "author": "Ian Elliott",
161                    "comment": "First version"
162                 }
163            ],
164            "profiles": [
165                "VP_ANDROID_baseline_2022"
166             ],
167             "capabilities": [
168                "MUST",
169                ["primitivesGeneratedQuery", "pipelineStatisticsQuery"],
170                ["swBresenhamLines", "hwBresenhamLines"]
171            ]
172        }
173    }
174}
175