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