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