1/* WARNING: This is auto-generated file. Do not modify, since changes will 2 * be lost! Modify the generating script instead. 3 * This file was generated by /scripts/gen_framework.py 4 */ 5bool checkMandatoryFeatures(const vkt::Context& context) 6{ 7 if (!context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2")) 8 TCU_THROW(NotSupportedError, "Extension VK_KHR_get_physical_device_properties2 is not present"); 9 10 VkPhysicalDevice physicalDevice = context.getPhysicalDevice(); 11 const InstanceInterface& vki = context.getInstanceInterface(); 12 const vector<VkExtensionProperties> deviceExtensions = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL); 13 14 tcu::TestLog& log = context.getTestContext().getLog(); 15 vk::VkPhysicalDeviceFeatures2 coreFeatures; 16 deMemset(&coreFeatures, 0, sizeof(coreFeatures)); 17 coreFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; 18 void** nextPtr = &coreFeatures.pNext; 19 20 vk::VkPhysicalDevice16BitStorageFeaturesKHR physicalDevice16BitStorageFeaturesKHR; 21 deMemset(&physicalDevice16BitStorageFeaturesKHR, 0, sizeof(physicalDevice16BitStorageFeaturesKHR)); 22 23 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) ) 24 { 25 physicalDevice16BitStorageFeaturesKHR.sType = getStructureType<VkPhysicalDevice16BitStorageFeaturesKHR>(); 26 *nextPtr = &physicalDevice16BitStorageFeaturesKHR; 27 nextPtr = &physicalDevice16BitStorageFeaturesKHR.pNext; 28 } 29 30 vk::VkPhysicalDevice4444FormatsFeaturesEXT physicalDevice4444FormatsFeaturesEXT; 31 deMemset(&physicalDevice4444FormatsFeaturesEXT, 0, sizeof(physicalDevice4444FormatsFeaturesEXT)); 32 33 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) ) 34 { 35 physicalDevice4444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT>(); 36 *nextPtr = &physicalDevice4444FormatsFeaturesEXT; 37 nextPtr = &physicalDevice4444FormatsFeaturesEXT.pNext; 38 } 39 40 vk::VkPhysicalDevice8BitStorageFeaturesKHR physicalDevice8BitStorageFeaturesKHR; 41 deMemset(&physicalDevice8BitStorageFeaturesKHR, 0, sizeof(physicalDevice8BitStorageFeaturesKHR)); 42 43 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) ) 44 { 45 physicalDevice8BitStorageFeaturesKHR.sType = getStructureType<VkPhysicalDevice8BitStorageFeaturesKHR>(); 46 *nextPtr = &physicalDevice8BitStorageFeaturesKHR; 47 nextPtr = &physicalDevice8BitStorageFeaturesKHR.pNext; 48 } 49 50 vk::VkPhysicalDeviceAccelerationStructureFeaturesKHR physicalDeviceAccelerationStructureFeaturesKHR; 51 deMemset(&physicalDeviceAccelerationStructureFeaturesKHR, 0, sizeof(physicalDeviceAccelerationStructureFeaturesKHR)); 52 53 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 54 { 55 physicalDeviceAccelerationStructureFeaturesKHR.sType = getStructureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(); 56 *nextPtr = &physicalDeviceAccelerationStructureFeaturesKHR; 57 nextPtr = &physicalDeviceAccelerationStructureFeaturesKHR.pNext; 58 } 59 60 vk::VkPhysicalDeviceBorderColorSwizzleFeaturesEXT physicalDeviceBorderColorSwizzleFeaturesEXT; 61 deMemset(&physicalDeviceBorderColorSwizzleFeaturesEXT, 0, sizeof(physicalDeviceBorderColorSwizzleFeaturesEXT)); 62 63 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_border_color_swizzle")) ) 64 { 65 physicalDeviceBorderColorSwizzleFeaturesEXT.sType = getStructureType<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>(); 66 *nextPtr = &physicalDeviceBorderColorSwizzleFeaturesEXT; 67 nextPtr = &physicalDeviceBorderColorSwizzleFeaturesEXT.pNext; 68 } 69 70 vk::VkPhysicalDeviceBufferDeviceAddressFeaturesKHR physicalDeviceBufferDeviceAddressFeaturesKHR; 71 deMemset(&physicalDeviceBufferDeviceAddressFeaturesKHR, 0, sizeof(physicalDeviceBufferDeviceAddressFeaturesKHR)); 72 73 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) || context.contextSupports(vk::ApiVersion(1, 1, 0)) ) 74 { 75 physicalDeviceBufferDeviceAddressFeaturesKHR.sType = getStructureType<VkPhysicalDeviceBufferDeviceAddressFeaturesKHR>(); 76 *nextPtr = &physicalDeviceBufferDeviceAddressFeaturesKHR; 77 nextPtr = &physicalDeviceBufferDeviceAddressFeaturesKHR.pNext; 78 } 79 80 vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT physicalDeviceColorWriteEnableFeaturesEXT; 81 deMemset(&physicalDeviceColorWriteEnableFeaturesEXT, 0, sizeof(physicalDeviceColorWriteEnableFeaturesEXT)); 82 83 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) ) 84 { 85 physicalDeviceColorWriteEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(); 86 *nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT; 87 nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT.pNext; 88 } 89 90 vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT physicalDeviceConditionalRenderingFeaturesEXT; 91 deMemset(&physicalDeviceConditionalRenderingFeaturesEXT, 0, sizeof(physicalDeviceConditionalRenderingFeaturesEXT)); 92 93 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) ) 94 { 95 physicalDeviceConditionalRenderingFeaturesEXT.sType = getStructureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(); 96 *nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT; 97 nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT.pNext; 98 } 99 100 vk::VkPhysicalDeviceDepthClipControlFeaturesEXT physicalDeviceDepthClipControlFeaturesEXT; 101 deMemset(&physicalDeviceDepthClipControlFeaturesEXT, 0, sizeof(physicalDeviceDepthClipControlFeaturesEXT)); 102 103 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_control")) ) 104 { 105 physicalDeviceDepthClipControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipControlFeaturesEXT>(); 106 *nextPtr = &physicalDeviceDepthClipControlFeaturesEXT; 107 nextPtr = &physicalDeviceDepthClipControlFeaturesEXT.pNext; 108 } 109 110 vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT physicalDeviceDepthClipEnableFeaturesEXT; 111 deMemset(&physicalDeviceDepthClipEnableFeaturesEXT, 0, sizeof(physicalDeviceDepthClipEnableFeaturesEXT)); 112 113 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) ) 114 { 115 physicalDeviceDepthClipEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(); 116 *nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT; 117 nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT.pNext; 118 } 119 120 vk::VkPhysicalDeviceDescriptorIndexingFeaturesEXT physicalDeviceDescriptorIndexingFeaturesEXT; 121 deMemset(&physicalDeviceDescriptorIndexingFeaturesEXT, 0, sizeof(physicalDeviceDescriptorIndexingFeaturesEXT)); 122 123 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) || context.contextSupports(vk::ApiVersion(1, 1, 0)) ) 124 { 125 physicalDeviceDescriptorIndexingFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>(); 126 *nextPtr = &physicalDeviceDescriptorIndexingFeaturesEXT; 127 nextPtr = &physicalDeviceDescriptorIndexingFeaturesEXT.pNext; 128 } 129 130 vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT physicalDeviceExtendedDynamicState2FeaturesEXT; 131 deMemset(&physicalDeviceExtendedDynamicState2FeaturesEXT, 0, sizeof(physicalDeviceExtendedDynamicState2FeaturesEXT)); 132 133 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) ) 134 { 135 physicalDeviceExtendedDynamicState2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(); 136 *nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT; 137 nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT.pNext; 138 } 139 140 vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT physicalDeviceFragmentDensityMapFeaturesEXT; 141 deMemset(&physicalDeviceFragmentDensityMapFeaturesEXT, 0, sizeof(physicalDeviceFragmentDensityMapFeaturesEXT)); 142 143 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_density_map")) ) 144 { 145 physicalDeviceFragmentDensityMapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(); 146 *nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT; 147 nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT.pNext; 148 } 149 150 vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT physicalDeviceFragmentShaderInterlockFeaturesEXT; 151 deMemset(&physicalDeviceFragmentShaderInterlockFeaturesEXT, 0, sizeof(physicalDeviceFragmentShaderInterlockFeaturesEXT)); 152 153 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) ) 154 { 155 physicalDeviceFragmentShaderInterlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(); 156 *nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT; 157 nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT.pNext; 158 } 159 160 vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR physicalDeviceGlobalPriorityQueryFeaturesKHR; 161 deMemset(&physicalDeviceGlobalPriorityQueryFeaturesKHR, 0, sizeof(physicalDeviceGlobalPriorityQueryFeaturesKHR)); 162 163 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) || isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_global_priority")) ) 164 { 165 physicalDeviceGlobalPriorityQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>(); 166 *nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesKHR; 167 nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesKHR.pNext; 168 } 169 170 vk::VkPhysicalDeviceHostQueryResetFeaturesEXT physicalDeviceHostQueryResetFeaturesEXT; 171 deMemset(&physicalDeviceHostQueryResetFeaturesEXT, 0, sizeof(physicalDeviceHostQueryResetFeaturesEXT)); 172 173 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) ) 174 { 175 physicalDeviceHostQueryResetFeaturesEXT.sType = getStructureType<VkPhysicalDeviceHostQueryResetFeaturesEXT>(); 176 *nextPtr = &physicalDeviceHostQueryResetFeaturesEXT; 177 nextPtr = &physicalDeviceHostQueryResetFeaturesEXT.pNext; 178 } 179 180 vk::VkPhysicalDeviceImagelessFramebufferFeaturesKHR physicalDeviceImagelessFramebufferFeaturesKHR; 181 deMemset(&physicalDeviceImagelessFramebufferFeaturesKHR, 0, sizeof(physicalDeviceImagelessFramebufferFeaturesKHR)); 182 183 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) ) 184 { 185 physicalDeviceImagelessFramebufferFeaturesKHR.sType = getStructureType<VkPhysicalDeviceImagelessFramebufferFeaturesKHR>(); 186 *nextPtr = &physicalDeviceImagelessFramebufferFeaturesKHR; 187 nextPtr = &physicalDeviceImagelessFramebufferFeaturesKHR.pNext; 188 } 189 190 vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT physicalDeviceIndexTypeUint8FeaturesEXT; 191 deMemset(&physicalDeviceIndexTypeUint8FeaturesEXT, 0, sizeof(physicalDeviceIndexTypeUint8FeaturesEXT)); 192 193 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) ) 194 { 195 physicalDeviceIndexTypeUint8FeaturesEXT.sType = getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(); 196 *nextPtr = &physicalDeviceIndexTypeUint8FeaturesEXT; 197 nextPtr = &physicalDeviceIndexTypeUint8FeaturesEXT.pNext; 198 } 199 200 vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT physicalDeviceInlineUniformBlockFeaturesEXT; 201 deMemset(&physicalDeviceInlineUniformBlockFeaturesEXT, 0, sizeof(physicalDeviceInlineUniformBlockFeaturesEXT)); 202 203 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) ) 204 { 205 physicalDeviceInlineUniformBlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(); 206 *nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT; 207 nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT.pNext; 208 } 209 210 vk::VkPhysicalDeviceLineRasterizationFeaturesEXT physicalDeviceLineRasterizationFeaturesEXT; 211 deMemset(&physicalDeviceLineRasterizationFeaturesEXT, 0, sizeof(physicalDeviceLineRasterizationFeaturesEXT)); 212 213 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) ) 214 { 215 physicalDeviceLineRasterizationFeaturesEXT.sType = getStructureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>(); 216 *nextPtr = &physicalDeviceLineRasterizationFeaturesEXT; 217 nextPtr = &physicalDeviceLineRasterizationFeaturesEXT.pNext; 218 } 219 220 vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT physicalDeviceMemoryPriorityFeaturesEXT; 221 deMemset(&physicalDeviceMemoryPriorityFeaturesEXT, 0, sizeof(physicalDeviceMemoryPriorityFeaturesEXT)); 222 223 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_memory_priority")) ) 224 { 225 physicalDeviceMemoryPriorityFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(); 226 *nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT; 227 nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT.pNext; 228 } 229 230 vk::VkPhysicalDeviceMultiDrawFeaturesEXT physicalDeviceMultiDrawFeaturesEXT; 231 deMemset(&physicalDeviceMultiDrawFeaturesEXT, 0, sizeof(physicalDeviceMultiDrawFeaturesEXT)); 232 233 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) ) 234 { 235 physicalDeviceMultiDrawFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMultiDrawFeaturesEXT>(); 236 *nextPtr = &physicalDeviceMultiDrawFeaturesEXT; 237 nextPtr = &physicalDeviceMultiDrawFeaturesEXT.pNext; 238 } 239 240 vk::VkPhysicalDeviceMultiviewFeatures physicalDeviceMultiviewFeatures; 241 deMemset(&physicalDeviceMultiviewFeatures, 0, sizeof(physicalDeviceMultiviewFeatures)); 242 243 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) || context.contextSupports(vk::ApiVersion(1, 1, 0)) ) 244 { 245 physicalDeviceMultiviewFeatures.sType = getStructureType<VkPhysicalDeviceMultiviewFeatures>(); 246 *nextPtr = &physicalDeviceMultiviewFeatures; 247 nextPtr = &physicalDeviceMultiviewFeatures.pNext; 248 } 249 250 vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE physicalDeviceMutableDescriptorTypeFeaturesVALVE; 251 deMemset(&physicalDeviceMutableDescriptorTypeFeaturesVALVE, 0, sizeof(physicalDeviceMutableDescriptorTypeFeaturesVALVE)); 252 253 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) ) 254 { 255 physicalDeviceMutableDescriptorTypeFeaturesVALVE.sType = getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(); 256 *nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE; 257 nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE.pNext; 258 } 259 260 vk::VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT physicalDevicePageableDeviceLocalMemoryFeaturesEXT; 261 deMemset(&physicalDevicePageableDeviceLocalMemoryFeaturesEXT, 0, sizeof(physicalDevicePageableDeviceLocalMemoryFeaturesEXT)); 262 263 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_pageable_device_local_memory")) ) 264 { 265 physicalDevicePageableDeviceLocalMemoryFeaturesEXT.sType = getStructureType<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(); 266 *nextPtr = &physicalDevicePageableDeviceLocalMemoryFeaturesEXT; 267 nextPtr = &physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pNext; 268 } 269 270 vk::VkPhysicalDevicePerformanceQueryFeaturesKHR physicalDevicePerformanceQueryFeaturesKHR; 271 deMemset(&physicalDevicePerformanceQueryFeaturesKHR, 0, sizeof(physicalDevicePerformanceQueryFeaturesKHR)); 272 273 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) ) 274 { 275 physicalDevicePerformanceQueryFeaturesKHR.sType = getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>(); 276 *nextPtr = &physicalDevicePerformanceQueryFeaturesKHR; 277 nextPtr = &physicalDevicePerformanceQueryFeaturesKHR.pNext; 278 } 279 280 vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR physicalDevicePipelineExecutablePropertiesFeaturesKHR; 281 deMemset(&physicalDevicePipelineExecutablePropertiesFeaturesKHR, 0, sizeof(physicalDevicePipelineExecutablePropertiesFeaturesKHR)); 282 283 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) ) 284 { 285 physicalDevicePipelineExecutablePropertiesFeaturesKHR.sType = getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(); 286 *nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR; 287 nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR.pNext; 288 } 289 290 vk::VkPhysicalDevicePresentIdFeaturesKHR physicalDevicePresentIdFeaturesKHR; 291 deMemset(&physicalDevicePresentIdFeaturesKHR, 0, sizeof(physicalDevicePresentIdFeaturesKHR)); 292 293 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) ) 294 { 295 physicalDevicePresentIdFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentIdFeaturesKHR>(); 296 *nextPtr = &physicalDevicePresentIdFeaturesKHR; 297 nextPtr = &physicalDevicePresentIdFeaturesKHR.pNext; 298 } 299 300 vk::VkPhysicalDevicePresentWaitFeaturesKHR physicalDevicePresentWaitFeaturesKHR; 301 deMemset(&physicalDevicePresentWaitFeaturesKHR, 0, sizeof(physicalDevicePresentWaitFeaturesKHR)); 302 303 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) ) 304 { 305 physicalDevicePresentWaitFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentWaitFeaturesKHR>(); 306 *nextPtr = &physicalDevicePresentWaitFeaturesKHR; 307 nextPtr = &physicalDevicePresentWaitFeaturesKHR.pNext; 308 } 309 310 vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT physicalDevicePrimitiveTopologyListRestartFeaturesEXT; 311 deMemset(&physicalDevicePrimitiveTopologyListRestartFeaturesEXT, 0, sizeof(physicalDevicePrimitiveTopologyListRestartFeaturesEXT)); 312 313 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_primitive_topology_list_restart")) ) 314 { 315 physicalDevicePrimitiveTopologyListRestartFeaturesEXT.sType = getStructureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(); 316 *nextPtr = &physicalDevicePrimitiveTopologyListRestartFeaturesEXT; 317 nextPtr = &physicalDevicePrimitiveTopologyListRestartFeaturesEXT.pNext; 318 } 319 320 vk::VkPhysicalDeviceRayQueryFeaturesKHR physicalDeviceRayQueryFeaturesKHR; 321 deMemset(&physicalDeviceRayQueryFeaturesKHR, 0, sizeof(physicalDeviceRayQueryFeaturesKHR)); 322 323 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 324 { 325 physicalDeviceRayQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayQueryFeaturesKHR>(); 326 *nextPtr = &physicalDeviceRayQueryFeaturesKHR; 327 nextPtr = &physicalDeviceRayQueryFeaturesKHR.pNext; 328 } 329 330 vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR physicalDeviceRayTracingPipelineFeaturesKHR; 331 deMemset(&physicalDeviceRayTracingPipelineFeaturesKHR, 0, sizeof(physicalDeviceRayTracingPipelineFeaturesKHR)); 332 333 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) ) 334 { 335 physicalDeviceRayTracingPipelineFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(); 336 *nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR; 337 nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR.pNext; 338 } 339 340 vk::VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR physicalDeviceSamplerYcbcrConversionFeaturesKHR; 341 deMemset(&physicalDeviceSamplerYcbcrConversionFeaturesKHR, 0, sizeof(physicalDeviceSamplerYcbcrConversionFeaturesKHR)); 342 343 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) ) 344 { 345 physicalDeviceSamplerYcbcrConversionFeaturesKHR.sType = getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR>(); 346 *nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR; 347 nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR.pNext; 348 } 349 350 vk::VkPhysicalDeviceScalarBlockLayoutFeaturesEXT physicalDeviceScalarBlockLayoutFeaturesEXT; 351 deMemset(&physicalDeviceScalarBlockLayoutFeaturesEXT, 0, sizeof(physicalDeviceScalarBlockLayoutFeaturesEXT)); 352 353 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) ) 354 { 355 physicalDeviceScalarBlockLayoutFeaturesEXT.sType = getStructureType<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT>(); 356 *nextPtr = &physicalDeviceScalarBlockLayoutFeaturesEXT; 357 nextPtr = &physicalDeviceScalarBlockLayoutFeaturesEXT.pNext; 358 } 359 360 vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR; 361 deMemset(&physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR, 0, sizeof(physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR)); 362 363 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) ) 364 { 365 physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.sType = getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR>(); 366 *nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR; 367 nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.pNext; 368 } 369 370 vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT physicalDeviceShaderAtomicFloat2FeaturesEXT; 371 deMemset(&physicalDeviceShaderAtomicFloat2FeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloat2FeaturesEXT)); 372 373 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) ) 374 { 375 physicalDeviceShaderAtomicFloat2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(); 376 *nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT; 377 nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext; 378 } 379 380 vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT physicalDeviceShaderAtomicFloatFeaturesEXT; 381 deMemset(&physicalDeviceShaderAtomicFloatFeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloatFeaturesEXT)); 382 383 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) ) 384 { 385 physicalDeviceShaderAtomicFloatFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(); 386 *nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT; 387 nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT.pNext; 388 } 389 390 vk::VkPhysicalDeviceShaderAtomicInt64FeaturesKHR physicalDeviceShaderAtomicInt64FeaturesKHR; 391 deMemset(&physicalDeviceShaderAtomicInt64FeaturesKHR, 0, sizeof(physicalDeviceShaderAtomicInt64FeaturesKHR)); 392 393 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) ) 394 { 395 physicalDeviceShaderAtomicInt64FeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR>(); 396 *nextPtr = &physicalDeviceShaderAtomicInt64FeaturesKHR; 397 nextPtr = &physicalDeviceShaderAtomicInt64FeaturesKHR.pNext; 398 } 399 400 vk::VkPhysicalDeviceShaderClockFeaturesKHR physicalDeviceShaderClockFeaturesKHR; 401 deMemset(&physicalDeviceShaderClockFeaturesKHR, 0, sizeof(physicalDeviceShaderClockFeaturesKHR)); 402 403 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) ) 404 { 405 physicalDeviceShaderClockFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR>(); 406 *nextPtr = &physicalDeviceShaderClockFeaturesKHR; 407 nextPtr = &physicalDeviceShaderClockFeaturesKHR.pNext; 408 } 409 410 vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; 411 deMemset(&physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, 0, sizeof(physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)); 412 413 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) ) 414 { 415 physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(); 416 *nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; 417 nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.pNext; 418 } 419 420 vk::VkPhysicalDeviceShaderFloat16Int8Features physicalDeviceShaderFloat16Int8Features; 421 deMemset(&physicalDeviceShaderFloat16Int8Features, 0, sizeof(physicalDeviceShaderFloat16Int8Features)); 422 423 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) ) 424 { 425 physicalDeviceShaderFloat16Int8Features.sType = getStructureType<VkPhysicalDeviceShaderFloat16Int8Features>(); 426 *nextPtr = &physicalDeviceShaderFloat16Int8Features; 427 nextPtr = &physicalDeviceShaderFloat16Int8Features.pNext; 428 } 429 430 vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT physicalDeviceShaderImageAtomicInt64FeaturesEXT; 431 deMemset(&physicalDeviceShaderImageAtomicInt64FeaturesEXT, 0, sizeof(physicalDeviceShaderImageAtomicInt64FeaturesEXT)); 432 433 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 434 { 435 physicalDeviceShaderImageAtomicInt64FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(); 436 *nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT; 437 nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT.pNext; 438 } 439 440 vk::VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR physicalDeviceShaderIntegerDotProductFeaturesKHR; 441 deMemset(&physicalDeviceShaderIntegerDotProductFeaturesKHR, 0, sizeof(physicalDeviceShaderIntegerDotProductFeaturesKHR)); 442 443 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) ) 444 { 445 physicalDeviceShaderIntegerDotProductFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>(); 446 *nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR; 447 nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR.pNext; 448 } 449 450 vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR; 451 deMemset(&physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR)); 452 453 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) ) 454 { 455 physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>(); 456 *nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR; 457 nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.pNext; 458 } 459 460 vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; 461 deMemset(&physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)); 462 463 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) ) 464 { 465 physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(); 466 *nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; 467 nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.pNext; 468 } 469 470 vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR physicalDeviceShaderTerminateInvocationFeaturesKHR; 471 deMemset(&physicalDeviceShaderTerminateInvocationFeaturesKHR, 0, sizeof(physicalDeviceShaderTerminateInvocationFeaturesKHR)); 472 473 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) ) 474 { 475 physicalDeviceShaderTerminateInvocationFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>(); 476 *nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR; 477 nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR.pNext; 478 } 479 480 vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT physicalDeviceSubgroupSizeControlFeaturesEXT; 481 deMemset(&physicalDeviceSubgroupSizeControlFeaturesEXT, 0, sizeof(physicalDeviceSubgroupSizeControlFeaturesEXT)); 482 483 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 484 { 485 physicalDeviceSubgroupSizeControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(); 486 *nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT; 487 nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT.pNext; 488 } 489 490 vk::VkPhysicalDeviceSynchronization2FeaturesKHR physicalDeviceSynchronization2FeaturesKHR; 491 deMemset(&physicalDeviceSynchronization2FeaturesKHR, 0, sizeof(physicalDeviceSynchronization2FeaturesKHR)); 492 493 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) ) 494 { 495 physicalDeviceSynchronization2FeaturesKHR.sType = getStructureType<VkPhysicalDeviceSynchronization2FeaturesKHR>(); 496 *nextPtr = &physicalDeviceSynchronization2FeaturesKHR; 497 nextPtr = &physicalDeviceSynchronization2FeaturesKHR.pNext; 498 } 499 500 vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT physicalDeviceTexelBufferAlignmentFeaturesEXT; 501 deMemset(&physicalDeviceTexelBufferAlignmentFeaturesEXT, 0, sizeof(physicalDeviceTexelBufferAlignmentFeaturesEXT)); 502 503 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) ) 504 { 505 physicalDeviceTexelBufferAlignmentFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(); 506 *nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT; 507 nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT.pNext; 508 } 509 510 vk::VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT physicalDeviceTextureCompressionASTCHDRFeaturesEXT; 511 deMemset(&physicalDeviceTextureCompressionASTCHDRFeaturesEXT, 0, sizeof(physicalDeviceTextureCompressionASTCHDRFeaturesEXT)); 512 513 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) ) 514 { 515 physicalDeviceTextureCompressionASTCHDRFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(); 516 *nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT; 517 nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT.pNext; 518 } 519 520 vk::VkPhysicalDeviceTimelineSemaphoreFeaturesKHR physicalDeviceTimelineSemaphoreFeaturesKHR; 521 deMemset(&physicalDeviceTimelineSemaphoreFeaturesKHR, 0, sizeof(physicalDeviceTimelineSemaphoreFeaturesKHR)); 522 523 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) ) 524 { 525 physicalDeviceTimelineSemaphoreFeaturesKHR.sType = getStructureType<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR>(); 526 *nextPtr = &physicalDeviceTimelineSemaphoreFeaturesKHR; 527 nextPtr = &physicalDeviceTimelineSemaphoreFeaturesKHR.pNext; 528 } 529 530 vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT physicalDeviceTransformFeedbackFeaturesEXT; 531 deMemset(&physicalDeviceTransformFeedbackFeaturesEXT, 0, sizeof(physicalDeviceTransformFeedbackFeaturesEXT)); 532 533 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) ) 534 { 535 physicalDeviceTransformFeedbackFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(); 536 *nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT; 537 nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT.pNext; 538 } 539 540 vk::VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR physicalDeviceUniformBufferStandardLayoutFeaturesKHR; 541 deMemset(&physicalDeviceUniformBufferStandardLayoutFeaturesKHR, 0, sizeof(physicalDeviceUniformBufferStandardLayoutFeaturesKHR)); 542 543 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) ) 544 { 545 physicalDeviceUniformBufferStandardLayoutFeaturesKHR.sType = getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR>(); 546 *nextPtr = &physicalDeviceUniformBufferStandardLayoutFeaturesKHR; 547 nextPtr = &physicalDeviceUniformBufferStandardLayoutFeaturesKHR.pNext; 548 } 549 550 vk::VkPhysicalDeviceVariablePointersFeatures physicalDeviceVariablePointersFeatures; 551 deMemset(&physicalDeviceVariablePointersFeatures, 0, sizeof(physicalDeviceVariablePointersFeatures)); 552 553 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) ) 554 { 555 physicalDeviceVariablePointersFeatures.sType = getStructureType<VkPhysicalDeviceVariablePointersFeatures>(); 556 *nextPtr = &physicalDeviceVariablePointersFeatures; 557 nextPtr = &physicalDeviceVariablePointersFeatures.pNext; 558 } 559 560 vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT physicalDeviceVertexAttributeDivisorFeaturesEXT; 561 deMemset(&physicalDeviceVertexAttributeDivisorFeaturesEXT, 0, sizeof(physicalDeviceVertexAttributeDivisorFeaturesEXT)); 562 563 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) ) 564 { 565 physicalDeviceVertexAttributeDivisorFeaturesEXT.sType = getStructureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(); 566 *nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesEXT; 567 nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesEXT.pNext; 568 } 569 570 vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT physicalDeviceVertexInputDynamicStateFeaturesEXT; 571 deMemset(&physicalDeviceVertexInputDynamicStateFeaturesEXT, 0, sizeof(physicalDeviceVertexInputDynamicStateFeaturesEXT)); 572 573 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) ) 574 { 575 physicalDeviceVertexInputDynamicStateFeaturesEXT.sType = getStructureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(); 576 *nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT; 577 nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT.pNext; 578 } 579 580 vk::VkPhysicalDeviceVulkan11Features physicalDeviceVulkan11Features; 581 deMemset(&physicalDeviceVulkan11Features, 0, sizeof(physicalDeviceVulkan11Features)); 582 583 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 584 { 585 physicalDeviceVulkan11Features.sType = getStructureType<VkPhysicalDeviceVulkan11Features>(); 586 *nextPtr = &physicalDeviceVulkan11Features; 587 nextPtr = &physicalDeviceVulkan11Features.pNext; 588 } 589 590 vk::VkPhysicalDeviceVulkan12Features physicalDeviceVulkan12Features; 591 deMemset(&physicalDeviceVulkan12Features, 0, sizeof(physicalDeviceVulkan12Features)); 592 593 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) || context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 594 { 595 physicalDeviceVulkan12Features.sType = getStructureType<VkPhysicalDeviceVulkan12Features>(); 596 *nextPtr = &physicalDeviceVulkan12Features; 597 nextPtr = &physicalDeviceVulkan12Features.pNext; 598 } 599 600 vk::VkPhysicalDeviceVulkan13Features physicalDeviceVulkan13Features; 601 deMemset(&physicalDeviceVulkan13Features, 0, sizeof(physicalDeviceVulkan13Features)); 602 603 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 604 { 605 physicalDeviceVulkan13Features.sType = getStructureType<VkPhysicalDeviceVulkan13Features>(); 606 *nextPtr = &physicalDeviceVulkan13Features; 607 nextPtr = &physicalDeviceVulkan13Features.pNext; 608 } 609 610 vk::VkPhysicalDeviceVulkanMemoryModelFeaturesKHR physicalDeviceVulkanMemoryModelFeaturesKHR; 611 deMemset(&physicalDeviceVulkanMemoryModelFeaturesKHR, 0, sizeof(physicalDeviceVulkanMemoryModelFeaturesKHR)); 612 613 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) ) 614 { 615 physicalDeviceVulkanMemoryModelFeaturesKHR.sType = getStructureType<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>(); 616 *nextPtr = &physicalDeviceVulkanMemoryModelFeaturesKHR; 617 nextPtr = &physicalDeviceVulkanMemoryModelFeaturesKHR.pNext; 618 } 619 620 vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; 621 deMemset(&physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, 0, sizeof(physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)); 622 623 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) ) 624 { 625 physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType = getStructureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(); 626 *nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; 627 nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.pNext; 628 } 629 630 vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT physicalDeviceYcbcr2Plane444FormatsFeaturesEXT; 631 deMemset(&physicalDeviceYcbcr2Plane444FormatsFeaturesEXT, 0, sizeof(physicalDeviceYcbcr2Plane444FormatsFeaturesEXT)); 632 633 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) ) 634 { 635 physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(); 636 *nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT; 637 nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext; 638 } 639 640 vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT physicalDeviceYcbcrImageArraysFeaturesEXT; 641 deMemset(&physicalDeviceYcbcrImageArraysFeaturesEXT, 0, sizeof(physicalDeviceYcbcrImageArraysFeaturesEXT)); 642 643 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) ) 644 { 645 physicalDeviceYcbcrImageArraysFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(); 646 *nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT; 647 nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT.pNext; 648 } 649 650 vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; 651 deMemset(&physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR, 0, sizeof(physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)); 652 653 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) ) 654 { 655 physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>(); 656 *nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; 657 nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.pNext; 658 } 659 660 context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &coreFeatures); 661 bool result = true; 662 663 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) ) 664 { 665 if ( physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 == VK_FALSE ) 666 { 667 log << tcu::TestLog::Message << "Mandatory feature formatA4R4G4B4 not supported" << tcu::TestLog::EndMessage; 668 result = false; 669 } 670 } 671 672 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_border_color_swizzle")) ) 673 { 674 if ( physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle == VK_FALSE ) 675 { 676 log << tcu::TestLog::Message << "Mandatory feature borderColorSwizzle not supported" << tcu::TestLog::EndMessage; 677 result = false; 678 } 679 } 680 681 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) ) 682 { 683 if ( physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable == VK_FALSE ) 684 { 685 log << tcu::TestLog::Message << "Mandatory feature colorWriteEnable not supported" << tcu::TestLog::EndMessage; 686 result = false; 687 } 688 } 689 690 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) ) 691 { 692 if ( physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering == VK_FALSE ) 693 { 694 log << tcu::TestLog::Message << "Mandatory feature conditionalRendering not supported" << tcu::TestLog::EndMessage; 695 result = false; 696 } 697 } 698 699 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_control")) ) 700 { 701 if ( physicalDeviceDepthClipControlFeaturesEXT.depthClipControl == VK_FALSE ) 702 { 703 log << tcu::TestLog::Message << "Mandatory feature depthClipControl not supported" << tcu::TestLog::EndMessage; 704 result = false; 705 } 706 } 707 708 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) ) 709 { 710 if ( physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable == VK_FALSE ) 711 { 712 log << tcu::TestLog::Message << "Mandatory feature depthClipEnable not supported" << tcu::TestLog::EndMessage; 713 result = false; 714 } 715 } 716 717 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 718 { 719 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 720 { 721 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 722 result = false; 723 } 724 } 725 726 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 727 { 728 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 729 { 730 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 731 result = false; 732 } 733 } 734 735 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 736 { 737 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 738 { 739 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 740 result = false; 741 } 742 } 743 744 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 745 { 746 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 747 { 748 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 749 result = false; 750 } 751 } 752 753 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 754 { 755 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 756 { 757 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 758 result = false; 759 } 760 } 761 762 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 763 { 764 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 765 { 766 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 767 result = false; 768 } 769 } 770 771 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 772 { 773 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 774 { 775 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 776 result = false; 777 } 778 } 779 780 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 781 { 782 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 783 { 784 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 785 result = false; 786 } 787 } 788 789 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 790 { 791 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 792 { 793 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 794 result = false; 795 } 796 } 797 798 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 799 { 800 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 801 { 802 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 803 result = false; 804 } 805 } 806 807 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 808 { 809 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 810 { 811 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 812 result = false; 813 } 814 } 815 816 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 817 { 818 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingPartiallyBound == VK_FALSE ) 819 { 820 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 821 result = false; 822 } 823 } 824 825 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 826 { 827 if ( physicalDeviceDescriptorIndexingFeaturesEXT.runtimeDescriptorArray == VK_FALSE ) 828 { 829 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 830 result = false; 831 } 832 } 833 834 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 835 { 836 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 837 { 838 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 839 result = false; 840 } 841 } 842 843 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 844 { 845 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 846 { 847 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 848 result = false; 849 } 850 } 851 852 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) ) 853 { 854 if ( physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 == VK_FALSE ) 855 { 856 log << tcu::TestLog::Message << "Mandatory feature extendedDynamicState2 not supported" << tcu::TestLog::EndMessage; 857 result = false; 858 } 859 } 860 861 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_density_map")) ) 862 { 863 if ( physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap == VK_FALSE ) 864 { 865 log << tcu::TestLog::Message << "Mandatory feature fragmentDensityMap not supported" << tcu::TestLog::EndMessage; 866 result = false; 867 } 868 } 869 870 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) ) 871 { 872 if ( ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock == VK_FALSE ) ) 873 { 874 log << tcu::TestLog::Message << "Mandatory feature fragmentShaderSampleInterlock or fragmentShaderPixelInterlock or fragmentShaderShadingRateInterlock not supported" << tcu::TestLog::EndMessage; 875 result = false; 876 } 877 } 878 879 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) ) 880 { 881 if ( physicalDeviceHostQueryResetFeaturesEXT.hostQueryReset == VK_FALSE ) 882 { 883 log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage; 884 result = false; 885 } 886 } 887 888 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) ) 889 { 890 if ( physicalDeviceIndexTypeUint8FeaturesEXT.indexTypeUint8 == VK_FALSE ) 891 { 892 log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage; 893 result = false; 894 } 895 } 896 897 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) ) 898 { 899 if ( physicalDeviceInlineUniformBlockFeaturesEXT.inlineUniformBlock == VK_FALSE ) 900 { 901 log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage; 902 result = false; 903 } 904 } 905 906 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 907 { 908 if ( physicalDeviceInlineUniformBlockFeaturesEXT.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE ) 909 { 910 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 911 result = false; 912 } 913 } 914 915 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) ) 916 { 917 if ( ( physicalDeviceLineRasterizationFeaturesEXT.rectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.bresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.smoothLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledRectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledBresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledSmoothLines == VK_FALSE ) ) 918 { 919 log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage; 920 result = false; 921 } 922 } 923 924 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_memory_priority")) ) 925 { 926 if ( physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority == VK_FALSE ) 927 { 928 log << tcu::TestLog::Message << "Mandatory feature memoryPriority not supported" << tcu::TestLog::EndMessage; 929 result = false; 930 } 931 } 932 933 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) ) 934 { 935 if ( physicalDeviceMultiDrawFeaturesEXT.multiDraw == VK_FALSE ) 936 { 937 log << tcu::TestLog::Message << "Mandatory feature multiDraw not supported" << tcu::TestLog::EndMessage; 938 result = false; 939 } 940 } 941 942 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_pageable_device_local_memory")) ) 943 { 944 if ( physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pageableDeviceLocalMemory == VK_FALSE ) 945 { 946 log << tcu::TestLog::Message << "Mandatory feature pageableDeviceLocalMemory not supported" << tcu::TestLog::EndMessage; 947 result = false; 948 } 949 } 950 951 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_primitive_topology_list_restart")) ) 952 { 953 if ( physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart == VK_FALSE ) 954 { 955 log << tcu::TestLog::Message << "Mandatory feature primitiveTopologyListRestart not supported" << tcu::TestLog::EndMessage; 956 result = false; 957 } 958 } 959 960 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) ) 961 { 962 if ( physicalDeviceScalarBlockLayoutFeaturesEXT.scalarBlockLayout == VK_FALSE ) 963 { 964 log << tcu::TestLog::Message << "Mandatory feature scalarBlockLayout not supported" << tcu::TestLog::EndMessage; 965 result = false; 966 } 967 } 968 969 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ) 970 { 971 if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE ) 972 { 973 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage; 974 result = false; 975 } 976 } 977 978 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ) 979 { 980 if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE ) 981 { 982 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage; 983 result = false; 984 } 985 } 986 987 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax ) 988 { 989 if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE ) 990 { 991 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage; 992 result = false; 993 } 994 } 995 996 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) ) 997 { 998 if ( physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.shaderDemoteToHelperInvocation == VK_FALSE ) 999 { 1000 log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; 1001 result = false; 1002 } 1003 } 1004 1005 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 1006 { 1007 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 1008 { 1009 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 1010 result = false; 1011 } 1012 } 1013 1014 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 1015 { 1016 if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) 1017 { 1018 log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; 1019 result = false; 1020 } 1021 } 1022 1023 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ) 1024 { 1025 if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) 1026 { 1027 log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; 1028 result = false; 1029 } 1030 } 1031 1032 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 1033 { 1034 if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE ) 1035 { 1036 log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; 1037 result = false; 1038 } 1039 } 1040 1041 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 1042 { 1043 if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE ) 1044 { 1045 log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; 1046 result = false; 1047 } 1048 } 1049 1050 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) ) 1051 { 1052 if ( physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment == VK_FALSE ) 1053 { 1054 log << tcu::TestLog::Message << "Mandatory feature texelBufferAlignment not supported" << tcu::TestLog::EndMessage; 1055 result = false; 1056 } 1057 } 1058 1059 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) ) 1060 { 1061 if ( physicalDeviceTextureCompressionASTCHDRFeaturesEXT.textureCompressionASTC_HDR == VK_FALSE ) 1062 { 1063 log << tcu::TestLog::Message << "Mandatory feature textureCompressionASTC_HDR not supported" << tcu::TestLog::EndMessage; 1064 result = false; 1065 } 1066 } 1067 1068 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) ) 1069 { 1070 if ( physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback == VK_FALSE ) 1071 { 1072 log << tcu::TestLog::Message << "Mandatory feature transformFeedback not supported" << tcu::TestLog::EndMessage; 1073 result = false; 1074 } 1075 } 1076 1077 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) ) 1078 { 1079 if ( physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateDivisor == VK_FALSE ) 1080 { 1081 log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage; 1082 result = false; 1083 } 1084 } 1085 1086 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) ) 1087 { 1088 if ( physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState == VK_FALSE ) 1089 { 1090 log << tcu::TestLog::Message << "Mandatory feature vertexInputDynamicState not supported" << tcu::TestLog::EndMessage; 1091 result = false; 1092 } 1093 } 1094 1095 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) ) 1096 { 1097 if ( physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats == VK_FALSE ) 1098 { 1099 log << tcu::TestLog::Message << "Mandatory feature ycbcr2plane444Formats not supported" << tcu::TestLog::EndMessage; 1100 result = false; 1101 } 1102 } 1103 1104 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) ) 1105 { 1106 if ( physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays == VK_FALSE ) 1107 { 1108 log << tcu::TestLog::Message << "Mandatory feature ycbcrImageArrays not supported" << tcu::TestLog::EndMessage; 1109 result = false; 1110 } 1111 } 1112 1113 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) ) 1114 { 1115 if ( physicalDevice16BitStorageFeaturesKHR.storageBuffer16BitAccess == VK_FALSE ) 1116 { 1117 log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage; 1118 result = false; 1119 } 1120 } 1121 1122 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) ) 1123 { 1124 if ( physicalDevice8BitStorageFeaturesKHR.storageBuffer8BitAccess == VK_FALSE ) 1125 { 1126 log << tcu::TestLog::Message << "Mandatory feature storageBuffer8BitAccess not supported" << tcu::TestLog::EndMessage; 1127 result = false; 1128 } 1129 } 1130 1131 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1132 { 1133 if ( physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE ) 1134 { 1135 log << tcu::TestLog::Message << "Mandatory feature accelerationStructure not supported" << tcu::TestLog::EndMessage; 1136 result = false; 1137 } 1138 } 1139 1140 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1141 { 1142 if ( physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind == VK_FALSE ) 1143 { 1144 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingAccelerationStructureUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1145 result = false; 1146 } 1147 } 1148 1149 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) ) 1150 { 1151 if ( physicalDeviceBufferDeviceAddressFeaturesKHR.bufferDeviceAddress == VK_FALSE ) 1152 { 1153 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 1154 result = false; 1155 } 1156 } 1157 1158 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) ) 1159 { 1160 if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) 1161 { 1162 log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; 1163 result = false; 1164 } 1165 } 1166 1167 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_global_priority")) ) 1168 { 1169 if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) 1170 { 1171 log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; 1172 result = false; 1173 } 1174 } 1175 1176 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) ) 1177 { 1178 if ( physicalDeviceImagelessFramebufferFeaturesKHR.imagelessFramebuffer == VK_FALSE ) 1179 { 1180 log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; 1181 result = false; 1182 } 1183 } 1184 1185 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) ) 1186 { 1187 if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) 1188 { 1189 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 1190 result = false; 1191 } 1192 } 1193 1194 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) ) 1195 { 1196 if ( physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools == VK_FALSE ) 1197 { 1198 log << tcu::TestLog::Message << "Mandatory feature performanceCounterQueryPools not supported" << tcu::TestLog::EndMessage; 1199 result = false; 1200 } 1201 } 1202 1203 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) ) 1204 { 1205 if ( physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo == VK_FALSE ) 1206 { 1207 log << tcu::TestLog::Message << "Mandatory feature pipelineExecutableInfo not supported" << tcu::TestLog::EndMessage; 1208 result = false; 1209 } 1210 } 1211 1212 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) ) 1213 { 1214 if ( physicalDevicePresentIdFeaturesKHR.presentId == VK_FALSE ) 1215 { 1216 log << tcu::TestLog::Message << "Mandatory feature presentId not supported" << tcu::TestLog::EndMessage; 1217 result = false; 1218 } 1219 } 1220 1221 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) ) 1222 { 1223 if ( physicalDevicePresentWaitFeaturesKHR.presentWait == VK_FALSE ) 1224 { 1225 log << tcu::TestLog::Message << "Mandatory feature presentWait not supported" << tcu::TestLog::EndMessage; 1226 result = false; 1227 } 1228 } 1229 1230 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 1231 { 1232 if ( physicalDeviceRayQueryFeaturesKHR.rayQuery == VK_FALSE ) 1233 { 1234 log << tcu::TestLog::Message << "Mandatory feature rayQuery not supported" << tcu::TestLog::EndMessage; 1235 result = false; 1236 } 1237 } 1238 1239 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) ) 1240 { 1241 if ( ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) && ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) ) 1242 { 1243 log << tcu::TestLog::Message << "Mandatory feature rayTracingPipeline or rayTracingPipelineTraceRaysIndirect not supported" << tcu::TestLog::EndMessage; 1244 result = false; 1245 } 1246 } 1247 1248 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 1249 { 1250 if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling == VK_FALSE ) 1251 { 1252 log << tcu::TestLog::Message << "Mandatory feature rayTraversalPrimitiveCulling not supported" << tcu::TestLog::EndMessage; 1253 result = false; 1254 } 1255 } 1256 1257 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) ) 1258 { 1259 if ( physicalDeviceSamplerYcbcrConversionFeaturesKHR.samplerYcbcrConversion == VK_FALSE ) 1260 { 1261 log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion not supported" << tcu::TestLog::EndMessage; 1262 result = false; 1263 } 1264 } 1265 1266 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) ) 1267 { 1268 if ( physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.separateDepthStencilLayouts == VK_FALSE ) 1269 { 1270 log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; 1271 result = false; 1272 } 1273 } 1274 1275 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) ) 1276 { 1277 if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics == VK_FALSE ) 1278 { 1279 log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; 1280 result = false; 1281 } 1282 } 1283 1284 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) ) 1285 { 1286 if ( physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock == VK_FALSE ) 1287 { 1288 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupClock not supported" << tcu::TestLog::EndMessage; 1289 result = false; 1290 } 1291 } 1292 1293 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) ) 1294 { 1295 if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) ) 1296 { 1297 log << tcu::TestLog::Message << "Mandatory feature shaderFloat16 or shaderInt8 not supported" << tcu::TestLog::EndMessage; 1298 result = false; 1299 } 1300 } 1301 1302 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) ) 1303 { 1304 if ( physicalDeviceShaderIntegerDotProductFeaturesKHR.shaderIntegerDotProduct == VK_FALSE ) 1305 { 1306 log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; 1307 result = false; 1308 } 1309 } 1310 1311 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) ) 1312 { 1313 if ( physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.shaderSubgroupExtendedTypes == VK_FALSE ) 1314 { 1315 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; 1316 result = false; 1317 } 1318 } 1319 1320 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) ) 1321 { 1322 if ( physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow == VK_FALSE ) 1323 { 1324 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupUniformControlFlow not supported" << tcu::TestLog::EndMessage; 1325 result = false; 1326 } 1327 } 1328 1329 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) ) 1330 { 1331 if ( physicalDeviceShaderTerminateInvocationFeaturesKHR.shaderTerminateInvocation == VK_FALSE ) 1332 { 1333 log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; 1334 result = false; 1335 } 1336 } 1337 1338 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) ) 1339 { 1340 if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE ) 1341 { 1342 log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; 1343 result = false; 1344 } 1345 } 1346 1347 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) ) 1348 { 1349 if ( physicalDeviceTimelineSemaphoreFeaturesKHR.timelineSemaphore == VK_FALSE ) 1350 { 1351 log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; 1352 result = false; 1353 } 1354 } 1355 1356 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) ) 1357 { 1358 if ( physicalDeviceUniformBufferStandardLayoutFeaturesKHR.uniformBufferStandardLayout == VK_FALSE ) 1359 { 1360 log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; 1361 result = false; 1362 } 1363 } 1364 1365 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) ) 1366 { 1367 if ( physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer == VK_FALSE ) 1368 { 1369 log << tcu::TestLog::Message << "Mandatory feature variablePointersStorageBuffer not supported" << tcu::TestLog::EndMessage; 1370 result = false; 1371 } 1372 } 1373 1374 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) ) 1375 { 1376 if ( physicalDeviceVulkanMemoryModelFeaturesKHR.vulkanMemoryModel == VK_FALSE ) 1377 { 1378 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; 1379 result = false; 1380 } 1381 } 1382 1383 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) ) 1384 { 1385 if ( ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess == VK_FALSE ) ) 1386 { 1387 log << tcu::TestLog::Message << "Mandatory feature workgroupMemoryExplicitLayout or workgroupMemoryExplicitLayoutScalarBlockLayout or workgroupMemoryExplicitLayout8BitAccess or workgroupMemoryExplicitLayout16BitAccess not supported" << tcu::TestLog::EndMessage; 1388 result = false; 1389 } 1390 } 1391 1392 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) ) 1393 { 1394 if ( physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) 1395 { 1396 log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; 1397 result = false; 1398 } 1399 } 1400 1401 if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) ) 1402 { 1403 if ( physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType == VK_FALSE ) 1404 { 1405 log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; 1406 result = false; 1407 } 1408 } 1409 1410 { 1411 if ( coreFeatures.features.robustBufferAccess == VK_FALSE ) 1412 { 1413 log << tcu::TestLog::Message << "Mandatory feature robustBufferAccess not supported" << tcu::TestLog::EndMessage; 1414 result = false; 1415 } 1416 } 1417 1418 if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics ) 1419 { 1420 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 1421 { 1422 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 1423 result = false; 1424 } 1425 } 1426 1427 if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics ) 1428 { 1429 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 1430 { 1431 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 1432 result = false; 1433 } 1434 } 1435 1436 if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderSharedInt64Atomics ) 1437 { 1438 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 1439 { 1440 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 1441 result = false; 1442 } 1443 } 1444 1445 if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics ) 1446 { 1447 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 1448 { 1449 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 1450 result = false; 1451 } 1452 } 1453 1454 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1455 { 1456 if ( physicalDeviceBufferDeviceAddressFeaturesKHR.bufferDeviceAddress == VK_FALSE ) 1457 { 1458 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 1459 result = false; 1460 } 1461 } 1462 1463 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1464 { 1465 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 1466 { 1467 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1468 result = false; 1469 } 1470 } 1471 1472 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1473 { 1474 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 1475 { 1476 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1477 result = false; 1478 } 1479 } 1480 1481 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1482 { 1483 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 1484 { 1485 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1486 result = false; 1487 } 1488 } 1489 1490 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1491 { 1492 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 1493 { 1494 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1495 result = false; 1496 } 1497 } 1498 1499 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1500 { 1501 if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 1502 { 1503 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1504 result = false; 1505 } 1506 } 1507 1508 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1509 { 1510 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 1511 { 1512 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1513 result = false; 1514 } 1515 } 1516 1517 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1518 { 1519 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 1520 { 1521 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1522 result = false; 1523 } 1524 } 1525 1526 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1527 { 1528 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 1529 { 1530 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1531 result = false; 1532 } 1533 } 1534 1535 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1536 { 1537 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 1538 { 1539 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1540 result = false; 1541 } 1542 } 1543 1544 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1545 { 1546 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 1547 { 1548 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1549 result = false; 1550 } 1551 } 1552 1553 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1554 { 1555 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 1556 { 1557 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 1558 result = false; 1559 } 1560 } 1561 1562 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1563 { 1564 if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingPartiallyBound == VK_FALSE ) 1565 { 1566 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 1567 result = false; 1568 } 1569 } 1570 1571 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1572 { 1573 if ( physicalDeviceDescriptorIndexingFeaturesEXT.runtimeDescriptorArray == VK_FALSE ) 1574 { 1575 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 1576 result = false; 1577 } 1578 } 1579 1580 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1581 { 1582 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 1583 { 1584 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1585 result = false; 1586 } 1587 } 1588 1589 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1590 { 1591 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 1592 { 1593 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1594 result = false; 1595 } 1596 } 1597 1598 if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) ) 1599 { 1600 if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) 1601 { 1602 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 1603 result = false; 1604 } 1605 } 1606 1607 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1608 { 1609 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 1610 { 1611 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1612 result = false; 1613 } 1614 } 1615 1616 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1617 { 1618 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 1619 { 1620 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1621 result = false; 1622 } 1623 } 1624 1625 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 1626 { 1627 if ( physicalDeviceVulkan11Features.multiview == VK_FALSE ) 1628 { 1629 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 1630 result = false; 1631 } 1632 } 1633 1634 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 1635 { 1636 if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE ) 1637 { 1638 log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage; 1639 result = false; 1640 } 1641 } 1642 1643 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 1644 { 1645 if ( physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes == VK_FALSE ) 1646 { 1647 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; 1648 result = false; 1649 } 1650 } 1651 1652 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 1653 { 1654 if ( physicalDeviceVulkan12Features.imagelessFramebuffer == VK_FALSE ) 1655 { 1656 log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; 1657 result = false; 1658 } 1659 } 1660 1661 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 1662 { 1663 if ( physicalDeviceVulkan12Features.uniformBufferStandardLayout == VK_FALSE ) 1664 { 1665 log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; 1666 result = false; 1667 } 1668 } 1669 1670 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 1671 { 1672 if ( physicalDeviceVulkan12Features.separateDepthStencilLayouts == VK_FALSE ) 1673 { 1674 log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; 1675 result = false; 1676 } 1677 } 1678 1679 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 1680 { 1681 if ( physicalDeviceVulkan12Features.hostQueryReset == VK_FALSE ) 1682 { 1683 log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage; 1684 result = false; 1685 } 1686 } 1687 1688 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) ) 1689 { 1690 if ( physicalDeviceVulkan12Features.timelineSemaphore == VK_FALSE ) 1691 { 1692 log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; 1693 result = false; 1694 } 1695 } 1696 1697 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1698 { 1699 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 1700 { 1701 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1702 result = false; 1703 } 1704 } 1705 1706 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1707 { 1708 if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 1709 { 1710 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1711 result = false; 1712 } 1713 } 1714 1715 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1716 { 1717 if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 1718 { 1719 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1720 result = false; 1721 } 1722 } 1723 1724 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1725 { 1726 if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 1727 { 1728 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1729 result = false; 1730 } 1731 } 1732 1733 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1734 { 1735 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 1736 { 1737 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1738 result = false; 1739 } 1740 } 1741 1742 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1743 { 1744 if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 1745 { 1746 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1747 result = false; 1748 } 1749 } 1750 1751 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1752 { 1753 if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 1754 { 1755 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1756 result = false; 1757 } 1758 } 1759 1760 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1761 { 1762 if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 1763 { 1764 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1765 result = false; 1766 } 1767 } 1768 1769 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1770 { 1771 if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 1772 { 1773 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1774 result = false; 1775 } 1776 } 1777 1778 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1779 { 1780 if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 1781 { 1782 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1783 result = false; 1784 } 1785 } 1786 1787 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1788 { 1789 if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 1790 { 1791 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 1792 result = false; 1793 } 1794 } 1795 1796 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1797 { 1798 if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE ) 1799 { 1800 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 1801 result = false; 1802 } 1803 } 1804 1805 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 1806 { 1807 if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE ) 1808 { 1809 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 1810 result = false; 1811 } 1812 } 1813 1814 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics ) 1815 { 1816 if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics == VK_FALSE ) 1817 { 1818 log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; 1819 result = false; 1820 } 1821 } 1822 1823 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_draw_indirect_count")) ) 1824 { 1825 if ( physicalDeviceVulkan12Features.drawIndirectCount == VK_FALSE ) 1826 { 1827 log << tcu::TestLog::Message << "Mandatory feature drawIndirectCount not supported" << tcu::TestLog::EndMessage; 1828 result = false; 1829 } 1830 } 1831 1832 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_mirror_clamp_to_edge")) ) 1833 { 1834 if ( physicalDeviceVulkan12Features.samplerMirrorClampToEdge == VK_FALSE ) 1835 { 1836 log << tcu::TestLog::Message << "Mandatory feature samplerMirrorClampToEdge not supported" << tcu::TestLog::EndMessage; 1837 result = false; 1838 } 1839 } 1840 1841 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_sampler_filter_minmax")) ) 1842 { 1843 if ( physicalDeviceVulkan12Features.samplerFilterMinmax == VK_FALSE ) 1844 { 1845 log << tcu::TestLog::Message << "Mandatory feature samplerFilterMinmax not supported" << tcu::TestLog::EndMessage; 1846 result = false; 1847 } 1848 } 1849 1850 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) ) 1851 { 1852 if ( physicalDeviceVulkan12Features.shaderOutputViewportIndex == VK_FALSE ) 1853 { 1854 log << tcu::TestLog::Message << "Mandatory feature shaderOutputViewportIndex not supported" << tcu::TestLog::EndMessage; 1855 result = false; 1856 } 1857 } 1858 1859 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) ) 1860 { 1861 if ( physicalDeviceVulkan12Features.shaderOutputLayer == VK_FALSE ) 1862 { 1863 log << tcu::TestLog::Message << "Mandatory feature shaderOutputLayer not supported" << tcu::TestLog::EndMessage; 1864 result = false; 1865 } 1866 } 1867 1868 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1869 { 1870 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 1871 { 1872 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1873 result = false; 1874 } 1875 } 1876 1877 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1878 { 1879 if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 1880 { 1881 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1882 result = false; 1883 } 1884 } 1885 1886 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1887 { 1888 if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 1889 { 1890 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1891 result = false; 1892 } 1893 } 1894 1895 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1896 { 1897 if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 1898 { 1899 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1900 result = false; 1901 } 1902 } 1903 1904 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1905 { 1906 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 1907 { 1908 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1909 result = false; 1910 } 1911 } 1912 1913 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1914 { 1915 if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 1916 { 1917 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1918 result = false; 1919 } 1920 } 1921 1922 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1923 { 1924 if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 1925 { 1926 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1927 result = false; 1928 } 1929 } 1930 1931 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1932 { 1933 if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 1934 { 1935 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1936 result = false; 1937 } 1938 } 1939 1940 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1941 { 1942 if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 1943 { 1944 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1945 result = false; 1946 } 1947 } 1948 1949 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1950 { 1951 if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 1952 { 1953 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1954 result = false; 1955 } 1956 } 1957 1958 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1959 { 1960 if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 1961 { 1962 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 1963 result = false; 1964 } 1965 } 1966 1967 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1968 { 1969 if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE ) 1970 { 1971 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 1972 result = false; 1973 } 1974 } 1975 1976 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1977 { 1978 if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE ) 1979 { 1980 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 1981 result = false; 1982 } 1983 } 1984 1985 if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1986 { 1987 if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE ) 1988 { 1989 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 1990 result = false; 1991 } 1992 } 1993 1994 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 1995 { 1996 if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE ) 1997 { 1998 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 1999 result = false; 2000 } 2001 } 2002 2003 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2004 { 2005 if ( physicalDeviceVulkan12Features.vulkanMemoryModel == VK_FALSE ) 2006 { 2007 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; 2008 result = false; 2009 } 2010 } 2011 2012 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2013 { 2014 if ( physicalDeviceVulkan12Features.vulkanMemoryModelDeviceScope == VK_FALSE ) 2015 { 2016 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModelDeviceScope not supported" << tcu::TestLog::EndMessage; 2017 result = false; 2018 } 2019 } 2020 2021 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2022 { 2023 if ( physicalDeviceVulkan13Features.robustImageAccess == VK_FALSE ) 2024 { 2025 log << tcu::TestLog::Message << "Mandatory feature robustImageAccess not supported" << tcu::TestLog::EndMessage; 2026 result = false; 2027 } 2028 } 2029 2030 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2031 { 2032 if ( physicalDeviceVulkan13Features.inlineUniformBlock == VK_FALSE ) 2033 { 2034 log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage; 2035 result = false; 2036 } 2037 } 2038 2039 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2040 { 2041 if ( physicalDeviceVulkan13Features.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE ) 2042 { 2043 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2044 result = false; 2045 } 2046 } 2047 2048 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2049 { 2050 if ( physicalDeviceVulkan13Features.pipelineCreationCacheControl == VK_FALSE ) 2051 { 2052 log << tcu::TestLog::Message << "Mandatory feature pipelineCreationCacheControl not supported" << tcu::TestLog::EndMessage; 2053 result = false; 2054 } 2055 } 2056 2057 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2058 { 2059 if ( physicalDeviceVulkan13Features.privateData == VK_FALSE ) 2060 { 2061 log << tcu::TestLog::Message << "Mandatory feature privateData not supported" << tcu::TestLog::EndMessage; 2062 result = false; 2063 } 2064 } 2065 2066 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2067 { 2068 if ( physicalDeviceVulkan13Features.shaderDemoteToHelperInvocation == VK_FALSE ) 2069 { 2070 log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; 2071 result = false; 2072 } 2073 } 2074 2075 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2076 { 2077 if ( physicalDeviceVulkan13Features.shaderTerminateInvocation == VK_FALSE ) 2078 { 2079 log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; 2080 result = false; 2081 } 2082 } 2083 2084 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2085 { 2086 if ( physicalDeviceVulkan13Features.subgroupSizeControl == VK_FALSE ) 2087 { 2088 log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; 2089 result = false; 2090 } 2091 } 2092 2093 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2094 { 2095 if ( physicalDeviceVulkan13Features.computeFullSubgroups == VK_FALSE ) 2096 { 2097 log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; 2098 result = false; 2099 } 2100 } 2101 2102 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2103 { 2104 if ( physicalDeviceVulkan13Features.synchronization2 == VK_FALSE ) 2105 { 2106 log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; 2107 result = false; 2108 } 2109 } 2110 2111 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2112 { 2113 if ( physicalDeviceVulkan13Features.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) 2114 { 2115 log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; 2116 result = false; 2117 } 2118 } 2119 2120 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2121 { 2122 if ( physicalDeviceVulkan13Features.dynamicRendering == VK_FALSE ) 2123 { 2124 log << tcu::TestLog::Message << "Mandatory feature dynamicRendering not supported" << tcu::TestLog::EndMessage; 2125 result = false; 2126 } 2127 } 2128 2129 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2130 { 2131 if ( physicalDeviceVulkan13Features.shaderIntegerDotProduct == VK_FALSE ) 2132 { 2133 log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; 2134 result = false; 2135 } 2136 } 2137 2138 if ( context.contextSupports(vk::ApiVersion(1, 3, 0)) ) 2139 { 2140 if ( physicalDeviceVulkan13Features.maintenance4 == VK_FALSE ) 2141 { 2142 log << tcu::TestLog::Message << "Mandatory feature maintenance4 not supported" << tcu::TestLog::EndMessage; 2143 result = false; 2144 } 2145 } 2146 2147 return result; 2148} 2149 2150