1/* WARNING: This is auto-generated file. Do not modify, since changes will 2 * be lost! Modify the generating script instead. 3 * This file was generated by /scripts/gen_framework.py 4 */ 5 6bool canUseFeaturesStruct (const vector<VkExtensionProperties>& deviceExtensions, uint32_t usedApiVersion, const char* extension) 7{ 8 return (isExtensionStructSupported(deviceExtensions, RequiredExtension(extension)) 9 || isCoreDeviceExtension(usedApiVersion, extension)); 10} 11 12bool checkMandatoryFeatures(const vkt::Context& context) 13{ 14 if (!context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2")) 15 TCU_THROW(NotSupportedError, "Extension VK_KHR_get_physical_device_properties2 is not present"); 16 17 VkPhysicalDevice physicalDevice = context.getPhysicalDevice(); 18 const InstanceInterface& vki = context.getInstanceInterface(); 19 const vector<VkExtensionProperties> deviceExtensions = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL); 20 const uint32_t usedApiVersion = context.getUsedApiVersion(); 21 22 tcu::TestLog& log = context.getTestContext().getLog(); 23 vk::VkPhysicalDeviceFeatures2 coreFeatures; 24 deMemset(&coreFeatures, 0, sizeof(coreFeatures)); 25 coreFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; 26 void** nextPtr = &coreFeatures.pNext; 27 28 vk::VkPhysicalDevice16BitStorageFeatures physicalDevice16BitStorageFeatures; 29 deMemset(&physicalDevice16BitStorageFeatures, 0, sizeof(physicalDevice16BitStorageFeatures)); 30 31 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_16bit_storage") ) 32 { 33 physicalDevice16BitStorageFeatures.sType = getStructureType<VkPhysicalDevice16BitStorageFeatures>(); 34 *nextPtr = &physicalDevice16BitStorageFeatures; 35 nextPtr = &physicalDevice16BitStorageFeatures.pNext; 36 } 37 38 vk::VkPhysicalDevice4444FormatsFeaturesEXT physicalDevice4444FormatsFeaturesEXT; 39 deMemset(&physicalDevice4444FormatsFeaturesEXT, 0, sizeof(physicalDevice4444FormatsFeaturesEXT)); 40 41 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_4444_formats") ) 42 { 43 physicalDevice4444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT>(); 44 *nextPtr = &physicalDevice4444FormatsFeaturesEXT; 45 nextPtr = &physicalDevice4444FormatsFeaturesEXT.pNext; 46 } 47 48 vk::VkPhysicalDevice8BitStorageFeatures physicalDevice8BitStorageFeatures; 49 deMemset(&physicalDevice8BitStorageFeatures, 0, sizeof(physicalDevice8BitStorageFeatures)); 50 51 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_8bit_storage") ) 52 { 53 physicalDevice8BitStorageFeatures.sType = getStructureType<VkPhysicalDevice8BitStorageFeatures>(); 54 *nextPtr = &physicalDevice8BitStorageFeatures; 55 nextPtr = &physicalDevice8BitStorageFeatures.pNext; 56 } 57 58 vk::VkPhysicalDeviceAccelerationStructureFeaturesKHR physicalDeviceAccelerationStructureFeaturesKHR; 59 deMemset(&physicalDeviceAccelerationStructureFeaturesKHR, 0, sizeof(physicalDeviceAccelerationStructureFeaturesKHR)); 60 61 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_acceleration_structure") ) 62 { 63 physicalDeviceAccelerationStructureFeaturesKHR.sType = getStructureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(); 64 *nextPtr = &physicalDeviceAccelerationStructureFeaturesKHR; 65 nextPtr = &physicalDeviceAccelerationStructureFeaturesKHR.pNext; 66 } 67 68 vk::VkPhysicalDeviceAddressBindingReportFeaturesEXT physicalDeviceAddressBindingReportFeaturesEXT; 69 deMemset(&physicalDeviceAddressBindingReportFeaturesEXT, 0, sizeof(physicalDeviceAddressBindingReportFeaturesEXT)); 70 71 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_device_address_binding_report") ) 72 { 73 physicalDeviceAddressBindingReportFeaturesEXT.sType = getStructureType<VkPhysicalDeviceAddressBindingReportFeaturesEXT>(); 74 *nextPtr = &physicalDeviceAddressBindingReportFeaturesEXT; 75 nextPtr = &physicalDeviceAddressBindingReportFeaturesEXT.pNext; 76 } 77 78#if defined(CTS_USES_VULKAN) 79 vk::VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; 80 deMemset(&physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, 0, sizeof(physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT)); 81 82 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_attachment_feedback_loop_layout") ) 83 { 84 physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.sType = getStructureType<VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>(); 85 *nextPtr = &physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; 86 nextPtr = &physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.pNext; 87 } 88#endif // defined(CTS_USES_VULKAN) 89 90#if defined(CTS_USES_VULKAN) 91 vk::VkPhysicalDeviceBorderColorSwizzleFeaturesEXT physicalDeviceBorderColorSwizzleFeaturesEXT; 92 deMemset(&physicalDeviceBorderColorSwizzleFeaturesEXT, 0, sizeof(physicalDeviceBorderColorSwizzleFeaturesEXT)); 93 94 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_border_color_swizzle") ) 95 { 96 physicalDeviceBorderColorSwizzleFeaturesEXT.sType = getStructureType<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>(); 97 *nextPtr = &physicalDeviceBorderColorSwizzleFeaturesEXT; 98 nextPtr = &physicalDeviceBorderColorSwizzleFeaturesEXT.pNext; 99 } 100#endif // defined(CTS_USES_VULKAN) 101 102 vk::VkPhysicalDeviceBufferDeviceAddressFeatures physicalDeviceBufferDeviceAddressFeatures; 103 deMemset(&physicalDeviceBufferDeviceAddressFeatures, 0, sizeof(physicalDeviceBufferDeviceAddressFeatures)); 104 105 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_buffer_device_address") ) 106 { 107 physicalDeviceBufferDeviceAddressFeatures.sType = getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures>(); 108 *nextPtr = &physicalDeviceBufferDeviceAddressFeatures; 109 nextPtr = &physicalDeviceBufferDeviceAddressFeatures.pNext; 110 } 111 112 vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT physicalDeviceColorWriteEnableFeaturesEXT; 113 deMemset(&physicalDeviceColorWriteEnableFeaturesEXT, 0, sizeof(physicalDeviceColorWriteEnableFeaturesEXT)); 114 115 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_color_write_enable") ) 116 { 117 physicalDeviceColorWriteEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(); 118 *nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT; 119 nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT.pNext; 120 } 121 122 vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT physicalDeviceConditionalRenderingFeaturesEXT; 123 deMemset(&physicalDeviceConditionalRenderingFeaturesEXT, 0, sizeof(physicalDeviceConditionalRenderingFeaturesEXT)); 124 125 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_conditional_rendering") ) 126 { 127 physicalDeviceConditionalRenderingFeaturesEXT.sType = getStructureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(); 128 *nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT; 129 nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT.pNext; 130 } 131 132 vk::VkPhysicalDeviceDepthClampZeroOneFeaturesEXT physicalDeviceDepthClampZeroOneFeaturesEXT; 133 deMemset(&physicalDeviceDepthClampZeroOneFeaturesEXT, 0, sizeof(physicalDeviceDepthClampZeroOneFeaturesEXT)); 134 135 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clamp_zero_one") ) 136 { 137 physicalDeviceDepthClampZeroOneFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClampZeroOneFeaturesEXT>(); 138 *nextPtr = &physicalDeviceDepthClampZeroOneFeaturesEXT; 139 nextPtr = &physicalDeviceDepthClampZeroOneFeaturesEXT.pNext; 140 } 141 142 vk::VkPhysicalDeviceDepthClipControlFeaturesEXT physicalDeviceDepthClipControlFeaturesEXT; 143 deMemset(&physicalDeviceDepthClipControlFeaturesEXT, 0, sizeof(physicalDeviceDepthClipControlFeaturesEXT)); 144 145 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clip_control") ) 146 { 147 physicalDeviceDepthClipControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipControlFeaturesEXT>(); 148 *nextPtr = &physicalDeviceDepthClipControlFeaturesEXT; 149 nextPtr = &physicalDeviceDepthClipControlFeaturesEXT.pNext; 150 } 151 152 vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT physicalDeviceDepthClipEnableFeaturesEXT; 153 deMemset(&physicalDeviceDepthClipEnableFeaturesEXT, 0, sizeof(physicalDeviceDepthClipEnableFeaturesEXT)); 154 155 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clip_enable") ) 156 { 157 physicalDeviceDepthClipEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(); 158 *nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT; 159 nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT.pNext; 160 } 161 162 vk::VkPhysicalDeviceDescriptorBufferFeaturesEXT physicalDeviceDescriptorBufferFeaturesEXT; 163 deMemset(&physicalDeviceDescriptorBufferFeaturesEXT, 0, sizeof(physicalDeviceDescriptorBufferFeaturesEXT)); 164 165 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_descriptor_buffer") ) 166 { 167 physicalDeviceDescriptorBufferFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDescriptorBufferFeaturesEXT>(); 168 *nextPtr = &physicalDeviceDescriptorBufferFeaturesEXT; 169 nextPtr = &physicalDeviceDescriptorBufferFeaturesEXT.pNext; 170 } 171 172 vk::VkPhysicalDeviceDescriptorIndexingFeatures physicalDeviceDescriptorIndexingFeatures; 173 deMemset(&physicalDeviceDescriptorIndexingFeatures, 0, sizeof(physicalDeviceDescriptorIndexingFeatures)); 174 175 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_descriptor_indexing") ) 176 { 177 physicalDeviceDescriptorIndexingFeatures.sType = getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures>(); 178 *nextPtr = &physicalDeviceDescriptorIndexingFeatures; 179 nextPtr = &physicalDeviceDescriptorIndexingFeatures.pNext; 180 } 181 182 vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT physicalDeviceExtendedDynamicState2FeaturesEXT; 183 deMemset(&physicalDeviceExtendedDynamicState2FeaturesEXT, 0, sizeof(physicalDeviceExtendedDynamicState2FeaturesEXT)); 184 185 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_extended_dynamic_state2") ) 186 { 187 physicalDeviceExtendedDynamicState2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(); 188 *nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT; 189 nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT.pNext; 190 } 191 192 vk::VkPhysicalDeviceFaultFeaturesEXT physicalDeviceFaultFeaturesEXT; 193 deMemset(&physicalDeviceFaultFeaturesEXT, 0, sizeof(physicalDeviceFaultFeaturesEXT)); 194 195 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_device_fault") ) 196 { 197 physicalDeviceFaultFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFaultFeaturesEXT>(); 198 *nextPtr = &physicalDeviceFaultFeaturesEXT; 199 nextPtr = &physicalDeviceFaultFeaturesEXT.pNext; 200 } 201 202 vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT physicalDeviceFragmentDensityMapFeaturesEXT; 203 deMemset(&physicalDeviceFragmentDensityMapFeaturesEXT, 0, sizeof(physicalDeviceFragmentDensityMapFeaturesEXT)); 204 205 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_fragment_density_map") ) 206 { 207 physicalDeviceFragmentDensityMapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(); 208 *nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT; 209 nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT.pNext; 210 } 211 212 vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT physicalDeviceFragmentShaderInterlockFeaturesEXT; 213 deMemset(&physicalDeviceFragmentShaderInterlockFeaturesEXT, 0, sizeof(physicalDeviceFragmentShaderInterlockFeaturesEXT)); 214 215 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_fragment_shader_interlock") ) 216 { 217 physicalDeviceFragmentShaderInterlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(); 218 *nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT; 219 nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT.pNext; 220 } 221 222#if defined(CTS_USES_VULKAN) 223 vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR physicalDeviceFragmentShadingRateFeaturesKHR; 224 deMemset(&physicalDeviceFragmentShadingRateFeaturesKHR, 0, sizeof(physicalDeviceFragmentShadingRateFeaturesKHR)); 225 226 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_fragment_shading_rate") ) 227 { 228 physicalDeviceFragmentShadingRateFeaturesKHR.sType = getStructureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(); 229 *nextPtr = &physicalDeviceFragmentShadingRateFeaturesKHR; 230 nextPtr = &physicalDeviceFragmentShadingRateFeaturesKHR.pNext; 231 } 232#endif // defined(CTS_USES_VULKAN) 233 234 vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR physicalDeviceGlobalPriorityQueryFeaturesKHR; 235 deMemset(&physicalDeviceGlobalPriorityQueryFeaturesKHR, 0, sizeof(physicalDeviceGlobalPriorityQueryFeaturesKHR)); 236 237 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_global_priority") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_global_priority_query") ) 238 { 239 physicalDeviceGlobalPriorityQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>(); 240 *nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesKHR; 241 nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesKHR.pNext; 242 } 243 244 vk::VkPhysicalDeviceHostQueryResetFeatures physicalDeviceHostQueryResetFeatures; 245 deMemset(&physicalDeviceHostQueryResetFeatures, 0, sizeof(physicalDeviceHostQueryResetFeatures)); 246 247 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_host_query_reset") ) 248 { 249 physicalDeviceHostQueryResetFeatures.sType = getStructureType<VkPhysicalDeviceHostQueryResetFeatures>(); 250 *nextPtr = &physicalDeviceHostQueryResetFeatures; 251 nextPtr = &physicalDeviceHostQueryResetFeatures.pNext; 252 } 253 254#if defined(CTS_USES_VULKAN) 255 vk::VkPhysicalDeviceImage2DViewOf3DFeaturesEXT physicalDeviceImage2DViewOf3DFeaturesEXT; 256 deMemset(&physicalDeviceImage2DViewOf3DFeaturesEXT, 0, sizeof(physicalDeviceImage2DViewOf3DFeaturesEXT)); 257 258 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_2d_view_of_3d") ) 259 { 260 physicalDeviceImage2DViewOf3DFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>(); 261 *nextPtr = &physicalDeviceImage2DViewOf3DFeaturesEXT; 262 nextPtr = &physicalDeviceImage2DViewOf3DFeaturesEXT.pNext; 263 } 264#endif // defined(CTS_USES_VULKAN) 265 266 vk::VkPhysicalDeviceImageCompressionControlFeaturesEXT physicalDeviceImageCompressionControlFeaturesEXT; 267 deMemset(&physicalDeviceImageCompressionControlFeaturesEXT, 0, sizeof(physicalDeviceImageCompressionControlFeaturesEXT)); 268 269 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_compression_control") ) 270 { 271 physicalDeviceImageCompressionControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImageCompressionControlFeaturesEXT>(); 272 *nextPtr = &physicalDeviceImageCompressionControlFeaturesEXT; 273 nextPtr = &physicalDeviceImageCompressionControlFeaturesEXT.pNext; 274 } 275 276 vk::VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT physicalDeviceImageCompressionControlSwapchainFeaturesEXT; 277 deMemset(&physicalDeviceImageCompressionControlSwapchainFeaturesEXT, 0, sizeof(physicalDeviceImageCompressionControlSwapchainFeaturesEXT)); 278 279 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_compression_control_swapchain") ) 280 { 281 physicalDeviceImageCompressionControlSwapchainFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>(); 282 *nextPtr = &physicalDeviceImageCompressionControlSwapchainFeaturesEXT; 283 nextPtr = &physicalDeviceImageCompressionControlSwapchainFeaturesEXT.pNext; 284 } 285 286 vk::VkPhysicalDeviceImagelessFramebufferFeatures physicalDeviceImagelessFramebufferFeatures; 287 deMemset(&physicalDeviceImagelessFramebufferFeatures, 0, sizeof(physicalDeviceImagelessFramebufferFeatures)); 288 289 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_imageless_framebuffer") ) 290 { 291 physicalDeviceImagelessFramebufferFeatures.sType = getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures>(); 292 *nextPtr = &physicalDeviceImagelessFramebufferFeatures; 293 nextPtr = &physicalDeviceImagelessFramebufferFeatures.pNext; 294 } 295 296 vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT physicalDeviceIndexTypeUint8FeaturesEXT; 297 deMemset(&physicalDeviceIndexTypeUint8FeaturesEXT, 0, sizeof(physicalDeviceIndexTypeUint8FeaturesEXT)); 298 299 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_index_type_uint8") ) 300 { 301 physicalDeviceIndexTypeUint8FeaturesEXT.sType = getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(); 302 *nextPtr = &physicalDeviceIndexTypeUint8FeaturesEXT; 303 nextPtr = &physicalDeviceIndexTypeUint8FeaturesEXT.pNext; 304 } 305 306 vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT physicalDeviceInlineUniformBlockFeaturesEXT; 307 deMemset(&physicalDeviceInlineUniformBlockFeaturesEXT, 0, sizeof(physicalDeviceInlineUniformBlockFeaturesEXT)); 308 309 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_inline_uniform_block") ) 310 { 311 physicalDeviceInlineUniformBlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(); 312 *nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT; 313 nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT.pNext; 314 } 315 316 vk::VkPhysicalDeviceLegacyDitheringFeaturesEXT physicalDeviceLegacyDitheringFeaturesEXT; 317 deMemset(&physicalDeviceLegacyDitheringFeaturesEXT, 0, sizeof(physicalDeviceLegacyDitheringFeaturesEXT)); 318 319 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_legacy_dithering") ) 320 { 321 physicalDeviceLegacyDitheringFeaturesEXT.sType = getStructureType<VkPhysicalDeviceLegacyDitheringFeaturesEXT>(); 322 *nextPtr = &physicalDeviceLegacyDitheringFeaturesEXT; 323 nextPtr = &physicalDeviceLegacyDitheringFeaturesEXT.pNext; 324 } 325 326 vk::VkPhysicalDeviceLineRasterizationFeaturesEXT physicalDeviceLineRasterizationFeaturesEXT; 327 deMemset(&physicalDeviceLineRasterizationFeaturesEXT, 0, sizeof(physicalDeviceLineRasterizationFeaturesEXT)); 328 329 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_line_rasterization") ) 330 { 331 physicalDeviceLineRasterizationFeaturesEXT.sType = getStructureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>(); 332 *nextPtr = &physicalDeviceLineRasterizationFeaturesEXT; 333 nextPtr = &physicalDeviceLineRasterizationFeaturesEXT.pNext; 334 } 335 336 vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT physicalDeviceMemoryPriorityFeaturesEXT; 337 deMemset(&physicalDeviceMemoryPriorityFeaturesEXT, 0, sizeof(physicalDeviceMemoryPriorityFeaturesEXT)); 338 339 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_memory_priority") ) 340 { 341 physicalDeviceMemoryPriorityFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(); 342 *nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT; 343 nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT.pNext; 344 } 345 346#if defined(CTS_USES_VULKAN) 347 vk::VkPhysicalDeviceMeshShaderFeaturesEXT physicalDeviceMeshShaderFeaturesEXT; 348 deMemset(&physicalDeviceMeshShaderFeaturesEXT, 0, sizeof(physicalDeviceMeshShaderFeaturesEXT)); 349 350 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mesh_shader") ) 351 { 352 physicalDeviceMeshShaderFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMeshShaderFeaturesEXT>(); 353 *nextPtr = &physicalDeviceMeshShaderFeaturesEXT; 354 nextPtr = &physicalDeviceMeshShaderFeaturesEXT.pNext; 355 } 356#endif // defined(CTS_USES_VULKAN) 357 358 vk::VkPhysicalDeviceMultiDrawFeaturesEXT physicalDeviceMultiDrawFeaturesEXT; 359 deMemset(&physicalDeviceMultiDrawFeaturesEXT, 0, sizeof(physicalDeviceMultiDrawFeaturesEXT)); 360 361 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_multi_draw") ) 362 { 363 physicalDeviceMultiDrawFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMultiDrawFeaturesEXT>(); 364 *nextPtr = &physicalDeviceMultiDrawFeaturesEXT; 365 nextPtr = &physicalDeviceMultiDrawFeaturesEXT.pNext; 366 } 367 368 vk::VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; 369 deMemset(&physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, 0, sizeof(physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT)); 370 371 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_multisampled_render_to_single_sampled") ) 372 { 373 physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>(); 374 *nextPtr = &physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; 375 nextPtr = &physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.pNext; 376 } 377 378 vk::VkPhysicalDeviceMultiviewFeatures physicalDeviceMultiviewFeatures; 379 deMemset(&physicalDeviceMultiviewFeatures, 0, sizeof(physicalDeviceMultiviewFeatures)); 380 381 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_multiview") ) 382 { 383 physicalDeviceMultiviewFeatures.sType = getStructureType<VkPhysicalDeviceMultiviewFeatures>(); 384 *nextPtr = &physicalDeviceMultiviewFeatures; 385 nextPtr = &physicalDeviceMultiviewFeatures.pNext; 386 } 387 388 vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT physicalDeviceMutableDescriptorTypeFeaturesEXT; 389 deMemset(&physicalDeviceMutableDescriptorTypeFeaturesEXT, 0, sizeof(physicalDeviceMutableDescriptorTypeFeaturesEXT)); 390 391 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_VALVE_mutable_descriptor_type") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mutable_descriptor_type") ) 392 { 393 physicalDeviceMutableDescriptorTypeFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT>(); 394 *nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesEXT; 395 nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesEXT.pNext; 396 } 397 398 vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE physicalDeviceMutableDescriptorTypeFeaturesVALVE; 399 deMemset(&physicalDeviceMutableDescriptorTypeFeaturesVALVE, 0, sizeof(physicalDeviceMutableDescriptorTypeFeaturesVALVE)); 400 401 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_VALVE_mutable_descriptor_type") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mutable_descriptor_type") ) 402 { 403 physicalDeviceMutableDescriptorTypeFeaturesVALVE.sType = getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(); 404 *nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE; 405 nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE.pNext; 406 } 407 408#if defined(CTS_USES_VULKAN) 409 vk::VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT physicalDeviceNonSeamlessCubeMapFeaturesEXT; 410 deMemset(&physicalDeviceNonSeamlessCubeMapFeaturesEXT, 0, sizeof(physicalDeviceNonSeamlessCubeMapFeaturesEXT)); 411 412 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_non_seamless_cube_map") ) 413 { 414 physicalDeviceNonSeamlessCubeMapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT>(); 415 *nextPtr = &physicalDeviceNonSeamlessCubeMapFeaturesEXT; 416 nextPtr = &physicalDeviceNonSeamlessCubeMapFeaturesEXT.pNext; 417 } 418#endif // defined(CTS_USES_VULKAN) 419 420#if defined(CTS_USES_VULKAN) 421 vk::VkPhysicalDeviceOpacityMicromapFeaturesEXT physicalDeviceOpacityMicromapFeaturesEXT; 422 deMemset(&physicalDeviceOpacityMicromapFeaturesEXT, 0, sizeof(physicalDeviceOpacityMicromapFeaturesEXT)); 423 424 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_opacity_micromap") ) 425 { 426 physicalDeviceOpacityMicromapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceOpacityMicromapFeaturesEXT>(); 427 *nextPtr = &physicalDeviceOpacityMicromapFeaturesEXT; 428 nextPtr = &physicalDeviceOpacityMicromapFeaturesEXT.pNext; 429 } 430#endif // defined(CTS_USES_VULKAN) 431 432#if defined(CTS_USES_VULKAN) 433 vk::VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT physicalDevicePageableDeviceLocalMemoryFeaturesEXT; 434 deMemset(&physicalDevicePageableDeviceLocalMemoryFeaturesEXT, 0, sizeof(physicalDevicePageableDeviceLocalMemoryFeaturesEXT)); 435 436 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_pageable_device_local_memory") ) 437 { 438 physicalDevicePageableDeviceLocalMemoryFeaturesEXT.sType = getStructureType<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(); 439 *nextPtr = &physicalDevicePageableDeviceLocalMemoryFeaturesEXT; 440 nextPtr = &physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pNext; 441 } 442#endif // defined(CTS_USES_VULKAN) 443 444 vk::VkPhysicalDevicePerformanceQueryFeaturesKHR physicalDevicePerformanceQueryFeaturesKHR; 445 deMemset(&physicalDevicePerformanceQueryFeaturesKHR, 0, sizeof(physicalDevicePerformanceQueryFeaturesKHR)); 446 447 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_performance_query") ) 448 { 449 physicalDevicePerformanceQueryFeaturesKHR.sType = getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>(); 450 *nextPtr = &physicalDevicePerformanceQueryFeaturesKHR; 451 nextPtr = &physicalDevicePerformanceQueryFeaturesKHR.pNext; 452 } 453 454 vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR physicalDevicePipelineExecutablePropertiesFeaturesKHR; 455 deMemset(&physicalDevicePipelineExecutablePropertiesFeaturesKHR, 0, sizeof(physicalDevicePipelineExecutablePropertiesFeaturesKHR)); 456 457 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_pipeline_executable_properties") ) 458 { 459 physicalDevicePipelineExecutablePropertiesFeaturesKHR.sType = getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(); 460 *nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR; 461 nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR.pNext; 462 } 463 464 vk::VkPhysicalDevicePipelineProtectedAccessFeaturesEXT physicalDevicePipelineProtectedAccessFeaturesEXT; 465 deMemset(&physicalDevicePipelineProtectedAccessFeaturesEXT, 0, sizeof(physicalDevicePipelineProtectedAccessFeaturesEXT)); 466 467 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_pipeline_protected_access") ) 468 { 469 physicalDevicePipelineProtectedAccessFeaturesEXT.sType = getStructureType<VkPhysicalDevicePipelineProtectedAccessFeaturesEXT>(); 470 *nextPtr = &physicalDevicePipelineProtectedAccessFeaturesEXT; 471 nextPtr = &physicalDevicePipelineProtectedAccessFeaturesEXT.pNext; 472 } 473 474#if defined(CTS_USES_VULKAN) 475 vk::VkPhysicalDevicePresentIdFeaturesKHR physicalDevicePresentIdFeaturesKHR; 476 deMemset(&physicalDevicePresentIdFeaturesKHR, 0, sizeof(physicalDevicePresentIdFeaturesKHR)); 477 478 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_present_id") ) 479 { 480 physicalDevicePresentIdFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentIdFeaturesKHR>(); 481 *nextPtr = &physicalDevicePresentIdFeaturesKHR; 482 nextPtr = &physicalDevicePresentIdFeaturesKHR.pNext; 483 } 484#endif // defined(CTS_USES_VULKAN) 485 486#if defined(CTS_USES_VULKAN) 487 vk::VkPhysicalDevicePresentWaitFeaturesKHR physicalDevicePresentWaitFeaturesKHR; 488 deMemset(&physicalDevicePresentWaitFeaturesKHR, 0, sizeof(physicalDevicePresentWaitFeaturesKHR)); 489 490 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_present_wait") ) 491 { 492 physicalDevicePresentWaitFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentWaitFeaturesKHR>(); 493 *nextPtr = &physicalDevicePresentWaitFeaturesKHR; 494 nextPtr = &physicalDevicePresentWaitFeaturesKHR.pNext; 495 } 496#endif // defined(CTS_USES_VULKAN) 497 498#if defined(CTS_USES_VULKAN) 499 vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT physicalDevicePrimitiveTopologyListRestartFeaturesEXT; 500 deMemset(&physicalDevicePrimitiveTopologyListRestartFeaturesEXT, 0, sizeof(physicalDevicePrimitiveTopologyListRestartFeaturesEXT)); 501 502 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_primitive_topology_list_restart") ) 503 { 504 physicalDevicePrimitiveTopologyListRestartFeaturesEXT.sType = getStructureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(); 505 *nextPtr = &physicalDevicePrimitiveTopologyListRestartFeaturesEXT; 506 nextPtr = &physicalDevicePrimitiveTopologyListRestartFeaturesEXT.pNext; 507 } 508#endif // defined(CTS_USES_VULKAN) 509 510 vk::VkPhysicalDeviceRayQueryFeaturesKHR physicalDeviceRayQueryFeaturesKHR; 511 deMemset(&physicalDeviceRayQueryFeaturesKHR, 0, sizeof(physicalDeviceRayQueryFeaturesKHR)); 512 513 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_query") ) 514 { 515 physicalDeviceRayQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayQueryFeaturesKHR>(); 516 *nextPtr = &physicalDeviceRayQueryFeaturesKHR; 517 nextPtr = &physicalDeviceRayQueryFeaturesKHR.pNext; 518 } 519 520 vk::VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR physicalDeviceRayTracingMaintenance1FeaturesKHR; 521 deMemset(&physicalDeviceRayTracingMaintenance1FeaturesKHR, 0, sizeof(physicalDeviceRayTracingMaintenance1FeaturesKHR)); 522 523 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_tracing_maintenance1") ) 524 { 525 physicalDeviceRayTracingMaintenance1FeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>(); 526 *nextPtr = &physicalDeviceRayTracingMaintenance1FeaturesKHR; 527 nextPtr = &physicalDeviceRayTracingMaintenance1FeaturesKHR.pNext; 528 } 529 530 vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR physicalDeviceRayTracingPipelineFeaturesKHR; 531 deMemset(&physicalDeviceRayTracingPipelineFeaturesKHR, 0, sizeof(physicalDeviceRayTracingPipelineFeaturesKHR)); 532 533 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_tracing_pipeline") ) 534 { 535 physicalDeviceRayTracingPipelineFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(); 536 *nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR; 537 nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR.pNext; 538 } 539 540 vk::VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR physicalDeviceSamplerYcbcrConversionFeaturesKHR; 541 deMemset(&physicalDeviceSamplerYcbcrConversionFeaturesKHR, 0, sizeof(physicalDeviceSamplerYcbcrConversionFeaturesKHR)); 542 543 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_sampler_ycbcr_conversion") ) 544 { 545 physicalDeviceSamplerYcbcrConversionFeaturesKHR.sType = getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR>(); 546 *nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR; 547 nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR.pNext; 548 } 549 550 vk::VkPhysicalDeviceScalarBlockLayoutFeatures physicalDeviceScalarBlockLayoutFeatures; 551 deMemset(&physicalDeviceScalarBlockLayoutFeatures, 0, sizeof(physicalDeviceScalarBlockLayoutFeatures)); 552 553 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_scalar_block_layout") ) 554 { 555 physicalDeviceScalarBlockLayoutFeatures.sType = getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures>(); 556 *nextPtr = &physicalDeviceScalarBlockLayoutFeatures; 557 nextPtr = &physicalDeviceScalarBlockLayoutFeatures.pNext; 558 } 559 560 vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures physicalDeviceSeparateDepthStencilLayoutsFeatures; 561 deMemset(&physicalDeviceSeparateDepthStencilLayoutsFeatures, 0, sizeof(physicalDeviceSeparateDepthStencilLayoutsFeatures)); 562 563 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_separate_depth_stencil_layouts") ) 564 { 565 physicalDeviceSeparateDepthStencilLayoutsFeatures.sType = getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(); 566 *nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeatures; 567 nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeatures.pNext; 568 } 569 570#if defined(CTS_USES_VULKAN) 571 vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT physicalDeviceShaderAtomicFloat2FeaturesEXT; 572 deMemset(&physicalDeviceShaderAtomicFloat2FeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloat2FeaturesEXT)); 573 574 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_atomic_float2") ) 575 { 576 physicalDeviceShaderAtomicFloat2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(); 577 *nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT; 578 nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext; 579 } 580#endif // defined(CTS_USES_VULKAN) 581 582 vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT physicalDeviceShaderAtomicFloatFeaturesEXT; 583 deMemset(&physicalDeviceShaderAtomicFloatFeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloatFeaturesEXT)); 584 585 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_atomic_float") ) 586 { 587 physicalDeviceShaderAtomicFloatFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(); 588 *nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT; 589 nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT.pNext; 590 } 591 592 vk::VkPhysicalDeviceShaderAtomicInt64Features physicalDeviceShaderAtomicInt64Features; 593 deMemset(&physicalDeviceShaderAtomicInt64Features, 0, sizeof(physicalDeviceShaderAtomicInt64Features)); 594 595 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_atomic_int64") ) 596 { 597 physicalDeviceShaderAtomicInt64Features.sType = getStructureType<VkPhysicalDeviceShaderAtomicInt64Features>(); 598 *nextPtr = &physicalDeviceShaderAtomicInt64Features; 599 nextPtr = &physicalDeviceShaderAtomicInt64Features.pNext; 600 } 601 602 vk::VkPhysicalDeviceShaderClockFeaturesKHR physicalDeviceShaderClockFeaturesKHR; 603 deMemset(&physicalDeviceShaderClockFeaturesKHR, 0, sizeof(physicalDeviceShaderClockFeaturesKHR)); 604 605 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_clock") ) 606 { 607 physicalDeviceShaderClockFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR>(); 608 *nextPtr = &physicalDeviceShaderClockFeaturesKHR; 609 nextPtr = &physicalDeviceShaderClockFeaturesKHR.pNext; 610 } 611 612 vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; 613 deMemset(&physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, 0, sizeof(physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)); 614 615 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_demote_to_helper_invocation") ) 616 { 617 physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(); 618 *nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; 619 nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.pNext; 620 } 621 622 vk::VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; 623 deMemset(&physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, 0, sizeof(physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)); 624 625 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_AMD_shader_early_and_late_fragment_tests") ) 626 { 627 physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.sType = getStructureType<VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>(); 628 *nextPtr = &physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; 629 nextPtr = &physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.pNext; 630 } 631 632 vk::VkPhysicalDeviceShaderFloat16Int8Features physicalDeviceShaderFloat16Int8Features; 633 deMemset(&physicalDeviceShaderFloat16Int8Features, 0, sizeof(physicalDeviceShaderFloat16Int8Features)); 634 635 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_float16_int8") ) 636 { 637 physicalDeviceShaderFloat16Int8Features.sType = getStructureType<VkPhysicalDeviceShaderFloat16Int8Features>(); 638 *nextPtr = &physicalDeviceShaderFloat16Int8Features; 639 nextPtr = &physicalDeviceShaderFloat16Int8Features.pNext; 640 } 641 642 vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT physicalDeviceShaderImageAtomicInt64FeaturesEXT; 643 deMemset(&physicalDeviceShaderImageAtomicInt64FeaturesEXT, 0, sizeof(physicalDeviceShaderImageAtomicInt64FeaturesEXT)); 644 645 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_image_atomic_int64") ) 646 { 647 physicalDeviceShaderImageAtomicInt64FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(); 648 *nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT; 649 nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT.pNext; 650 } 651 652#if defined(CTS_USES_VULKAN) 653 vk::VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR physicalDeviceShaderIntegerDotProductFeaturesKHR; 654 deMemset(&physicalDeviceShaderIntegerDotProductFeaturesKHR, 0, sizeof(physicalDeviceShaderIntegerDotProductFeaturesKHR)); 655 656 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_integer_dot_product") ) 657 { 658 physicalDeviceShaderIntegerDotProductFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>(); 659 *nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR; 660 nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR.pNext; 661 } 662#endif // defined(CTS_USES_VULKAN) 663 664 vk::VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT physicalDeviceShaderModuleIdentifierFeaturesEXT; 665 deMemset(&physicalDeviceShaderModuleIdentifierFeaturesEXT, 0, sizeof(physicalDeviceShaderModuleIdentifierFeaturesEXT)); 666 667 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_module_identifier") ) 668 { 669 physicalDeviceShaderModuleIdentifierFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT>(); 670 *nextPtr = &physicalDeviceShaderModuleIdentifierFeaturesEXT; 671 nextPtr = &physicalDeviceShaderModuleIdentifierFeaturesEXT.pNext; 672 } 673 674 vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures physicalDeviceShaderSubgroupExtendedTypesFeatures; 675 deMemset(&physicalDeviceShaderSubgroupExtendedTypesFeatures, 0, sizeof(physicalDeviceShaderSubgroupExtendedTypesFeatures)); 676 677 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_subgroup_extended_types") ) 678 { 679 physicalDeviceShaderSubgroupExtendedTypesFeatures.sType = getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(); 680 *nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeatures; 681 nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeatures.pNext; 682 } 683 684 vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; 685 deMemset(&physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)); 686 687 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_subgroup_uniform_control_flow") ) 688 { 689 physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(); 690 *nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; 691 nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.pNext; 692 } 693 694 vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR physicalDeviceShaderTerminateInvocationFeaturesKHR; 695 deMemset(&physicalDeviceShaderTerminateInvocationFeaturesKHR, 0, sizeof(physicalDeviceShaderTerminateInvocationFeaturesKHR)); 696 697 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_terminate_invocation") ) 698 { 699 physicalDeviceShaderTerminateInvocationFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>(); 700 *nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR; 701 nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR.pNext; 702 } 703 704 vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT physicalDeviceSubgroupSizeControlFeaturesEXT; 705 deMemset(&physicalDeviceSubgroupSizeControlFeaturesEXT, 0, sizeof(physicalDeviceSubgroupSizeControlFeaturesEXT)); 706 707 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_subgroup_size_control") ) 708 { 709 physicalDeviceSubgroupSizeControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(); 710 *nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT; 711 nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT.pNext; 712 } 713 714 vk::VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT physicalDeviceSubpassMergeFeedbackFeaturesEXT; 715 deMemset(&physicalDeviceSubpassMergeFeedbackFeaturesEXT, 0, sizeof(physicalDeviceSubpassMergeFeedbackFeaturesEXT)); 716 717 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_subpass_merge_feedback") ) 718 { 719 physicalDeviceSubpassMergeFeedbackFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>(); 720 *nextPtr = &physicalDeviceSubpassMergeFeedbackFeaturesEXT; 721 nextPtr = &physicalDeviceSubpassMergeFeedbackFeaturesEXT.pNext; 722 } 723 724 vk::VkPhysicalDeviceSynchronization2FeaturesKHR physicalDeviceSynchronization2FeaturesKHR; 725 deMemset(&physicalDeviceSynchronization2FeaturesKHR, 0, sizeof(physicalDeviceSynchronization2FeaturesKHR)); 726 727 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_synchronization2") ) 728 { 729 physicalDeviceSynchronization2FeaturesKHR.sType = getStructureType<VkPhysicalDeviceSynchronization2FeaturesKHR>(); 730 *nextPtr = &physicalDeviceSynchronization2FeaturesKHR; 731 nextPtr = &physicalDeviceSynchronization2FeaturesKHR.pNext; 732 } 733 734 vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT physicalDeviceTexelBufferAlignmentFeaturesEXT; 735 deMemset(&physicalDeviceTexelBufferAlignmentFeaturesEXT, 0, sizeof(physicalDeviceTexelBufferAlignmentFeaturesEXT)); 736 737 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_texel_buffer_alignment") ) 738 { 739 physicalDeviceTexelBufferAlignmentFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(); 740 *nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT; 741 nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT.pNext; 742 } 743 744 vk::VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT physicalDeviceTextureCompressionASTCHDRFeaturesEXT; 745 deMemset(&physicalDeviceTextureCompressionASTCHDRFeaturesEXT, 0, sizeof(physicalDeviceTextureCompressionASTCHDRFeaturesEXT)); 746 747 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_texture_compression_astc_hdr") ) 748 { 749 physicalDeviceTextureCompressionASTCHDRFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(); 750 *nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT; 751 nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT.pNext; 752 } 753 754#if defined(CTS_USES_VULKAN) 755 vk::VkPhysicalDeviceTimelineSemaphoreFeatures physicalDeviceTimelineSemaphoreFeatures; 756 deMemset(&physicalDeviceTimelineSemaphoreFeatures, 0, sizeof(physicalDeviceTimelineSemaphoreFeatures)); 757 758 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_timeline_semaphore") ) 759 { 760 physicalDeviceTimelineSemaphoreFeatures.sType = getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures>(); 761 *nextPtr = &physicalDeviceTimelineSemaphoreFeatures; 762 nextPtr = &physicalDeviceTimelineSemaphoreFeatures.pNext; 763 } 764#endif // defined(CTS_USES_VULKAN) 765 766 vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT physicalDeviceTransformFeedbackFeaturesEXT; 767 deMemset(&physicalDeviceTransformFeedbackFeaturesEXT, 0, sizeof(physicalDeviceTransformFeedbackFeaturesEXT)); 768 769 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_transform_feedback") ) 770 { 771 physicalDeviceTransformFeedbackFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(); 772 *nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT; 773 nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT.pNext; 774 } 775 776 vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures physicalDeviceUniformBufferStandardLayoutFeatures; 777 deMemset(&physicalDeviceUniformBufferStandardLayoutFeatures, 0, sizeof(physicalDeviceUniformBufferStandardLayoutFeatures)); 778 779 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_uniform_buffer_standard_layout") ) 780 { 781 physicalDeviceUniformBufferStandardLayoutFeatures.sType = getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(); 782 *nextPtr = &physicalDeviceUniformBufferStandardLayoutFeatures; 783 nextPtr = &physicalDeviceUniformBufferStandardLayoutFeatures.pNext; 784 } 785 786 vk::VkPhysicalDeviceVariablePointersFeatures physicalDeviceVariablePointersFeatures; 787 deMemset(&physicalDeviceVariablePointersFeatures, 0, sizeof(physicalDeviceVariablePointersFeatures)); 788 789 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_variable_pointers") ) 790 { 791 physicalDeviceVariablePointersFeatures.sType = getStructureType<VkPhysicalDeviceVariablePointersFeatures>(); 792 *nextPtr = &physicalDeviceVariablePointersFeatures; 793 nextPtr = &physicalDeviceVariablePointersFeatures.pNext; 794 } 795 796 vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT physicalDeviceVertexAttributeDivisorFeaturesEXT; 797 deMemset(&physicalDeviceVertexAttributeDivisorFeaturesEXT, 0, sizeof(physicalDeviceVertexAttributeDivisorFeaturesEXT)); 798 799 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_vertex_attribute_divisor") ) 800 { 801 physicalDeviceVertexAttributeDivisorFeaturesEXT.sType = getStructureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(); 802 *nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesEXT; 803 nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesEXT.pNext; 804 } 805 806 vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT physicalDeviceVertexInputDynamicStateFeaturesEXT; 807 deMemset(&physicalDeviceVertexInputDynamicStateFeaturesEXT, 0, sizeof(physicalDeviceVertexInputDynamicStateFeaturesEXT)); 808 809 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_vertex_input_dynamic_state") ) 810 { 811 physicalDeviceVertexInputDynamicStateFeaturesEXT.sType = getStructureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(); 812 *nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT; 813 nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT.pNext; 814 } 815 816#if defined(CTS_USES_VULKAN) 817 vk::VkPhysicalDeviceVulkan11Features physicalDeviceVulkan11Features; 818 deMemset(&physicalDeviceVulkan11Features, 0, sizeof(physicalDeviceVulkan11Features)); 819 820 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 821 { 822 physicalDeviceVulkan11Features.sType = getStructureType<VkPhysicalDeviceVulkan11Features>(); 823 *nextPtr = &physicalDeviceVulkan11Features; 824 nextPtr = &physicalDeviceVulkan11Features.pNext; 825 } 826#endif // defined(CTS_USES_VULKAN) 827 828 vk::VkPhysicalDeviceVulkan12Features physicalDeviceVulkan12Features; 829 deMemset(&physicalDeviceVulkan12Features, 0, sizeof(physicalDeviceVulkan12Features)); 830 831 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) || context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 832 { 833 physicalDeviceVulkan12Features.sType = getStructureType<VkPhysicalDeviceVulkan12Features>(); 834 *nextPtr = &physicalDeviceVulkan12Features; 835 nextPtr = &physicalDeviceVulkan12Features.pNext; 836 } 837 838#if defined(CTS_USES_VULKAN) 839 vk::VkPhysicalDeviceVulkan13Features physicalDeviceVulkan13Features; 840 deMemset(&physicalDeviceVulkan13Features, 0, sizeof(physicalDeviceVulkan13Features)); 841 842 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 843 { 844 physicalDeviceVulkan13Features.sType = getStructureType<VkPhysicalDeviceVulkan13Features>(); 845 *nextPtr = &physicalDeviceVulkan13Features; 846 nextPtr = &physicalDeviceVulkan13Features.pNext; 847 } 848#endif // defined(CTS_USES_VULKAN) 849 850 vk::VkPhysicalDeviceVulkanMemoryModelFeatures physicalDeviceVulkanMemoryModelFeatures; 851 deMemset(&physicalDeviceVulkanMemoryModelFeatures, 0, sizeof(physicalDeviceVulkanMemoryModelFeatures)); 852 853 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_vulkan_memory_model") ) 854 { 855 physicalDeviceVulkanMemoryModelFeatures.sType = getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures>(); 856 *nextPtr = &physicalDeviceVulkanMemoryModelFeatures; 857 nextPtr = &physicalDeviceVulkanMemoryModelFeatures.pNext; 858 } 859 860 vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; 861 deMemset(&physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, 0, sizeof(physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)); 862 863 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_workgroup_memory_explicit_layout") ) 864 { 865 physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType = getStructureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(); 866 *nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; 867 nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.pNext; 868 } 869 870 vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT physicalDeviceYcbcr2Plane444FormatsFeaturesEXT; 871 deMemset(&physicalDeviceYcbcr2Plane444FormatsFeaturesEXT, 0, sizeof(physicalDeviceYcbcr2Plane444FormatsFeaturesEXT)); 872 873 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_ycbcr_2plane_444_formats") ) 874 { 875 physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(); 876 *nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT; 877 nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext; 878 } 879 880 vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT physicalDeviceYcbcrImageArraysFeaturesEXT; 881 deMemset(&physicalDeviceYcbcrImageArraysFeaturesEXT, 0, sizeof(physicalDeviceYcbcrImageArraysFeaturesEXT)); 882 883 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_ycbcr_image_arrays") ) 884 { 885 physicalDeviceYcbcrImageArraysFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(); 886 *nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT; 887 nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT.pNext; 888 } 889 890 vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; 891 deMemset(&physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR, 0, sizeof(physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)); 892 893 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_zero_initialize_workgroup_memory") ) 894 { 895 physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>(); 896 *nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; 897 nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.pNext; 898 } 899 900 context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &coreFeatures); 901 bool result = true; 902 903 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_AMD_shader_early_and_late_fragment_tests")) ) 904 { 905 if ( physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.shaderEarlyAndLateFragmentTests == VK_FALSE ) 906 { 907 log << tcu::TestLog::Message << "Mandatory feature shaderEarlyAndLateFragmentTests not supported" << tcu::TestLog::EndMessage; 908 result = false; 909 } 910 } 911 912 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) ) 913 { 914 if ( physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 == VK_FALSE ) 915 { 916 log << tcu::TestLog::Message << "Mandatory feature formatA4R4G4B4 not supported" << tcu::TestLog::EndMessage; 917 result = false; 918 } 919 } 920 921#if defined(CTS_USES_VULKAN) 922 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_attachment_feedback_loop_layout")) ) 923 { 924 if ( physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.attachmentFeedbackLoopLayout == VK_FALSE ) 925 { 926 log << tcu::TestLog::Message << "Mandatory feature attachmentFeedbackLoopLayout not supported" << tcu::TestLog::EndMessage; 927 result = false; 928 } 929 } 930#endif // defined(CTS_USES_VULKAN) 931 932#if defined(CTS_USES_VULKAN) 933 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_border_color_swizzle")) ) 934 { 935 if ( physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle == VK_FALSE ) 936 { 937 log << tcu::TestLog::Message << "Mandatory feature borderColorSwizzle not supported" << tcu::TestLog::EndMessage; 938 result = false; 939 } 940 } 941#endif // defined(CTS_USES_VULKAN) 942 943 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) ) 944 { 945 if ( physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable == VK_FALSE ) 946 { 947 log << tcu::TestLog::Message << "Mandatory feature colorWriteEnable not supported" << tcu::TestLog::EndMessage; 948 result = false; 949 } 950 } 951 952 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) ) 953 { 954 if ( physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering == VK_FALSE ) 955 { 956 log << tcu::TestLog::Message << "Mandatory feature conditionalRendering not supported" << tcu::TestLog::EndMessage; 957 result = false; 958 } 959 } 960 961 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clamp_zero_one")) ) 962 { 963 if ( physicalDeviceDepthClampZeroOneFeaturesEXT.depthClampZeroOne == VK_FALSE ) 964 { 965 log << tcu::TestLog::Message << "Mandatory feature depthClampZeroOne not supported" << tcu::TestLog::EndMessage; 966 result = false; 967 } 968 } 969 970 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_control")) ) 971 { 972 if ( physicalDeviceDepthClipControlFeaturesEXT.depthClipControl == VK_FALSE ) 973 { 974 log << tcu::TestLog::Message << "Mandatory feature depthClipControl not supported" << tcu::TestLog::EndMessage; 975 result = false; 976 } 977 } 978 979 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) ) 980 { 981 if ( physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable == VK_FALSE ) 982 { 983 log << tcu::TestLog::Message << "Mandatory feature depthClipEnable not supported" << tcu::TestLog::EndMessage; 984 result = false; 985 } 986 } 987 988 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_buffer")) ) 989 { 990 if ( physicalDeviceDescriptorBufferFeaturesEXT.descriptorBuffer == VK_FALSE ) 991 { 992 log << tcu::TestLog::Message << "Mandatory feature descriptorBuffer not supported" << tcu::TestLog::EndMessage; 993 result = false; 994 } 995 } 996 997 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 998 { 999 if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 1000 { 1001 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1002 result = false; 1003 } 1004 } 1005 1006 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1007 { 1008 if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 1009 { 1010 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1011 result = false; 1012 } 1013 } 1014 1015 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1016 { 1017 if ( physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 1018 { 1019 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1020 result = false; 1021 } 1022 } 1023 1024 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1025 { 1026 if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 1027 { 1028 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1029 result = false; 1030 } 1031 } 1032 1033 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1034 { 1035 if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 1036 { 1037 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1038 result = false; 1039 } 1040 } 1041 1042 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1043 { 1044 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 1045 { 1046 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1047 result = false; 1048 } 1049 } 1050 1051 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1052 { 1053 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 1054 { 1055 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1056 result = false; 1057 } 1058 } 1059 1060 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1061 { 1062 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 1063 { 1064 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1065 result = false; 1066 } 1067 } 1068 1069 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1070 { 1071 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 1072 { 1073 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1074 result = false; 1075 } 1076 } 1077 1078 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1079 { 1080 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 1081 { 1082 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1083 result = false; 1084 } 1085 } 1086 1087 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1088 { 1089 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 1090 { 1091 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 1092 result = false; 1093 } 1094 } 1095 1096 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1097 { 1098 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound == VK_FALSE ) 1099 { 1100 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 1101 result = false; 1102 } 1103 } 1104 1105 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1106 { 1107 if ( physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray == VK_FALSE ) 1108 { 1109 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 1110 result = false; 1111 } 1112 } 1113 1114 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1115 { 1116 if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 1117 { 1118 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1119 result = false; 1120 } 1121 } 1122 1123 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1124 { 1125 if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 1126 { 1127 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1128 result = false; 1129 } 1130 } 1131 1132 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1133 { 1134 if ( physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 1135 { 1136 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1137 result = false; 1138 } 1139 } 1140 1141 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1142 { 1143 if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 1144 { 1145 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1146 result = false; 1147 } 1148 } 1149 1150 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1151 { 1152 if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 1153 { 1154 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1155 result = false; 1156 } 1157 } 1158 1159 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1160 { 1161 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 1162 { 1163 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1164 result = false; 1165 } 1166 } 1167 1168 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1169 { 1170 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 1171 { 1172 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1173 result = false; 1174 } 1175 } 1176 1177 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1178 { 1179 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 1180 { 1181 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1182 result = false; 1183 } 1184 } 1185 1186 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1187 { 1188 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 1189 { 1190 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1191 result = false; 1192 } 1193 } 1194 1195 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1196 { 1197 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 1198 { 1199 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1200 result = false; 1201 } 1202 } 1203 1204 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1205 { 1206 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 1207 { 1208 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 1209 result = false; 1210 } 1211 } 1212 1213 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1214 { 1215 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound == VK_FALSE ) 1216 { 1217 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 1218 result = false; 1219 } 1220 } 1221 1222 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1223 { 1224 if ( physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray == VK_FALSE ) 1225 { 1226 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 1227 result = false; 1228 } 1229 } 1230 1231 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1232 { 1233 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 1234 { 1235 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1236 result = false; 1237 } 1238 } 1239 1240 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1241 { 1242 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 1243 { 1244 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1245 result = false; 1246 } 1247 } 1248 1249 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1250 { 1251 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 1252 { 1253 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1254 result = false; 1255 } 1256 } 1257 1258 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1259 { 1260 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 1261 { 1262 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1263 result = false; 1264 } 1265 } 1266 1267 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_device_address_binding_report")) ) 1268 { 1269 if ( physicalDeviceAddressBindingReportFeaturesEXT.reportAddressBinding == VK_FALSE ) 1270 { 1271 log << tcu::TestLog::Message << "Mandatory feature reportAddressBinding not supported" << tcu::TestLog::EndMessage; 1272 result = false; 1273 } 1274 } 1275 1276 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_device_fault")) ) 1277 { 1278 if ( physicalDeviceFaultFeaturesEXT.deviceFault == VK_FALSE ) 1279 { 1280 log << tcu::TestLog::Message << "Mandatory feature deviceFault not supported" << tcu::TestLog::EndMessage; 1281 result = false; 1282 } 1283 } 1284 1285 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) ) 1286 { 1287 if ( physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 == VK_FALSE ) 1288 { 1289 log << tcu::TestLog::Message << "Mandatory feature extendedDynamicState2 not supported" << tcu::TestLog::EndMessage; 1290 result = false; 1291 } 1292 } 1293 1294 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_density_map")) ) 1295 { 1296 if ( physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap == VK_FALSE ) 1297 { 1298 log << tcu::TestLog::Message << "Mandatory feature fragmentDensityMap not supported" << tcu::TestLog::EndMessage; 1299 result = false; 1300 } 1301 } 1302 1303 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) ) 1304 { 1305 if ( ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock == VK_FALSE ) ) 1306 { 1307 log << tcu::TestLog::Message << "Mandatory feature fragmentShaderSampleInterlock or fragmentShaderPixelInterlock or fragmentShaderShadingRateInterlock not supported" << tcu::TestLog::EndMessage; 1308 result = false; 1309 } 1310 } 1311 1312 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) ) 1313 { 1314 if ( physicalDeviceHostQueryResetFeatures.hostQueryReset == VK_FALSE ) 1315 { 1316 log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage; 1317 result = false; 1318 } 1319 } 1320 1321#if defined(CTS_USES_VULKAN) 1322 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_2d_view_of_3d")) ) 1323 { 1324 if ( physicalDeviceImage2DViewOf3DFeaturesEXT.image2DViewOf3D == VK_FALSE ) 1325 { 1326 log << tcu::TestLog::Message << "Mandatory feature image2DViewOf3D not supported" << tcu::TestLog::EndMessage; 1327 result = false; 1328 } 1329 } 1330#endif // defined(CTS_USES_VULKAN) 1331 1332 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control")) ) 1333 { 1334 if ( physicalDeviceImageCompressionControlFeaturesEXT.imageCompressionControl == VK_FALSE ) 1335 { 1336 log << tcu::TestLog::Message << "Mandatory feature imageCompressionControl not supported" << tcu::TestLog::EndMessage; 1337 result = false; 1338 } 1339 } 1340 1341 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control_swapchain")) ) 1342 { 1343 if ( physicalDeviceImageCompressionControlSwapchainFeaturesEXT.imageCompressionControlSwapchain == VK_FALSE ) 1344 { 1345 log << tcu::TestLog::Message << "Mandatory feature imageCompressionControlSwapchain not supported" << tcu::TestLog::EndMessage; 1346 result = false; 1347 } 1348 } 1349 1350 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) ) 1351 { 1352 if ( physicalDeviceIndexTypeUint8FeaturesEXT.indexTypeUint8 == VK_FALSE ) 1353 { 1354 log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage; 1355 result = false; 1356 } 1357 } 1358 1359 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) ) 1360 { 1361 if ( physicalDeviceInlineUniformBlockFeaturesEXT.inlineUniformBlock == VK_FALSE ) 1362 { 1363 log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage; 1364 result = false; 1365 } 1366 } 1367 1368 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1369 { 1370 if ( physicalDeviceInlineUniformBlockFeaturesEXT.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE ) 1371 { 1372 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1373 result = false; 1374 } 1375 } 1376 1377 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_legacy_dithering")) ) 1378 { 1379 if ( physicalDeviceLegacyDitheringFeaturesEXT.legacyDithering == VK_FALSE ) 1380 { 1381 log << tcu::TestLog::Message << "Mandatory feature legacyDithering not supported" << tcu::TestLog::EndMessage; 1382 result = false; 1383 } 1384 } 1385 1386 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) ) 1387 { 1388 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 ) ) 1389 { 1390 log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage; 1391 result = false; 1392 } 1393 } 1394 1395 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_memory_priority")) ) 1396 { 1397 if ( physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority == VK_FALSE ) 1398 { 1399 log << tcu::TestLog::Message << "Mandatory feature memoryPriority not supported" << tcu::TestLog::EndMessage; 1400 result = false; 1401 } 1402 } 1403 1404#if defined(CTS_USES_VULKAN) 1405 if ( physicalDeviceMeshShaderFeaturesEXT.primitiveFragmentShadingRateMeshShader ) 1406 { 1407 if ( physicalDeviceFragmentShadingRateFeaturesKHR.primitiveFragmentShadingRate == VK_FALSE ) 1408 { 1409 log << tcu::TestLog::Message << "Mandatory feature primitiveFragmentShadingRate not supported" << tcu::TestLog::EndMessage; 1410 result = false; 1411 } 1412 } 1413#endif // defined(CTS_USES_VULKAN) 1414 1415#if defined(CTS_USES_VULKAN) 1416 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_mesh_shader")) ) 1417 { 1418 if ( ( physicalDeviceMeshShaderFeaturesEXT.meshShader == VK_FALSE ) && ( physicalDeviceMeshShaderFeaturesEXT.taskShader == VK_FALSE ) ) 1419 { 1420 log << tcu::TestLog::Message << "Mandatory feature meshShader or taskShader not supported" << tcu::TestLog::EndMessage; 1421 result = false; 1422 } 1423 } 1424#endif // defined(CTS_USES_VULKAN) 1425 1426 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) ) 1427 { 1428 if ( physicalDeviceMultiDrawFeaturesEXT.multiDraw == VK_FALSE ) 1429 { 1430 log << tcu::TestLog::Message << "Mandatory feature multiDraw not supported" << tcu::TestLog::EndMessage; 1431 result = false; 1432 } 1433 } 1434 1435 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_multisampled_render_to_single_sampled")) ) 1436 { 1437 if ( physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.multisampledRenderToSingleSampled == VK_FALSE ) 1438 { 1439 log << tcu::TestLog::Message << "Mandatory feature multisampledRenderToSingleSampled not supported" << tcu::TestLog::EndMessage; 1440 result = false; 1441 } 1442 } 1443 1444 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_mutable_descriptor_type")) ) 1445 { 1446 if ( physicalDeviceMutableDescriptorTypeFeaturesEXT.mutableDescriptorType == VK_FALSE ) 1447 { 1448 log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; 1449 result = false; 1450 } 1451 } 1452 1453#if defined(CTS_USES_VULKAN) 1454 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_non_seamless_cube_map")) ) 1455 { 1456 if ( physicalDeviceNonSeamlessCubeMapFeaturesEXT.nonSeamlessCubeMap == VK_FALSE ) 1457 { 1458 log << tcu::TestLog::Message << "Mandatory feature nonSeamlessCubeMap not supported" << tcu::TestLog::EndMessage; 1459 result = false; 1460 } 1461 } 1462#endif // defined(CTS_USES_VULKAN) 1463 1464#if defined(CTS_USES_VULKAN) 1465 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_opacity_micromap")) ) 1466 { 1467 if ( physicalDeviceOpacityMicromapFeaturesEXT.micromap == VK_FALSE ) 1468 { 1469 log << tcu::TestLog::Message << "Mandatory feature micromap not supported" << tcu::TestLog::EndMessage; 1470 result = false; 1471 } 1472 } 1473#endif // defined(CTS_USES_VULKAN) 1474 1475#if defined(CTS_USES_VULKAN) 1476 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pageable_device_local_memory")) ) 1477 { 1478 if ( physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pageableDeviceLocalMemory == VK_FALSE ) 1479 { 1480 log << tcu::TestLog::Message << "Mandatory feature pageableDeviceLocalMemory not supported" << tcu::TestLog::EndMessage; 1481 result = false; 1482 } 1483 } 1484#endif // defined(CTS_USES_VULKAN) 1485 1486 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_protected_access")) ) 1487 { 1488 if ( physicalDevicePipelineProtectedAccessFeaturesEXT.pipelineProtectedAccess == VK_FALSE ) 1489 { 1490 log << tcu::TestLog::Message << "Mandatory feature pipelineProtectedAccess not supported" << tcu::TestLog::EndMessage; 1491 result = false; 1492 } 1493 } 1494 1495#if defined(CTS_USES_VULKAN) 1496 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_primitive_topology_list_restart")) ) 1497 { 1498 if ( physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart == VK_FALSE ) 1499 { 1500 log << tcu::TestLog::Message << "Mandatory feature primitiveTopologyListRestart not supported" << tcu::TestLog::EndMessage; 1501 result = false; 1502 } 1503 } 1504#endif // defined(CTS_USES_VULKAN) 1505 1506 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) ) 1507 { 1508 if ( physicalDeviceScalarBlockLayoutFeatures.scalarBlockLayout == VK_FALSE ) 1509 { 1510 log << tcu::TestLog::Message << "Mandatory feature scalarBlockLayout not supported" << tcu::TestLog::EndMessage; 1511 result = false; 1512 } 1513 } 1514 1515 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ) 1516 { 1517 if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE ) 1518 { 1519 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage; 1520 result = false; 1521 } 1522 } 1523 1524 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ) 1525 { 1526 if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE ) 1527 { 1528 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage; 1529 result = false; 1530 } 1531 } 1532 1533#if defined(CTS_USES_VULKAN) 1534 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax ) 1535 { 1536 if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE ) 1537 { 1538 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage; 1539 result = false; 1540 } 1541 } 1542#endif // defined(CTS_USES_VULKAN) 1543 1544 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) ) 1545 { 1546 if ( physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.shaderDemoteToHelperInvocation == VK_FALSE ) 1547 { 1548 log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; 1549 result = false; 1550 } 1551 } 1552 1553 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 1554 { 1555 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 1556 { 1557 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 1558 result = false; 1559 } 1560 } 1561 1562 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 1563 { 1564 if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) 1565 { 1566 log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; 1567 result = false; 1568 } 1569 } 1570 1571 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ) 1572 { 1573 if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) 1574 { 1575 log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; 1576 result = false; 1577 } 1578 } 1579 1580 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_module_identifier")) ) 1581 { 1582 if ( physicalDeviceShaderModuleIdentifierFeaturesEXT.shaderModuleIdentifier == VK_FALSE ) 1583 { 1584 log << tcu::TestLog::Message << "Mandatory feature shaderModuleIdentifier not supported" << tcu::TestLog::EndMessage; 1585 result = false; 1586 } 1587 } 1588 1589 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 1590 { 1591 if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE ) 1592 { 1593 log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; 1594 result = false; 1595 } 1596 } 1597 1598 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 1599 { 1600 if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE ) 1601 { 1602 log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; 1603 result = false; 1604 } 1605 } 1606 1607 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subpass_merge_feedback")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_create_renderpass2")) ) 1608 { 1609 if ( physicalDeviceSubpassMergeFeedbackFeaturesEXT.subpassMergeFeedback == VK_FALSE ) 1610 { 1611 log << tcu::TestLog::Message << "Mandatory feature subpassMergeFeedback not supported" << tcu::TestLog::EndMessage; 1612 result = false; 1613 } 1614 } 1615 1616 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) ) 1617 { 1618 if ( physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment == VK_FALSE ) 1619 { 1620 log << tcu::TestLog::Message << "Mandatory feature texelBufferAlignment not supported" << tcu::TestLog::EndMessage; 1621 result = false; 1622 } 1623 } 1624 1625 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) ) 1626 { 1627 if ( physicalDeviceTextureCompressionASTCHDRFeaturesEXT.textureCompressionASTC_HDR == VK_FALSE ) 1628 { 1629 log << tcu::TestLog::Message << "Mandatory feature textureCompressionASTC_HDR not supported" << tcu::TestLog::EndMessage; 1630 result = false; 1631 } 1632 } 1633 1634 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) ) 1635 { 1636 if ( physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback == VK_FALSE ) 1637 { 1638 log << tcu::TestLog::Message << "Mandatory feature transformFeedback not supported" << tcu::TestLog::EndMessage; 1639 result = false; 1640 } 1641 } 1642 1643 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) ) 1644 { 1645 if ( physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateDivisor == VK_FALSE ) 1646 { 1647 log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage; 1648 result = false; 1649 } 1650 } 1651 1652 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) ) 1653 { 1654 if ( physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState == VK_FALSE ) 1655 { 1656 log << tcu::TestLog::Message << "Mandatory feature vertexInputDynamicState not supported" << tcu::TestLog::EndMessage; 1657 result = false; 1658 } 1659 } 1660 1661 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) ) 1662 { 1663 if ( physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats == VK_FALSE ) 1664 { 1665 log << tcu::TestLog::Message << "Mandatory feature ycbcr2plane444Formats not supported" << tcu::TestLog::EndMessage; 1666 result = false; 1667 } 1668 } 1669 1670 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) ) 1671 { 1672 if ( physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays == VK_FALSE ) 1673 { 1674 log << tcu::TestLog::Message << "Mandatory feature ycbcrImageArrays not supported" << tcu::TestLog::EndMessage; 1675 result = false; 1676 } 1677 } 1678 1679 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) ) 1680 { 1681 if ( physicalDevice16BitStorageFeatures.storageBuffer16BitAccess == VK_FALSE ) 1682 { 1683 log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage; 1684 result = false; 1685 } 1686 } 1687 1688 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) ) 1689 { 1690 if ( physicalDevice8BitStorageFeatures.storageBuffer8BitAccess == VK_FALSE ) 1691 { 1692 log << tcu::TestLog::Message << "Mandatory feature storageBuffer8BitAccess not supported" << tcu::TestLog::EndMessage; 1693 result = false; 1694 } 1695 } 1696 1697 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1698 { 1699 if ( physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE ) 1700 { 1701 log << tcu::TestLog::Message << "Mandatory feature accelerationStructure not supported" << tcu::TestLog::EndMessage; 1702 result = false; 1703 } 1704 } 1705 1706 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1707 { 1708 if ( physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind == VK_FALSE ) 1709 { 1710 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingAccelerationStructureUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1711 result = false; 1712 } 1713 } 1714 1715 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) ) 1716 { 1717 if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE ) 1718 { 1719 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 1720 result = false; 1721 } 1722 } 1723 1724 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1725 { 1726 if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE ) 1727 { 1728 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 1729 result = false; 1730 } 1731 } 1732 1733 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) ) 1734 { 1735 if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) 1736 { 1737 log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; 1738 result = false; 1739 } 1740 } 1741 1742 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_global_priority")) ) 1743 { 1744 if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) 1745 { 1746 log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; 1747 result = false; 1748 } 1749 } 1750 1751 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) ) 1752 { 1753 if ( physicalDeviceImagelessFramebufferFeatures.imagelessFramebuffer == VK_FALSE ) 1754 { 1755 log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; 1756 result = false; 1757 } 1758 } 1759 1760 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) ) 1761 { 1762 if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) 1763 { 1764 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 1765 result = false; 1766 } 1767 } 1768 1769 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) ) 1770 { 1771 if ( physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools == VK_FALSE ) 1772 { 1773 log << tcu::TestLog::Message << "Mandatory feature performanceCounterQueryPools not supported" << tcu::TestLog::EndMessage; 1774 result = false; 1775 } 1776 } 1777 1778 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) ) 1779 { 1780 if ( physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo == VK_FALSE ) 1781 { 1782 log << tcu::TestLog::Message << "Mandatory feature pipelineExecutableInfo not supported" << tcu::TestLog::EndMessage; 1783 result = false; 1784 } 1785 } 1786 1787#if defined(CTS_USES_VULKAN) 1788 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) ) 1789 { 1790 if ( physicalDevicePresentIdFeaturesKHR.presentId == VK_FALSE ) 1791 { 1792 log << tcu::TestLog::Message << "Mandatory feature presentId not supported" << tcu::TestLog::EndMessage; 1793 result = false; 1794 } 1795 } 1796#endif // defined(CTS_USES_VULKAN) 1797 1798#if defined(CTS_USES_VULKAN) 1799 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) ) 1800 { 1801 if ( physicalDevicePresentWaitFeaturesKHR.presentWait == VK_FALSE ) 1802 { 1803 log << tcu::TestLog::Message << "Mandatory feature presentWait not supported" << tcu::TestLog::EndMessage; 1804 result = false; 1805 } 1806 } 1807#endif // defined(CTS_USES_VULKAN) 1808 1809 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 1810 { 1811 if ( physicalDeviceRayQueryFeaturesKHR.rayQuery == VK_FALSE ) 1812 { 1813 log << tcu::TestLog::Message << "Mandatory feature rayQuery not supported" << tcu::TestLog::EndMessage; 1814 result = false; 1815 } 1816 } 1817 1818 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_maintenance1")) ) 1819 { 1820 if ( physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingMaintenance1 == VK_FALSE ) 1821 { 1822 log << tcu::TestLog::Message << "Mandatory feature rayTracingMaintenance1 not supported" << tcu::TestLog::EndMessage; 1823 result = false; 1824 } 1825 } 1826 1827 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) ) 1828 { 1829 if ( ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) && ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) ) 1830 { 1831 log << tcu::TestLog::Message << "Mandatory feature rayTracingPipeline or rayTracingPipelineTraceRaysIndirect not supported" << tcu::TestLog::EndMessage; 1832 result = false; 1833 } 1834 } 1835 1836 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 1837 { 1838 if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling == VK_FALSE ) 1839 { 1840 log << tcu::TestLog::Message << "Mandatory feature rayTraversalPrimitiveCulling not supported" << tcu::TestLog::EndMessage; 1841 result = false; 1842 } 1843 } 1844 1845 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) ) 1846 { 1847 if ( physicalDeviceSamplerYcbcrConversionFeaturesKHR.samplerYcbcrConversion == VK_FALSE ) 1848 { 1849 log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion not supported" << tcu::TestLog::EndMessage; 1850 result = false; 1851 } 1852 } 1853 1854 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) ) 1855 { 1856 if ( physicalDeviceSeparateDepthStencilLayoutsFeatures.separateDepthStencilLayouts == VK_FALSE ) 1857 { 1858 log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; 1859 result = false; 1860 } 1861 } 1862 1863 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) ) 1864 { 1865 if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics == VK_FALSE ) 1866 { 1867 log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; 1868 result = false; 1869 } 1870 } 1871 1872 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) ) 1873 { 1874 if ( physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock == VK_FALSE ) 1875 { 1876 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupClock not supported" << tcu::TestLog::EndMessage; 1877 result = false; 1878 } 1879 } 1880 1881 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) ) 1882 { 1883 if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) ) 1884 { 1885 log << tcu::TestLog::Message << "Mandatory feature shaderFloat16 or shaderInt8 not supported" << tcu::TestLog::EndMessage; 1886 result = false; 1887 } 1888 } 1889 1890#if defined(CTS_USES_VULKAN) 1891 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) ) 1892 { 1893 if ( physicalDeviceShaderIntegerDotProductFeaturesKHR.shaderIntegerDotProduct == VK_FALSE ) 1894 { 1895 log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; 1896 result = false; 1897 } 1898 } 1899#endif // defined(CTS_USES_VULKAN) 1900 1901 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) ) 1902 { 1903 if ( physicalDeviceShaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes == VK_FALSE ) 1904 { 1905 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; 1906 result = false; 1907 } 1908 } 1909 1910 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) ) 1911 { 1912 if ( physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow == VK_FALSE ) 1913 { 1914 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupUniformControlFlow not supported" << tcu::TestLog::EndMessage; 1915 result = false; 1916 } 1917 } 1918 1919 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) ) 1920 { 1921 if ( physicalDeviceShaderTerminateInvocationFeaturesKHR.shaderTerminateInvocation == VK_FALSE ) 1922 { 1923 log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; 1924 result = false; 1925 } 1926 } 1927 1928 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) ) 1929 { 1930 if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE ) 1931 { 1932 log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; 1933 result = false; 1934 } 1935 } 1936 1937#if defined(CTS_USES_VULKAN) 1938 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) ) 1939 { 1940 if ( physicalDeviceTimelineSemaphoreFeatures.timelineSemaphore == VK_FALSE ) 1941 { 1942 log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; 1943 result = false; 1944 } 1945 } 1946#endif // defined(CTS_USES_VULKAN) 1947 1948 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) ) 1949 { 1950 if ( physicalDeviceUniformBufferStandardLayoutFeatures.uniformBufferStandardLayout == VK_FALSE ) 1951 { 1952 log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; 1953 result = false; 1954 } 1955 } 1956 1957 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) ) 1958 { 1959 if ( physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer == VK_FALSE ) 1960 { 1961 log << tcu::TestLog::Message << "Mandatory feature variablePointersStorageBuffer not supported" << tcu::TestLog::EndMessage; 1962 result = false; 1963 } 1964 } 1965 1966 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) ) 1967 { 1968 if ( physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModel == VK_FALSE ) 1969 { 1970 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; 1971 result = false; 1972 } 1973 } 1974 1975 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) ) 1976 { 1977 if ( ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess == VK_FALSE ) ) 1978 { 1979 log << tcu::TestLog::Message << "Mandatory feature workgroupMemoryExplicitLayout or workgroupMemoryExplicitLayoutScalarBlockLayout or workgroupMemoryExplicitLayout8BitAccess or workgroupMemoryExplicitLayout16BitAccess not supported" << tcu::TestLog::EndMessage; 1980 result = false; 1981 } 1982 } 1983 1984 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) ) 1985 { 1986 if ( physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) 1987 { 1988 log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; 1989 result = false; 1990 } 1991 } 1992 1993 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) ) 1994 { 1995 if ( physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType == VK_FALSE ) 1996 { 1997 log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; 1998 result = false; 1999 } 2000 } 2001 2002 { 2003 if ( coreFeatures.features.robustBufferAccess == VK_FALSE ) 2004 { 2005 log << tcu::TestLog::Message << "Mandatory feature robustBufferAccess not supported" << tcu::TestLog::EndMessage; 2006 result = false; 2007 } 2008 } 2009 2010 if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ) 2011 { 2012 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2013 { 2014 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2015 result = false; 2016 } 2017 } 2018 2019 if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics ) 2020 { 2021 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2022 { 2023 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2024 result = false; 2025 } 2026 } 2027 2028 if ( physicalDeviceShaderAtomicInt64Features.shaderSharedInt64Atomics ) 2029 { 2030 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2031 { 2032 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2033 result = false; 2034 } 2035 } 2036 2037 if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics ) 2038 { 2039 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2040 { 2041 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2042 result = false; 2043 } 2044 } 2045 2046#if defined(CTS_USES_VULKAN) 2047 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) ) 2048 { 2049 if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) 2050 { 2051 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 2052 result = false; 2053 } 2054 } 2055#endif // defined(CTS_USES_VULKAN) 2056 2057 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2058 { 2059 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 2060 { 2061 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2062 result = false; 2063 } 2064 } 2065 2066 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2067 { 2068 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 2069 { 2070 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2071 result = false; 2072 } 2073 } 2074 2075#if defined(CTS_USES_VULKAN) 2076 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2077 { 2078 if ( physicalDeviceVulkan11Features.multiview == VK_FALSE ) 2079 { 2080 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 2081 result = false; 2082 } 2083 } 2084#endif // defined(CTS_USES_VULKAN) 2085 2086 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2087 { 2088 if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE ) 2089 { 2090 log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage; 2091 result = false; 2092 } 2093 } 2094 2095 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2096 { 2097 if ( physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes == VK_FALSE ) 2098 { 2099 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; 2100 result = false; 2101 } 2102 } 2103 2104 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2105 { 2106 if ( physicalDeviceVulkan12Features.imagelessFramebuffer == VK_FALSE ) 2107 { 2108 log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; 2109 result = false; 2110 } 2111 } 2112 2113 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2114 { 2115 if ( physicalDeviceVulkan12Features.uniformBufferStandardLayout == VK_FALSE ) 2116 { 2117 log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; 2118 result = false; 2119 } 2120 } 2121 2122 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2123 { 2124 if ( physicalDeviceVulkan12Features.separateDepthStencilLayouts == VK_FALSE ) 2125 { 2126 log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; 2127 result = false; 2128 } 2129 } 2130 2131 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2132 { 2133 if ( physicalDeviceVulkan12Features.hostQueryReset == VK_FALSE ) 2134 { 2135 log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage; 2136 result = false; 2137 } 2138 } 2139 2140#if defined(CTS_USES_VULKAN) 2141 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2142 { 2143 if ( physicalDeviceVulkan12Features.timelineSemaphore == VK_FALSE ) 2144 { 2145 log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; 2146 result = false; 2147 } 2148 } 2149#endif // defined(CTS_USES_VULKAN) 2150 2151 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2152 { 2153 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 2154 { 2155 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2156 result = false; 2157 } 2158 } 2159 2160 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2161 { 2162 if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 2163 { 2164 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2165 result = false; 2166 } 2167 } 2168 2169 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2170 { 2171 if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 2172 { 2173 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2174 result = false; 2175 } 2176 } 2177 2178 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2179 { 2180 if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 2181 { 2182 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2183 result = false; 2184 } 2185 } 2186 2187 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2188 { 2189 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 2190 { 2191 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2192 result = false; 2193 } 2194 } 2195 2196 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2197 { 2198 if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 2199 { 2200 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2201 result = false; 2202 } 2203 } 2204 2205 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2206 { 2207 if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 2208 { 2209 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2210 result = false; 2211 } 2212 } 2213 2214 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2215 { 2216 if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 2217 { 2218 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2219 result = false; 2220 } 2221 } 2222 2223 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2224 { 2225 if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 2226 { 2227 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2228 result = false; 2229 } 2230 } 2231 2232 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2233 { 2234 if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 2235 { 2236 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2237 result = false; 2238 } 2239 } 2240 2241 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2242 { 2243 if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 2244 { 2245 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 2246 result = false; 2247 } 2248 } 2249 2250 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2251 { 2252 if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE ) 2253 { 2254 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 2255 result = false; 2256 } 2257 } 2258 2259 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2260 { 2261 if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE ) 2262 { 2263 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 2264 result = false; 2265 } 2266 } 2267 2268 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ) 2269 { 2270 if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics == VK_FALSE ) 2271 { 2272 log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; 2273 result = false; 2274 } 2275 } 2276 2277 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_draw_indirect_count")) ) 2278 { 2279 if ( physicalDeviceVulkan12Features.drawIndirectCount == VK_FALSE ) 2280 { 2281 log << tcu::TestLog::Message << "Mandatory feature drawIndirectCount not supported" << tcu::TestLog::EndMessage; 2282 result = false; 2283 } 2284 } 2285 2286 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_mirror_clamp_to_edge")) ) 2287 { 2288 if ( physicalDeviceVulkan12Features.samplerMirrorClampToEdge == VK_FALSE ) 2289 { 2290 log << tcu::TestLog::Message << "Mandatory feature samplerMirrorClampToEdge not supported" << tcu::TestLog::EndMessage; 2291 result = false; 2292 } 2293 } 2294 2295 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_sampler_filter_minmax")) ) 2296 { 2297 if ( physicalDeviceVulkan12Features.samplerFilterMinmax == VK_FALSE ) 2298 { 2299 log << tcu::TestLog::Message << "Mandatory feature samplerFilterMinmax not supported" << tcu::TestLog::EndMessage; 2300 result = false; 2301 } 2302 } 2303 2304 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) ) 2305 { 2306 if ( physicalDeviceVulkan12Features.shaderOutputViewportIndex == VK_FALSE ) 2307 { 2308 log << tcu::TestLog::Message << "Mandatory feature shaderOutputViewportIndex not supported" << tcu::TestLog::EndMessage; 2309 result = false; 2310 } 2311 } 2312 2313 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) ) 2314 { 2315 if ( physicalDeviceVulkan12Features.shaderOutputLayer == VK_FALSE ) 2316 { 2317 log << tcu::TestLog::Message << "Mandatory feature shaderOutputLayer not supported" << tcu::TestLog::EndMessage; 2318 result = false; 2319 } 2320 } 2321 2322 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2323 { 2324 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 2325 { 2326 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2327 result = false; 2328 } 2329 } 2330 2331 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2332 { 2333 if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 2334 { 2335 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2336 result = false; 2337 } 2338 } 2339 2340 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2341 { 2342 if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 2343 { 2344 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2345 result = false; 2346 } 2347 } 2348 2349 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2350 { 2351 if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 2352 { 2353 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2354 result = false; 2355 } 2356 } 2357 2358 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2359 { 2360 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 2361 { 2362 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2363 result = false; 2364 } 2365 } 2366 2367 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2368 { 2369 if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 2370 { 2371 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2372 result = false; 2373 } 2374 } 2375 2376 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2377 { 2378 if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 2379 { 2380 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2381 result = false; 2382 } 2383 } 2384 2385 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2386 { 2387 if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 2388 { 2389 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2390 result = false; 2391 } 2392 } 2393 2394 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2395 { 2396 if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 2397 { 2398 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2399 result = false; 2400 } 2401 } 2402 2403 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2404 { 2405 if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 2406 { 2407 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2408 result = false; 2409 } 2410 } 2411 2412 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2413 { 2414 if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 2415 { 2416 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 2417 result = false; 2418 } 2419 } 2420 2421 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2422 { 2423 if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE ) 2424 { 2425 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 2426 result = false; 2427 } 2428 } 2429 2430 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2431 { 2432 if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE ) 2433 { 2434 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 2435 result = false; 2436 } 2437 } 2438 2439 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2440 { 2441 if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE ) 2442 { 2443 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 2444 result = false; 2445 } 2446 } 2447 2448#if defined(CTS_USES_VULKAN) 2449 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2450 { 2451 if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE ) 2452 { 2453 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 2454 result = false; 2455 } 2456 } 2457#endif // defined(CTS_USES_VULKAN) 2458 2459#if defined(CTS_USES_VULKANSC) 2460 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2461 { 2462 if ( physicalDeviceVulkan12Features.vulkanMemoryModel == VK_FALSE ) 2463 { 2464 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; 2465 result = false; 2466 } 2467 } 2468#endif // defined(CTS_USES_VULKANSC) 2469 2470#if defined(CTS_USES_VULKAN) 2471 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2472 { 2473 if ( physicalDeviceVulkan12Features.vulkanMemoryModelDeviceScope == VK_FALSE ) 2474 { 2475 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModelDeviceScope not supported" << tcu::TestLog::EndMessage; 2476 result = false; 2477 } 2478 } 2479#endif // defined(CTS_USES_VULKAN) 2480 2481#if defined(CTS_USES_VULKAN) 2482 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2483 { 2484 if ( physicalDeviceVulkan13Features.robustImageAccess == VK_FALSE ) 2485 { 2486 log << tcu::TestLog::Message << "Mandatory feature robustImageAccess not supported" << tcu::TestLog::EndMessage; 2487 result = false; 2488 } 2489 } 2490#endif // defined(CTS_USES_VULKAN) 2491 2492#if defined(CTS_USES_VULKAN) 2493 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2494 { 2495 if ( physicalDeviceVulkan13Features.inlineUniformBlock == VK_FALSE ) 2496 { 2497 log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage; 2498 result = false; 2499 } 2500 } 2501#endif // defined(CTS_USES_VULKAN) 2502 2503#if defined(CTS_USES_VULKAN) 2504 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2505 { 2506 if ( physicalDeviceVulkan13Features.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE ) 2507 { 2508 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2509 result = false; 2510 } 2511 } 2512#endif // defined(CTS_USES_VULKAN) 2513 2514#if defined(CTS_USES_VULKAN) 2515 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2516 { 2517 if ( physicalDeviceVulkan13Features.pipelineCreationCacheControl == VK_FALSE ) 2518 { 2519 log << tcu::TestLog::Message << "Mandatory feature pipelineCreationCacheControl not supported" << tcu::TestLog::EndMessage; 2520 result = false; 2521 } 2522 } 2523#endif // defined(CTS_USES_VULKAN) 2524 2525#if defined(CTS_USES_VULKAN) 2526 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2527 { 2528 if ( physicalDeviceVulkan13Features.privateData == VK_FALSE ) 2529 { 2530 log << tcu::TestLog::Message << "Mandatory feature privateData not supported" << tcu::TestLog::EndMessage; 2531 result = false; 2532 } 2533 } 2534#endif // defined(CTS_USES_VULKAN) 2535 2536#if defined(CTS_USES_VULKAN) 2537 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2538 { 2539 if ( physicalDeviceVulkan13Features.shaderDemoteToHelperInvocation == VK_FALSE ) 2540 { 2541 log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; 2542 result = false; 2543 } 2544 } 2545#endif // defined(CTS_USES_VULKAN) 2546 2547#if defined(CTS_USES_VULKAN) 2548 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2549 { 2550 if ( physicalDeviceVulkan13Features.shaderTerminateInvocation == VK_FALSE ) 2551 { 2552 log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; 2553 result = false; 2554 } 2555 } 2556#endif // defined(CTS_USES_VULKAN) 2557 2558#if defined(CTS_USES_VULKAN) 2559 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2560 { 2561 if ( physicalDeviceVulkan13Features.subgroupSizeControl == VK_FALSE ) 2562 { 2563 log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; 2564 result = false; 2565 } 2566 } 2567#endif // defined(CTS_USES_VULKAN) 2568 2569#if defined(CTS_USES_VULKAN) 2570 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2571 { 2572 if ( physicalDeviceVulkan13Features.computeFullSubgroups == VK_FALSE ) 2573 { 2574 log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; 2575 result = false; 2576 } 2577 } 2578#endif // defined(CTS_USES_VULKAN) 2579 2580#if defined(CTS_USES_VULKAN) 2581 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2582 { 2583 if ( physicalDeviceVulkan13Features.synchronization2 == VK_FALSE ) 2584 { 2585 log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; 2586 result = false; 2587 } 2588 } 2589#endif // defined(CTS_USES_VULKAN) 2590 2591#if defined(CTS_USES_VULKAN) 2592 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2593 { 2594 if ( physicalDeviceVulkan13Features.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) 2595 { 2596 log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; 2597 result = false; 2598 } 2599 } 2600#endif // defined(CTS_USES_VULKAN) 2601 2602#if defined(CTS_USES_VULKAN) 2603 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2604 { 2605 if ( physicalDeviceVulkan13Features.dynamicRendering == VK_FALSE ) 2606 { 2607 log << tcu::TestLog::Message << "Mandatory feature dynamicRendering not supported" << tcu::TestLog::EndMessage; 2608 result = false; 2609 } 2610 } 2611#endif // defined(CTS_USES_VULKAN) 2612 2613#if defined(CTS_USES_VULKAN) 2614 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2615 { 2616 if ( physicalDeviceVulkan13Features.shaderIntegerDotProduct == VK_FALSE ) 2617 { 2618 log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; 2619 result = false; 2620 } 2621 } 2622#endif // defined(CTS_USES_VULKAN) 2623 2624#if defined(CTS_USES_VULKAN) 2625 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2626 { 2627 if ( physicalDeviceVulkan13Features.maintenance4 == VK_FALSE ) 2628 { 2629 log << tcu::TestLog::Message << "Mandatory feature maintenance4 not supported" << tcu::TestLog::EndMessage; 2630 result = false; 2631 } 2632 } 2633#endif // defined(CTS_USES_VULKAN) 2634 2635 return result; 2636} 2637 2638