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::VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; 80 deMemset(&physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT, 0, sizeof(physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT)); 81 82 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_attachment_feedback_loop_dynamic_state") ) 83 { 84 physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.sType = getStructureType<VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT>(); 85 *nextPtr = &physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; 86 nextPtr = &physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.pNext; 87 } 88#endif // defined(CTS_USES_VULKAN) 89 90#if defined(CTS_USES_VULKAN) 91 vk::VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; 92 deMemset(&physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, 0, sizeof(physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT)); 93 94 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_attachment_feedback_loop_layout") ) 95 { 96 physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.sType = getStructureType<VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>(); 97 *nextPtr = &physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; 98 nextPtr = &physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.pNext; 99 } 100#endif // defined(CTS_USES_VULKAN) 101 102#if defined(CTS_USES_VULKAN) 103 vk::VkPhysicalDeviceBorderColorSwizzleFeaturesEXT physicalDeviceBorderColorSwizzleFeaturesEXT; 104 deMemset(&physicalDeviceBorderColorSwizzleFeaturesEXT, 0, sizeof(physicalDeviceBorderColorSwizzleFeaturesEXT)); 105 106 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_border_color_swizzle") ) 107 { 108 physicalDeviceBorderColorSwizzleFeaturesEXT.sType = getStructureType<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>(); 109 *nextPtr = &physicalDeviceBorderColorSwizzleFeaturesEXT; 110 nextPtr = &physicalDeviceBorderColorSwizzleFeaturesEXT.pNext; 111 } 112#endif // defined(CTS_USES_VULKAN) 113 114 vk::VkPhysicalDeviceBufferDeviceAddressFeatures physicalDeviceBufferDeviceAddressFeatures; 115 deMemset(&physicalDeviceBufferDeviceAddressFeatures, 0, sizeof(physicalDeviceBufferDeviceAddressFeatures)); 116 117 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_buffer_device_address") ) 118 { 119 physicalDeviceBufferDeviceAddressFeatures.sType = getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures>(); 120 *nextPtr = &physicalDeviceBufferDeviceAddressFeatures; 121 nextPtr = &physicalDeviceBufferDeviceAddressFeatures.pNext; 122 } 123 124 vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT physicalDeviceColorWriteEnableFeaturesEXT; 125 deMemset(&physicalDeviceColorWriteEnableFeaturesEXT, 0, sizeof(physicalDeviceColorWriteEnableFeaturesEXT)); 126 127 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_color_write_enable") ) 128 { 129 physicalDeviceColorWriteEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(); 130 *nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT; 131 nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT.pNext; 132 } 133 134 vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT physicalDeviceConditionalRenderingFeaturesEXT; 135 deMemset(&physicalDeviceConditionalRenderingFeaturesEXT, 0, sizeof(physicalDeviceConditionalRenderingFeaturesEXT)); 136 137 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_conditional_rendering") ) 138 { 139 physicalDeviceConditionalRenderingFeaturesEXT.sType = getStructureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(); 140 *nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT; 141 nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT.pNext; 142 } 143 144#if defined(CTS_USES_VULKAN) 145 vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV physicalDeviceCoverageReductionModeFeaturesNV; 146 deMemset(&physicalDeviceCoverageReductionModeFeaturesNV, 0, sizeof(physicalDeviceCoverageReductionModeFeaturesNV)); 147 148 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_NV_coverage_reduction_mode") ) 149 { 150 physicalDeviceCoverageReductionModeFeaturesNV.sType = getStructureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(); 151 *nextPtr = &physicalDeviceCoverageReductionModeFeaturesNV; 152 nextPtr = &physicalDeviceCoverageReductionModeFeaturesNV.pNext; 153 } 154#endif // defined(CTS_USES_VULKAN) 155 156#if defined(CTS_USES_VULKAN) 157 vk::VkPhysicalDeviceDepthBiasControlFeaturesEXT physicalDeviceDepthBiasControlFeaturesEXT; 158 deMemset(&physicalDeviceDepthBiasControlFeaturesEXT, 0, sizeof(physicalDeviceDepthBiasControlFeaturesEXT)); 159 160 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_bias_control") ) 161 { 162 physicalDeviceDepthBiasControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthBiasControlFeaturesEXT>(); 163 *nextPtr = &physicalDeviceDepthBiasControlFeaturesEXT; 164 nextPtr = &physicalDeviceDepthBiasControlFeaturesEXT.pNext; 165 } 166#endif // defined(CTS_USES_VULKAN) 167 168 vk::VkPhysicalDeviceDepthClampZeroOneFeaturesEXT physicalDeviceDepthClampZeroOneFeaturesEXT; 169 deMemset(&physicalDeviceDepthClampZeroOneFeaturesEXT, 0, sizeof(physicalDeviceDepthClampZeroOneFeaturesEXT)); 170 171 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clamp_zero_one") ) 172 { 173 physicalDeviceDepthClampZeroOneFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClampZeroOneFeaturesEXT>(); 174 *nextPtr = &physicalDeviceDepthClampZeroOneFeaturesEXT; 175 nextPtr = &physicalDeviceDepthClampZeroOneFeaturesEXT.pNext; 176 } 177 178 vk::VkPhysicalDeviceDepthClipControlFeaturesEXT physicalDeviceDepthClipControlFeaturesEXT; 179 deMemset(&physicalDeviceDepthClipControlFeaturesEXT, 0, sizeof(physicalDeviceDepthClipControlFeaturesEXT)); 180 181 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clip_control") ) 182 { 183 physicalDeviceDepthClipControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipControlFeaturesEXT>(); 184 *nextPtr = &physicalDeviceDepthClipControlFeaturesEXT; 185 nextPtr = &physicalDeviceDepthClipControlFeaturesEXT.pNext; 186 } 187 188 vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT physicalDeviceDepthClipEnableFeaturesEXT; 189 deMemset(&physicalDeviceDepthClipEnableFeaturesEXT, 0, sizeof(physicalDeviceDepthClipEnableFeaturesEXT)); 190 191 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_depth_clip_enable") ) 192 { 193 physicalDeviceDepthClipEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(); 194 *nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT; 195 nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT.pNext; 196 } 197 198 vk::VkPhysicalDeviceDescriptorBufferFeaturesEXT physicalDeviceDescriptorBufferFeaturesEXT; 199 deMemset(&physicalDeviceDescriptorBufferFeaturesEXT, 0, sizeof(physicalDeviceDescriptorBufferFeaturesEXT)); 200 201 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_descriptor_buffer") ) 202 { 203 physicalDeviceDescriptorBufferFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDescriptorBufferFeaturesEXT>(); 204 *nextPtr = &physicalDeviceDescriptorBufferFeaturesEXT; 205 nextPtr = &physicalDeviceDescriptorBufferFeaturesEXT.pNext; 206 } 207 208 vk::VkPhysicalDeviceDescriptorIndexingFeatures physicalDeviceDescriptorIndexingFeatures; 209 deMemset(&physicalDeviceDescriptorIndexingFeatures, 0, sizeof(physicalDeviceDescriptorIndexingFeatures)); 210 211 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_descriptor_indexing") ) 212 { 213 physicalDeviceDescriptorIndexingFeatures.sType = getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures>(); 214 *nextPtr = &physicalDeviceDescriptorIndexingFeatures; 215 nextPtr = &physicalDeviceDescriptorIndexingFeatures.pNext; 216 } 217 218 vk::VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR physicalDeviceDynamicRenderingLocalReadFeaturesKHR; 219 deMemset(&physicalDeviceDynamicRenderingLocalReadFeaturesKHR, 0, sizeof(physicalDeviceDynamicRenderingLocalReadFeaturesKHR)); 220 221 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_dynamic_rendering_local_read") ) 222 { 223 physicalDeviceDynamicRenderingLocalReadFeaturesKHR.sType = getStructureType<VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR>(); 224 *nextPtr = &physicalDeviceDynamicRenderingLocalReadFeaturesKHR; 225 nextPtr = &physicalDeviceDynamicRenderingLocalReadFeaturesKHR.pNext; 226 } 227 228 vk::VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; 229 deMemset(&physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT, 0, sizeof(physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT)); 230 231 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_dynamic_rendering_unused_attachments") ) 232 { 233 physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT>(); 234 *nextPtr = &physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; 235 nextPtr = &physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.pNext; 236 } 237 238 vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT physicalDeviceExtendedDynamicState2FeaturesEXT; 239 deMemset(&physicalDeviceExtendedDynamicState2FeaturesEXT, 0, sizeof(physicalDeviceExtendedDynamicState2FeaturesEXT)); 240 241 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_extended_dynamic_state2") ) 242 { 243 physicalDeviceExtendedDynamicState2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(); 244 *nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT; 245 nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT.pNext; 246 } 247 248 vk::VkPhysicalDeviceExtendedDynamicState3FeaturesEXT physicalDeviceExtendedDynamicState3FeaturesEXT; 249 deMemset(&physicalDeviceExtendedDynamicState3FeaturesEXT, 0, sizeof(physicalDeviceExtendedDynamicState3FeaturesEXT)); 250 251 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_extended_dynamic_state3") ) 252 { 253 physicalDeviceExtendedDynamicState3FeaturesEXT.sType = getStructureType<VkPhysicalDeviceExtendedDynamicState3FeaturesEXT>(); 254 *nextPtr = &physicalDeviceExtendedDynamicState3FeaturesEXT; 255 nextPtr = &physicalDeviceExtendedDynamicState3FeaturesEXT.pNext; 256 } 257 258 vk::VkPhysicalDeviceExternalFormatResolveFeaturesANDROID physicalDeviceExternalFormatResolveFeaturesANDROID; 259 deMemset(&physicalDeviceExternalFormatResolveFeaturesANDROID, 0, sizeof(physicalDeviceExternalFormatResolveFeaturesANDROID)); 260 261 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_ANDROID_external_format_resolve") ) 262 { 263 physicalDeviceExternalFormatResolveFeaturesANDROID.sType = getStructureType<VkPhysicalDeviceExternalFormatResolveFeaturesANDROID>(); 264 *nextPtr = &physicalDeviceExternalFormatResolveFeaturesANDROID; 265 nextPtr = &physicalDeviceExternalFormatResolveFeaturesANDROID.pNext; 266 } 267 268 vk::VkPhysicalDeviceFaultFeaturesEXT physicalDeviceFaultFeaturesEXT; 269 deMemset(&physicalDeviceFaultFeaturesEXT, 0, sizeof(physicalDeviceFaultFeaturesEXT)); 270 271 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_device_fault") ) 272 { 273 physicalDeviceFaultFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFaultFeaturesEXT>(); 274 *nextPtr = &physicalDeviceFaultFeaturesEXT; 275 nextPtr = &physicalDeviceFaultFeaturesEXT.pNext; 276 } 277 278 vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT physicalDeviceFragmentDensityMapFeaturesEXT; 279 deMemset(&physicalDeviceFragmentDensityMapFeaturesEXT, 0, sizeof(physicalDeviceFragmentDensityMapFeaturesEXT)); 280 281 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_fragment_density_map") ) 282 { 283 physicalDeviceFragmentDensityMapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(); 284 *nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT; 285 nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT.pNext; 286 } 287 288 vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT physicalDeviceFragmentShaderInterlockFeaturesEXT; 289 deMemset(&physicalDeviceFragmentShaderInterlockFeaturesEXT, 0, sizeof(physicalDeviceFragmentShaderInterlockFeaturesEXT)); 290 291 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_fragment_shader_interlock") ) 292 { 293 physicalDeviceFragmentShaderInterlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(); 294 *nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT; 295 nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT.pNext; 296 } 297 298#if defined(CTS_USES_VULKAN) 299 vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR physicalDeviceFragmentShadingRateFeaturesKHR; 300 deMemset(&physicalDeviceFragmentShadingRateFeaturesKHR, 0, sizeof(physicalDeviceFragmentShadingRateFeaturesKHR)); 301 302 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_fragment_shading_rate") ) 303 { 304 physicalDeviceFragmentShadingRateFeaturesKHR.sType = getStructureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(); 305 *nextPtr = &physicalDeviceFragmentShadingRateFeaturesKHR; 306 nextPtr = &physicalDeviceFragmentShadingRateFeaturesKHR.pNext; 307 } 308#endif // defined(CTS_USES_VULKAN) 309 310 vk::VkPhysicalDeviceFrameBoundaryFeaturesEXT physicalDeviceFrameBoundaryFeaturesEXT; 311 deMemset(&physicalDeviceFrameBoundaryFeaturesEXT, 0, sizeof(physicalDeviceFrameBoundaryFeaturesEXT)); 312 313 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_frame_boundary") ) 314 { 315 physicalDeviceFrameBoundaryFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFrameBoundaryFeaturesEXT>(); 316 *nextPtr = &physicalDeviceFrameBoundaryFeaturesEXT; 317 nextPtr = &physicalDeviceFrameBoundaryFeaturesEXT.pNext; 318 } 319 320 vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR physicalDeviceGlobalPriorityQueryFeaturesKHR; 321 deMemset(&physicalDeviceGlobalPriorityQueryFeaturesKHR, 0, sizeof(physicalDeviceGlobalPriorityQueryFeaturesKHR)); 322 323 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_global_priority") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_global_priority_query") ) 324 { 325 physicalDeviceGlobalPriorityQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>(); 326 *nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesKHR; 327 nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesKHR.pNext; 328 } 329 330 vk::VkPhysicalDeviceHostQueryResetFeatures physicalDeviceHostQueryResetFeatures; 331 deMemset(&physicalDeviceHostQueryResetFeatures, 0, sizeof(physicalDeviceHostQueryResetFeatures)); 332 333 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_host_query_reset") ) 334 { 335 physicalDeviceHostQueryResetFeatures.sType = getStructureType<VkPhysicalDeviceHostQueryResetFeatures>(); 336 *nextPtr = &physicalDeviceHostQueryResetFeatures; 337 nextPtr = &physicalDeviceHostQueryResetFeatures.pNext; 338 } 339 340#if defined(CTS_USES_VULKAN) 341 vk::VkPhysicalDeviceImage2DViewOf3DFeaturesEXT physicalDeviceImage2DViewOf3DFeaturesEXT; 342 deMemset(&physicalDeviceImage2DViewOf3DFeaturesEXT, 0, sizeof(physicalDeviceImage2DViewOf3DFeaturesEXT)); 343 344 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_2d_view_of_3d") ) 345 { 346 physicalDeviceImage2DViewOf3DFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>(); 347 *nextPtr = &physicalDeviceImage2DViewOf3DFeaturesEXT; 348 nextPtr = &physicalDeviceImage2DViewOf3DFeaturesEXT.pNext; 349 } 350#endif // defined(CTS_USES_VULKAN) 351 352 vk::VkPhysicalDeviceImageCompressionControlFeaturesEXT physicalDeviceImageCompressionControlFeaturesEXT; 353 deMemset(&physicalDeviceImageCompressionControlFeaturesEXT, 0, sizeof(physicalDeviceImageCompressionControlFeaturesEXT)); 354 355 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_compression_control") ) 356 { 357 physicalDeviceImageCompressionControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImageCompressionControlFeaturesEXT>(); 358 *nextPtr = &physicalDeviceImageCompressionControlFeaturesEXT; 359 nextPtr = &physicalDeviceImageCompressionControlFeaturesEXT.pNext; 360 } 361 362 vk::VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT physicalDeviceImageCompressionControlSwapchainFeaturesEXT; 363 deMemset(&physicalDeviceImageCompressionControlSwapchainFeaturesEXT, 0, sizeof(physicalDeviceImageCompressionControlSwapchainFeaturesEXT)); 364 365 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_compression_control_swapchain") ) 366 { 367 physicalDeviceImageCompressionControlSwapchainFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>(); 368 *nextPtr = &physicalDeviceImageCompressionControlSwapchainFeaturesEXT; 369 nextPtr = &physicalDeviceImageCompressionControlSwapchainFeaturesEXT.pNext; 370 } 371 372#if defined(CTS_USES_VULKAN) 373 vk::VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT physicalDeviceImageSlicedViewOf3DFeaturesEXT; 374 deMemset(&physicalDeviceImageSlicedViewOf3DFeaturesEXT, 0, sizeof(physicalDeviceImageSlicedViewOf3DFeaturesEXT)); 375 376 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_image_sliced_view_of_3d") ) 377 { 378 physicalDeviceImageSlicedViewOf3DFeaturesEXT.sType = getStructureType<VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT>(); 379 *nextPtr = &physicalDeviceImageSlicedViewOf3DFeaturesEXT; 380 nextPtr = &physicalDeviceImageSlicedViewOf3DFeaturesEXT.pNext; 381 } 382#endif // defined(CTS_USES_VULKAN) 383 384 vk::VkPhysicalDeviceImagelessFramebufferFeatures physicalDeviceImagelessFramebufferFeatures; 385 deMemset(&physicalDeviceImagelessFramebufferFeatures, 0, sizeof(physicalDeviceImagelessFramebufferFeatures)); 386 387 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_imageless_framebuffer") ) 388 { 389 physicalDeviceImagelessFramebufferFeatures.sType = getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures>(); 390 *nextPtr = &physicalDeviceImagelessFramebufferFeatures; 391 nextPtr = &physicalDeviceImagelessFramebufferFeatures.pNext; 392 } 393 394 vk::VkPhysicalDeviceIndexTypeUint8FeaturesKHR physicalDeviceIndexTypeUint8FeaturesKHR; 395 deMemset(&physicalDeviceIndexTypeUint8FeaturesKHR, 0, sizeof(physicalDeviceIndexTypeUint8FeaturesKHR)); 396 397 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_index_type_uint8") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_index_type_uint8") ) 398 { 399 physicalDeviceIndexTypeUint8FeaturesKHR.sType = getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesKHR>(); 400 *nextPtr = &physicalDeviceIndexTypeUint8FeaturesKHR; 401 nextPtr = &physicalDeviceIndexTypeUint8FeaturesKHR.pNext; 402 } 403 404 vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT physicalDeviceInlineUniformBlockFeaturesEXT; 405 deMemset(&physicalDeviceInlineUniformBlockFeaturesEXT, 0, sizeof(physicalDeviceInlineUniformBlockFeaturesEXT)); 406 407 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_inline_uniform_block") ) 408 { 409 physicalDeviceInlineUniformBlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(); 410 *nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT; 411 nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT.pNext; 412 } 413 414 vk::VkPhysicalDeviceLegacyDitheringFeaturesEXT physicalDeviceLegacyDitheringFeaturesEXT; 415 deMemset(&physicalDeviceLegacyDitheringFeaturesEXT, 0, sizeof(physicalDeviceLegacyDitheringFeaturesEXT)); 416 417 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_legacy_dithering") ) 418 { 419 physicalDeviceLegacyDitheringFeaturesEXT.sType = getStructureType<VkPhysicalDeviceLegacyDitheringFeaturesEXT>(); 420 *nextPtr = &physicalDeviceLegacyDitheringFeaturesEXT; 421 nextPtr = &physicalDeviceLegacyDitheringFeaturesEXT.pNext; 422 } 423 424 vk::VkPhysicalDeviceLineRasterizationFeaturesKHR physicalDeviceLineRasterizationFeaturesKHR; 425 deMemset(&physicalDeviceLineRasterizationFeaturesKHR, 0, sizeof(physicalDeviceLineRasterizationFeaturesKHR)); 426 427 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_line_rasterization") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_line_rasterization") ) 428 { 429 physicalDeviceLineRasterizationFeaturesKHR.sType = getStructureType<VkPhysicalDeviceLineRasterizationFeaturesKHR>(); 430 *nextPtr = &physicalDeviceLineRasterizationFeaturesKHR; 431 nextPtr = &physicalDeviceLineRasterizationFeaturesKHR.pNext; 432 } 433 434 vk::VkPhysicalDeviceMaintenance5FeaturesKHR physicalDeviceMaintenance5FeaturesKHR; 435 deMemset(&physicalDeviceMaintenance5FeaturesKHR, 0, sizeof(physicalDeviceMaintenance5FeaturesKHR)); 436 437 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_maintenance5") ) 438 { 439 physicalDeviceMaintenance5FeaturesKHR.sType = getStructureType<VkPhysicalDeviceMaintenance5FeaturesKHR>(); 440 *nextPtr = &physicalDeviceMaintenance5FeaturesKHR; 441 nextPtr = &physicalDeviceMaintenance5FeaturesKHR.pNext; 442 } 443 444 vk::VkPhysicalDeviceMaintenance6FeaturesKHR physicalDeviceMaintenance6FeaturesKHR; 445 deMemset(&physicalDeviceMaintenance6FeaturesKHR, 0, sizeof(physicalDeviceMaintenance6FeaturesKHR)); 446 447 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_maintenance6") ) 448 { 449 physicalDeviceMaintenance6FeaturesKHR.sType = getStructureType<VkPhysicalDeviceMaintenance6FeaturesKHR>(); 450 *nextPtr = &physicalDeviceMaintenance6FeaturesKHR; 451 nextPtr = &physicalDeviceMaintenance6FeaturesKHR.pNext; 452 } 453 454 vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT physicalDeviceMemoryPriorityFeaturesEXT; 455 deMemset(&physicalDeviceMemoryPriorityFeaturesEXT, 0, sizeof(physicalDeviceMemoryPriorityFeaturesEXT)); 456 457 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_memory_priority") ) 458 { 459 physicalDeviceMemoryPriorityFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(); 460 *nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT; 461 nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT.pNext; 462 } 463 464#if defined(CTS_USES_VULKAN) 465 vk::VkPhysicalDeviceMeshShaderFeaturesEXT physicalDeviceMeshShaderFeaturesEXT; 466 deMemset(&physicalDeviceMeshShaderFeaturesEXT, 0, sizeof(physicalDeviceMeshShaderFeaturesEXT)); 467 468 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mesh_shader") ) 469 { 470 physicalDeviceMeshShaderFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMeshShaderFeaturesEXT>(); 471 *nextPtr = &physicalDeviceMeshShaderFeaturesEXT; 472 nextPtr = &physicalDeviceMeshShaderFeaturesEXT.pNext; 473 } 474#endif // defined(CTS_USES_VULKAN) 475 476 vk::VkPhysicalDeviceMultiDrawFeaturesEXT physicalDeviceMultiDrawFeaturesEXT; 477 deMemset(&physicalDeviceMultiDrawFeaturesEXT, 0, sizeof(physicalDeviceMultiDrawFeaturesEXT)); 478 479 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_multi_draw") ) 480 { 481 physicalDeviceMultiDrawFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMultiDrawFeaturesEXT>(); 482 *nextPtr = &physicalDeviceMultiDrawFeaturesEXT; 483 nextPtr = &physicalDeviceMultiDrawFeaturesEXT.pNext; 484 } 485 486 vk::VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; 487 deMemset(&physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, 0, sizeof(physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT)); 488 489 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_multisampled_render_to_single_sampled") ) 490 { 491 physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>(); 492 *nextPtr = &physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; 493 nextPtr = &physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.pNext; 494 } 495 496 vk::VkPhysicalDeviceMultiviewFeatures physicalDeviceMultiviewFeatures; 497 deMemset(&physicalDeviceMultiviewFeatures, 0, sizeof(physicalDeviceMultiviewFeatures)); 498 499 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_multiview") ) 500 { 501 physicalDeviceMultiviewFeatures.sType = getStructureType<VkPhysicalDeviceMultiviewFeatures>(); 502 *nextPtr = &physicalDeviceMultiviewFeatures; 503 nextPtr = &physicalDeviceMultiviewFeatures.pNext; 504 } 505 506 vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT physicalDeviceMutableDescriptorTypeFeaturesEXT; 507 deMemset(&physicalDeviceMutableDescriptorTypeFeaturesEXT, 0, sizeof(physicalDeviceMutableDescriptorTypeFeaturesEXT)); 508 509 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_VALVE_mutable_descriptor_type") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mutable_descriptor_type") ) 510 { 511 physicalDeviceMutableDescriptorTypeFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT>(); 512 *nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesEXT; 513 nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesEXT.pNext; 514 } 515 516 vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE physicalDeviceMutableDescriptorTypeFeaturesVALVE; 517 deMemset(&physicalDeviceMutableDescriptorTypeFeaturesVALVE, 0, sizeof(physicalDeviceMutableDescriptorTypeFeaturesVALVE)); 518 519 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_VALVE_mutable_descriptor_type") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_mutable_descriptor_type") ) 520 { 521 physicalDeviceMutableDescriptorTypeFeaturesVALVE.sType = getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(); 522 *nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE; 523 nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE.pNext; 524 } 525 526#if defined(CTS_USES_VULKAN) 527 vk::VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT physicalDeviceNonSeamlessCubeMapFeaturesEXT; 528 deMemset(&physicalDeviceNonSeamlessCubeMapFeaturesEXT, 0, sizeof(physicalDeviceNonSeamlessCubeMapFeaturesEXT)); 529 530 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_non_seamless_cube_map") ) 531 { 532 physicalDeviceNonSeamlessCubeMapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT>(); 533 *nextPtr = &physicalDeviceNonSeamlessCubeMapFeaturesEXT; 534 nextPtr = &physicalDeviceNonSeamlessCubeMapFeaturesEXT.pNext; 535 } 536#endif // defined(CTS_USES_VULKAN) 537 538#if defined(CTS_USES_VULKAN) 539 vk::VkPhysicalDeviceOpacityMicromapFeaturesEXT physicalDeviceOpacityMicromapFeaturesEXT; 540 deMemset(&physicalDeviceOpacityMicromapFeaturesEXT, 0, sizeof(physicalDeviceOpacityMicromapFeaturesEXT)); 541 542 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_opacity_micromap") ) 543 { 544 physicalDeviceOpacityMicromapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceOpacityMicromapFeaturesEXT>(); 545 *nextPtr = &physicalDeviceOpacityMicromapFeaturesEXT; 546 nextPtr = &physicalDeviceOpacityMicromapFeaturesEXT.pNext; 547 } 548#endif // defined(CTS_USES_VULKAN) 549 550#if defined(CTS_USES_VULKAN) 551 vk::VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT physicalDevicePageableDeviceLocalMemoryFeaturesEXT; 552 deMemset(&physicalDevicePageableDeviceLocalMemoryFeaturesEXT, 0, sizeof(physicalDevicePageableDeviceLocalMemoryFeaturesEXT)); 553 554 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_pageable_device_local_memory") ) 555 { 556 physicalDevicePageableDeviceLocalMemoryFeaturesEXT.sType = getStructureType<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(); 557 *nextPtr = &physicalDevicePageableDeviceLocalMemoryFeaturesEXT; 558 nextPtr = &physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pNext; 559 } 560#endif // defined(CTS_USES_VULKAN) 561 562 vk::VkPhysicalDevicePerformanceQueryFeaturesKHR physicalDevicePerformanceQueryFeaturesKHR; 563 deMemset(&physicalDevicePerformanceQueryFeaturesKHR, 0, sizeof(physicalDevicePerformanceQueryFeaturesKHR)); 564 565 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_performance_query") ) 566 { 567 physicalDevicePerformanceQueryFeaturesKHR.sType = getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>(); 568 *nextPtr = &physicalDevicePerformanceQueryFeaturesKHR; 569 nextPtr = &physicalDevicePerformanceQueryFeaturesKHR.pNext; 570 } 571 572 vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR physicalDevicePipelineExecutablePropertiesFeaturesKHR; 573 deMemset(&physicalDevicePipelineExecutablePropertiesFeaturesKHR, 0, sizeof(physicalDevicePipelineExecutablePropertiesFeaturesKHR)); 574 575 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_pipeline_executable_properties") ) 576 { 577 physicalDevicePipelineExecutablePropertiesFeaturesKHR.sType = getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(); 578 *nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR; 579 nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR.pNext; 580 } 581 582 vk::VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT physicalDevicePipelineLibraryGroupHandlesFeaturesEXT; 583 deMemset(&physicalDevicePipelineLibraryGroupHandlesFeaturesEXT, 0, sizeof(physicalDevicePipelineLibraryGroupHandlesFeaturesEXT)); 584 585 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_pipeline_library_group_handles") ) 586 { 587 physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.sType = getStructureType<VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT>(); 588 *nextPtr = &physicalDevicePipelineLibraryGroupHandlesFeaturesEXT; 589 nextPtr = &physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.pNext; 590 } 591 592 vk::VkPhysicalDevicePipelineProtectedAccessFeaturesEXT physicalDevicePipelineProtectedAccessFeaturesEXT; 593 deMemset(&physicalDevicePipelineProtectedAccessFeaturesEXT, 0, sizeof(physicalDevicePipelineProtectedAccessFeaturesEXT)); 594 595 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_pipeline_protected_access") ) 596 { 597 physicalDevicePipelineProtectedAccessFeaturesEXT.sType = getStructureType<VkPhysicalDevicePipelineProtectedAccessFeaturesEXT>(); 598 *nextPtr = &physicalDevicePipelineProtectedAccessFeaturesEXT; 599 nextPtr = &physicalDevicePipelineProtectedAccessFeaturesEXT.pNext; 600 } 601 602#if defined(CTS_USES_VULKAN) 603 vk::VkPhysicalDevicePresentIdFeaturesKHR physicalDevicePresentIdFeaturesKHR; 604 deMemset(&physicalDevicePresentIdFeaturesKHR, 0, sizeof(physicalDevicePresentIdFeaturesKHR)); 605 606 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_present_id") ) 607 { 608 physicalDevicePresentIdFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentIdFeaturesKHR>(); 609 *nextPtr = &physicalDevicePresentIdFeaturesKHR; 610 nextPtr = &physicalDevicePresentIdFeaturesKHR.pNext; 611 } 612#endif // defined(CTS_USES_VULKAN) 613 614#if defined(CTS_USES_VULKAN) 615 vk::VkPhysicalDevicePresentWaitFeaturesKHR physicalDevicePresentWaitFeaturesKHR; 616 deMemset(&physicalDevicePresentWaitFeaturesKHR, 0, sizeof(physicalDevicePresentWaitFeaturesKHR)); 617 618 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_present_wait") ) 619 { 620 physicalDevicePresentWaitFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentWaitFeaturesKHR>(); 621 *nextPtr = &physicalDevicePresentWaitFeaturesKHR; 622 nextPtr = &physicalDevicePresentWaitFeaturesKHR.pNext; 623 } 624#endif // defined(CTS_USES_VULKAN) 625 626#if defined(CTS_USES_VULKAN) 627 vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT physicalDevicePrimitiveTopologyListRestartFeaturesEXT; 628 deMemset(&physicalDevicePrimitiveTopologyListRestartFeaturesEXT, 0, sizeof(physicalDevicePrimitiveTopologyListRestartFeaturesEXT)); 629 630 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_primitive_topology_list_restart") ) 631 { 632 physicalDevicePrimitiveTopologyListRestartFeaturesEXT.sType = getStructureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(); 633 *nextPtr = &physicalDevicePrimitiveTopologyListRestartFeaturesEXT; 634 nextPtr = &physicalDevicePrimitiveTopologyListRestartFeaturesEXT.pNext; 635 } 636#endif // defined(CTS_USES_VULKAN) 637 638#if defined(CTS_USES_VULKAN) 639 vk::VkPhysicalDeviceProvokingVertexFeaturesEXT physicalDeviceProvokingVertexFeaturesEXT; 640 deMemset(&physicalDeviceProvokingVertexFeaturesEXT, 0, sizeof(physicalDeviceProvokingVertexFeaturesEXT)); 641 642 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_provoking_vertex") ) 643 { 644 physicalDeviceProvokingVertexFeaturesEXT.sType = getStructureType<VkPhysicalDeviceProvokingVertexFeaturesEXT>(); 645 *nextPtr = &physicalDeviceProvokingVertexFeaturesEXT; 646 nextPtr = &physicalDeviceProvokingVertexFeaturesEXT.pNext; 647 } 648#endif // defined(CTS_USES_VULKAN) 649 650 vk::VkPhysicalDeviceRayQueryFeaturesKHR physicalDeviceRayQueryFeaturesKHR; 651 deMemset(&physicalDeviceRayQueryFeaturesKHR, 0, sizeof(physicalDeviceRayQueryFeaturesKHR)); 652 653 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_query") ) 654 { 655 physicalDeviceRayQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayQueryFeaturesKHR>(); 656 *nextPtr = &physicalDeviceRayQueryFeaturesKHR; 657 nextPtr = &physicalDeviceRayQueryFeaturesKHR.pNext; 658 } 659 660 vk::VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR physicalDeviceRayTracingMaintenance1FeaturesKHR; 661 deMemset(&physicalDeviceRayTracingMaintenance1FeaturesKHR, 0, sizeof(physicalDeviceRayTracingMaintenance1FeaturesKHR)); 662 663 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_tracing_maintenance1") ) 664 { 665 physicalDeviceRayTracingMaintenance1FeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>(); 666 *nextPtr = &physicalDeviceRayTracingMaintenance1FeaturesKHR; 667 nextPtr = &physicalDeviceRayTracingMaintenance1FeaturesKHR.pNext; 668 } 669 670 vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR physicalDeviceRayTracingPipelineFeaturesKHR; 671 deMemset(&physicalDeviceRayTracingPipelineFeaturesKHR, 0, sizeof(physicalDeviceRayTracingPipelineFeaturesKHR)); 672 673 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_tracing_pipeline") ) 674 { 675 physicalDeviceRayTracingPipelineFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(); 676 *nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR; 677 nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR.pNext; 678 } 679 680 vk::VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR physicalDeviceRayTracingPositionFetchFeaturesKHR; 681 deMemset(&physicalDeviceRayTracingPositionFetchFeaturesKHR, 0, sizeof(physicalDeviceRayTracingPositionFetchFeaturesKHR)); 682 683 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_ray_tracing_position_fetch") ) 684 { 685 physicalDeviceRayTracingPositionFetchFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR>(); 686 *nextPtr = &physicalDeviceRayTracingPositionFetchFeaturesKHR; 687 nextPtr = &physicalDeviceRayTracingPositionFetchFeaturesKHR.pNext; 688 } 689 690#if defined(CTS_USES_VULKAN) 691 vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV physicalDeviceRepresentativeFragmentTestFeaturesNV; 692 deMemset(&physicalDeviceRepresentativeFragmentTestFeaturesNV, 0, sizeof(physicalDeviceRepresentativeFragmentTestFeaturesNV)); 693 694 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_NV_representative_fragment_test") ) 695 { 696 physicalDeviceRepresentativeFragmentTestFeaturesNV.sType = getStructureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(); 697 *nextPtr = &physicalDeviceRepresentativeFragmentTestFeaturesNV; 698 nextPtr = &physicalDeviceRepresentativeFragmentTestFeaturesNV.pNext; 699 } 700#endif // defined(CTS_USES_VULKAN) 701 702 vk::VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR physicalDeviceSamplerYcbcrConversionFeaturesKHR; 703 deMemset(&physicalDeviceSamplerYcbcrConversionFeaturesKHR, 0, sizeof(physicalDeviceSamplerYcbcrConversionFeaturesKHR)); 704 705 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_sampler_ycbcr_conversion") ) 706 { 707 physicalDeviceSamplerYcbcrConversionFeaturesKHR.sType = getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR>(); 708 *nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR; 709 nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR.pNext; 710 } 711 712 vk::VkPhysicalDeviceScalarBlockLayoutFeatures physicalDeviceScalarBlockLayoutFeatures; 713 deMemset(&physicalDeviceScalarBlockLayoutFeatures, 0, sizeof(physicalDeviceScalarBlockLayoutFeatures)); 714 715 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_scalar_block_layout") ) 716 { 717 physicalDeviceScalarBlockLayoutFeatures.sType = getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures>(); 718 *nextPtr = &physicalDeviceScalarBlockLayoutFeatures; 719 nextPtr = &physicalDeviceScalarBlockLayoutFeatures.pNext; 720 } 721 722 vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures physicalDeviceSeparateDepthStencilLayoutsFeatures; 723 deMemset(&physicalDeviceSeparateDepthStencilLayoutsFeatures, 0, sizeof(physicalDeviceSeparateDepthStencilLayoutsFeatures)); 724 725 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_separate_depth_stencil_layouts") ) 726 { 727 physicalDeviceSeparateDepthStencilLayoutsFeatures.sType = getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(); 728 *nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeatures; 729 nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeatures.pNext; 730 } 731 732#if defined(CTS_USES_VULKAN) 733 vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT physicalDeviceShaderAtomicFloat2FeaturesEXT; 734 deMemset(&physicalDeviceShaderAtomicFloat2FeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloat2FeaturesEXT)); 735 736 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_atomic_float2") ) 737 { 738 physicalDeviceShaderAtomicFloat2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(); 739 *nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT; 740 nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext; 741 } 742#endif // defined(CTS_USES_VULKAN) 743 744 vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT physicalDeviceShaderAtomicFloatFeaturesEXT; 745 deMemset(&physicalDeviceShaderAtomicFloatFeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloatFeaturesEXT)); 746 747 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_atomic_float") ) 748 { 749 physicalDeviceShaderAtomicFloatFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(); 750 *nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT; 751 nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT.pNext; 752 } 753 754 vk::VkPhysicalDeviceShaderAtomicInt64Features physicalDeviceShaderAtomicInt64Features; 755 deMemset(&physicalDeviceShaderAtomicInt64Features, 0, sizeof(physicalDeviceShaderAtomicInt64Features)); 756 757 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_atomic_int64") ) 758 { 759 physicalDeviceShaderAtomicInt64Features.sType = getStructureType<VkPhysicalDeviceShaderAtomicInt64Features>(); 760 *nextPtr = &physicalDeviceShaderAtomicInt64Features; 761 nextPtr = &physicalDeviceShaderAtomicInt64Features.pNext; 762 } 763 764 vk::VkPhysicalDeviceShaderClockFeaturesKHR physicalDeviceShaderClockFeaturesKHR; 765 deMemset(&physicalDeviceShaderClockFeaturesKHR, 0, sizeof(physicalDeviceShaderClockFeaturesKHR)); 766 767 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_clock") ) 768 { 769 physicalDeviceShaderClockFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR>(); 770 *nextPtr = &physicalDeviceShaderClockFeaturesKHR; 771 nextPtr = &physicalDeviceShaderClockFeaturesKHR.pNext; 772 } 773 774 vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; 775 deMemset(&physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, 0, sizeof(physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)); 776 777 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_demote_to_helper_invocation") ) 778 { 779 physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(); 780 *nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; 781 nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.pNext; 782 } 783 784 vk::VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; 785 deMemset(&physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, 0, sizeof(physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)); 786 787 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_AMD_shader_early_and_late_fragment_tests") ) 788 { 789 physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.sType = getStructureType<VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>(); 790 *nextPtr = &physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; 791 nextPtr = &physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.pNext; 792 } 793 794#if defined(CTS_USES_VULKAN) 795 vk::VkPhysicalDeviceShaderExpectAssumeFeaturesKHR physicalDeviceShaderExpectAssumeFeaturesKHR; 796 deMemset(&physicalDeviceShaderExpectAssumeFeaturesKHR, 0, sizeof(physicalDeviceShaderExpectAssumeFeaturesKHR)); 797 798 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_expect_assume") ) 799 { 800 physicalDeviceShaderExpectAssumeFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderExpectAssumeFeaturesKHR>(); 801 *nextPtr = &physicalDeviceShaderExpectAssumeFeaturesKHR; 802 nextPtr = &physicalDeviceShaderExpectAssumeFeaturesKHR.pNext; 803 } 804#endif // defined(CTS_USES_VULKAN) 805 806 vk::VkPhysicalDeviceShaderFloat16Int8Features physicalDeviceShaderFloat16Int8Features; 807 deMemset(&physicalDeviceShaderFloat16Int8Features, 0, sizeof(physicalDeviceShaderFloat16Int8Features)); 808 809 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_float16_int8") ) 810 { 811 physicalDeviceShaderFloat16Int8Features.sType = getStructureType<VkPhysicalDeviceShaderFloat16Int8Features>(); 812 *nextPtr = &physicalDeviceShaderFloat16Int8Features; 813 nextPtr = &physicalDeviceShaderFloat16Int8Features.pNext; 814 } 815 816 vk::VkPhysicalDeviceShaderFloatControls2FeaturesKHR physicalDeviceShaderFloatControls2FeaturesKHR; 817 deMemset(&physicalDeviceShaderFloatControls2FeaturesKHR, 0, sizeof(physicalDeviceShaderFloatControls2FeaturesKHR)); 818 819 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_float_controls2") ) 820 { 821 physicalDeviceShaderFloatControls2FeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderFloatControls2FeaturesKHR>(); 822 *nextPtr = &physicalDeviceShaderFloatControls2FeaturesKHR; 823 nextPtr = &physicalDeviceShaderFloatControls2FeaturesKHR.pNext; 824 } 825 826 vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT physicalDeviceShaderImageAtomicInt64FeaturesEXT; 827 deMemset(&physicalDeviceShaderImageAtomicInt64FeaturesEXT, 0, sizeof(physicalDeviceShaderImageAtomicInt64FeaturesEXT)); 828 829 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_image_atomic_int64") ) 830 { 831 physicalDeviceShaderImageAtomicInt64FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(); 832 *nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT; 833 nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT.pNext; 834 } 835 836#if defined(CTS_USES_VULKAN) 837 vk::VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR physicalDeviceShaderIntegerDotProductFeaturesKHR; 838 deMemset(&physicalDeviceShaderIntegerDotProductFeaturesKHR, 0, sizeof(physicalDeviceShaderIntegerDotProductFeaturesKHR)); 839 840 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_integer_dot_product") ) 841 { 842 physicalDeviceShaderIntegerDotProductFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>(); 843 *nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR; 844 nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR.pNext; 845 } 846#endif // defined(CTS_USES_VULKAN) 847 848 vk::VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR physicalDeviceShaderMaximalReconvergenceFeaturesKHR; 849 deMemset(&physicalDeviceShaderMaximalReconvergenceFeaturesKHR, 0, sizeof(physicalDeviceShaderMaximalReconvergenceFeaturesKHR)); 850 851 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_maximal_reconvergence") ) 852 { 853 physicalDeviceShaderMaximalReconvergenceFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR>(); 854 *nextPtr = &physicalDeviceShaderMaximalReconvergenceFeaturesKHR; 855 nextPtr = &physicalDeviceShaderMaximalReconvergenceFeaturesKHR.pNext; 856 } 857 858 vk::VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT physicalDeviceShaderModuleIdentifierFeaturesEXT; 859 deMemset(&physicalDeviceShaderModuleIdentifierFeaturesEXT, 0, sizeof(physicalDeviceShaderModuleIdentifierFeaturesEXT)); 860 861 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_module_identifier") ) 862 { 863 physicalDeviceShaderModuleIdentifierFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT>(); 864 *nextPtr = &physicalDeviceShaderModuleIdentifierFeaturesEXT; 865 nextPtr = &physicalDeviceShaderModuleIdentifierFeaturesEXT.pNext; 866 } 867 868 vk::VkPhysicalDeviceShaderObjectFeaturesEXT physicalDeviceShaderObjectFeaturesEXT; 869 deMemset(&physicalDeviceShaderObjectFeaturesEXT, 0, sizeof(physicalDeviceShaderObjectFeaturesEXT)); 870 871 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_shader_object") ) 872 { 873 physicalDeviceShaderObjectFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderObjectFeaturesEXT>(); 874 *nextPtr = &physicalDeviceShaderObjectFeaturesEXT; 875 nextPtr = &physicalDeviceShaderObjectFeaturesEXT.pNext; 876 } 877 878 vk::VkPhysicalDeviceShaderQuadControlFeaturesKHR physicalDeviceShaderQuadControlFeaturesKHR; 879 deMemset(&physicalDeviceShaderQuadControlFeaturesKHR, 0, sizeof(physicalDeviceShaderQuadControlFeaturesKHR)); 880 881 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_quad_control") ) 882 { 883 physicalDeviceShaderQuadControlFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderQuadControlFeaturesKHR>(); 884 *nextPtr = &physicalDeviceShaderQuadControlFeaturesKHR; 885 nextPtr = &physicalDeviceShaderQuadControlFeaturesKHR.pNext; 886 } 887 888 vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures physicalDeviceShaderSubgroupExtendedTypesFeatures; 889 deMemset(&physicalDeviceShaderSubgroupExtendedTypesFeatures, 0, sizeof(physicalDeviceShaderSubgroupExtendedTypesFeatures)); 890 891 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_subgroup_extended_types") ) 892 { 893 physicalDeviceShaderSubgroupExtendedTypesFeatures.sType = getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(); 894 *nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeatures; 895 nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeatures.pNext; 896 } 897 898 vk::VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR physicalDeviceShaderSubgroupRotateFeaturesKHR; 899 deMemset(&physicalDeviceShaderSubgroupRotateFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupRotateFeaturesKHR)); 900 901 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_subgroup_rotate") ) 902 { 903 physicalDeviceShaderSubgroupRotateFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR>(); 904 *nextPtr = &physicalDeviceShaderSubgroupRotateFeaturesKHR; 905 nextPtr = &physicalDeviceShaderSubgroupRotateFeaturesKHR.pNext; 906 } 907 908 vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; 909 deMemset(&physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)); 910 911 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_subgroup_uniform_control_flow") ) 912 { 913 physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(); 914 *nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; 915 nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.pNext; 916 } 917 918 vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR physicalDeviceShaderTerminateInvocationFeaturesKHR; 919 deMemset(&physicalDeviceShaderTerminateInvocationFeaturesKHR, 0, sizeof(physicalDeviceShaderTerminateInvocationFeaturesKHR)); 920 921 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_shader_terminate_invocation") ) 922 { 923 physicalDeviceShaderTerminateInvocationFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>(); 924 *nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR; 925 nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR.pNext; 926 } 927 928#if defined(CTS_USES_VULKAN) 929 vk::VkPhysicalDeviceShadingRateImageFeaturesNV physicalDeviceShadingRateImageFeaturesNV; 930 deMemset(&physicalDeviceShadingRateImageFeaturesNV, 0, sizeof(physicalDeviceShadingRateImageFeaturesNV)); 931 932 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_NV_shading_rate_image") ) 933 { 934 physicalDeviceShadingRateImageFeaturesNV.sType = getStructureType<VkPhysicalDeviceShadingRateImageFeaturesNV>(); 935 *nextPtr = &physicalDeviceShadingRateImageFeaturesNV; 936 nextPtr = &physicalDeviceShadingRateImageFeaturesNV.pNext; 937 } 938#endif // defined(CTS_USES_VULKAN) 939 940 vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT physicalDeviceSubgroupSizeControlFeaturesEXT; 941 deMemset(&physicalDeviceSubgroupSizeControlFeaturesEXT, 0, sizeof(physicalDeviceSubgroupSizeControlFeaturesEXT)); 942 943 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_subgroup_size_control") ) 944 { 945 physicalDeviceSubgroupSizeControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(); 946 *nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT; 947 nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT.pNext; 948 } 949 950 vk::VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT physicalDeviceSubpassMergeFeedbackFeaturesEXT; 951 deMemset(&physicalDeviceSubpassMergeFeedbackFeaturesEXT, 0, sizeof(physicalDeviceSubpassMergeFeedbackFeaturesEXT)); 952 953 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_subpass_merge_feedback") ) 954 { 955 physicalDeviceSubpassMergeFeedbackFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>(); 956 *nextPtr = &physicalDeviceSubpassMergeFeedbackFeaturesEXT; 957 nextPtr = &physicalDeviceSubpassMergeFeedbackFeaturesEXT.pNext; 958 } 959 960 vk::VkPhysicalDeviceSynchronization2FeaturesKHR physicalDeviceSynchronization2FeaturesKHR; 961 deMemset(&physicalDeviceSynchronization2FeaturesKHR, 0, sizeof(physicalDeviceSynchronization2FeaturesKHR)); 962 963 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_synchronization2") ) 964 { 965 physicalDeviceSynchronization2FeaturesKHR.sType = getStructureType<VkPhysicalDeviceSynchronization2FeaturesKHR>(); 966 *nextPtr = &physicalDeviceSynchronization2FeaturesKHR; 967 nextPtr = &physicalDeviceSynchronization2FeaturesKHR.pNext; 968 } 969 970 vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT physicalDeviceTexelBufferAlignmentFeaturesEXT; 971 deMemset(&physicalDeviceTexelBufferAlignmentFeaturesEXT, 0, sizeof(physicalDeviceTexelBufferAlignmentFeaturesEXT)); 972 973 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_texel_buffer_alignment") ) 974 { 975 physicalDeviceTexelBufferAlignmentFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(); 976 *nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT; 977 nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT.pNext; 978 } 979 980 vk::VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT physicalDeviceTextureCompressionASTCHDRFeaturesEXT; 981 deMemset(&physicalDeviceTextureCompressionASTCHDRFeaturesEXT, 0, sizeof(physicalDeviceTextureCompressionASTCHDRFeaturesEXT)); 982 983 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_texture_compression_astc_hdr") ) 984 { 985 physicalDeviceTextureCompressionASTCHDRFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(); 986 *nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT; 987 nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT.pNext; 988 } 989 990#if defined(CTS_USES_VULKAN) 991 vk::VkPhysicalDeviceTimelineSemaphoreFeatures physicalDeviceTimelineSemaphoreFeatures; 992 deMemset(&physicalDeviceTimelineSemaphoreFeatures, 0, sizeof(physicalDeviceTimelineSemaphoreFeatures)); 993 994 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_timeline_semaphore") ) 995 { 996 physicalDeviceTimelineSemaphoreFeatures.sType = getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures>(); 997 *nextPtr = &physicalDeviceTimelineSemaphoreFeatures; 998 nextPtr = &physicalDeviceTimelineSemaphoreFeatures.pNext; 999 } 1000#endif // defined(CTS_USES_VULKAN) 1001 1002#if defined(CTS_USES_VULKAN) 1003 vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT physicalDeviceTransformFeedbackFeaturesEXT; 1004 deMemset(&physicalDeviceTransformFeedbackFeaturesEXT, 0, sizeof(physicalDeviceTransformFeedbackFeaturesEXT)); 1005 1006 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_transform_feedback") ) 1007 { 1008 physicalDeviceTransformFeedbackFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(); 1009 *nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT; 1010 nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT.pNext; 1011 } 1012#endif // defined(CTS_USES_VULKAN) 1013 1014 vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures physicalDeviceUniformBufferStandardLayoutFeatures; 1015 deMemset(&physicalDeviceUniformBufferStandardLayoutFeatures, 0, sizeof(physicalDeviceUniformBufferStandardLayoutFeatures)); 1016 1017 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_uniform_buffer_standard_layout") ) 1018 { 1019 physicalDeviceUniformBufferStandardLayoutFeatures.sType = getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(); 1020 *nextPtr = &physicalDeviceUniformBufferStandardLayoutFeatures; 1021 nextPtr = &physicalDeviceUniformBufferStandardLayoutFeatures.pNext; 1022 } 1023 1024 vk::VkPhysicalDeviceVariablePointersFeatures physicalDeviceVariablePointersFeatures; 1025 deMemset(&physicalDeviceVariablePointersFeatures, 0, sizeof(physicalDeviceVariablePointersFeatures)); 1026 1027 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_variable_pointers") ) 1028 { 1029 physicalDeviceVariablePointersFeatures.sType = getStructureType<VkPhysicalDeviceVariablePointersFeatures>(); 1030 *nextPtr = &physicalDeviceVariablePointersFeatures; 1031 nextPtr = &physicalDeviceVariablePointersFeatures.pNext; 1032 } 1033 1034 vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR physicalDeviceVertexAttributeDivisorFeaturesKHR; 1035 deMemset(&physicalDeviceVertexAttributeDivisorFeaturesKHR, 0, sizeof(physicalDeviceVertexAttributeDivisorFeaturesKHR)); 1036 1037 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_vertex_attribute_divisor") || canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_vertex_attribute_divisor") ) 1038 { 1039 physicalDeviceVertexAttributeDivisorFeaturesKHR.sType = getStructureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR>(); 1040 *nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesKHR; 1041 nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesKHR.pNext; 1042 } 1043 1044 vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT physicalDeviceVertexInputDynamicStateFeaturesEXT; 1045 deMemset(&physicalDeviceVertexInputDynamicStateFeaturesEXT, 0, sizeof(physicalDeviceVertexInputDynamicStateFeaturesEXT)); 1046 1047 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_vertex_input_dynamic_state") ) 1048 { 1049 physicalDeviceVertexInputDynamicStateFeaturesEXT.sType = getStructureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(); 1050 *nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT; 1051 nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT.pNext; 1052 } 1053 1054#if defined(CTS_USES_VULKAN) 1055 vk::VkPhysicalDeviceVulkan11Features physicalDeviceVulkan11Features; 1056 deMemset(&physicalDeviceVulkan11Features, 0, sizeof(physicalDeviceVulkan11Features)); 1057 1058 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 1059 { 1060 physicalDeviceVulkan11Features.sType = getStructureType<VkPhysicalDeviceVulkan11Features>(); 1061 *nextPtr = &physicalDeviceVulkan11Features; 1062 nextPtr = &physicalDeviceVulkan11Features.pNext; 1063 } 1064#endif // defined(CTS_USES_VULKAN) 1065 1066 vk::VkPhysicalDeviceVulkan12Features physicalDeviceVulkan12Features; 1067 deMemset(&physicalDeviceVulkan12Features, 0, sizeof(physicalDeviceVulkan12Features)); 1068 1069 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) || context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 1070 { 1071 physicalDeviceVulkan12Features.sType = getStructureType<VkPhysicalDeviceVulkan12Features>(); 1072 *nextPtr = &physicalDeviceVulkan12Features; 1073 nextPtr = &physicalDeviceVulkan12Features.pNext; 1074 } 1075 1076#if defined(CTS_USES_VULKAN) 1077 vk::VkPhysicalDeviceVulkan13Features physicalDeviceVulkan13Features; 1078 deMemset(&physicalDeviceVulkan13Features, 0, sizeof(physicalDeviceVulkan13Features)); 1079 1080 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 1081 { 1082 physicalDeviceVulkan13Features.sType = getStructureType<VkPhysicalDeviceVulkan13Features>(); 1083 *nextPtr = &physicalDeviceVulkan13Features; 1084 nextPtr = &physicalDeviceVulkan13Features.pNext; 1085 } 1086#endif // defined(CTS_USES_VULKAN) 1087 1088 vk::VkPhysicalDeviceVulkanMemoryModelFeatures physicalDeviceVulkanMemoryModelFeatures; 1089 deMemset(&physicalDeviceVulkanMemoryModelFeatures, 0, sizeof(physicalDeviceVulkanMemoryModelFeatures)); 1090 1091 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_vulkan_memory_model") ) 1092 { 1093 physicalDeviceVulkanMemoryModelFeatures.sType = getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures>(); 1094 *nextPtr = &physicalDeviceVulkanMemoryModelFeatures; 1095 nextPtr = &physicalDeviceVulkanMemoryModelFeatures.pNext; 1096 } 1097 1098 vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; 1099 deMemset(&physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, 0, sizeof(physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)); 1100 1101 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_workgroup_memory_explicit_layout") ) 1102 { 1103 physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType = getStructureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(); 1104 *nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; 1105 nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.pNext; 1106 } 1107 1108 vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT physicalDeviceYcbcr2Plane444FormatsFeaturesEXT; 1109 deMemset(&physicalDeviceYcbcr2Plane444FormatsFeaturesEXT, 0, sizeof(physicalDeviceYcbcr2Plane444FormatsFeaturesEXT)); 1110 1111 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_ycbcr_2plane_444_formats") ) 1112 { 1113 physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(); 1114 *nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT; 1115 nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext; 1116 } 1117 1118 vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT physicalDeviceYcbcrImageArraysFeaturesEXT; 1119 deMemset(&physicalDeviceYcbcrImageArraysFeaturesEXT, 0, sizeof(physicalDeviceYcbcrImageArraysFeaturesEXT)); 1120 1121 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_EXT_ycbcr_image_arrays") ) 1122 { 1123 physicalDeviceYcbcrImageArraysFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(); 1124 *nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT; 1125 nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT.pNext; 1126 } 1127 1128 vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; 1129 deMemset(&physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR, 0, sizeof(physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)); 1130 1131 if ( canUseFeaturesStruct(deviceExtensions, usedApiVersion, "VK_KHR_zero_initialize_workgroup_memory") ) 1132 { 1133 physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>(); 1134 *nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; 1135 nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.pNext; 1136 } 1137 1138 context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &coreFeatures); 1139 bool result = true; 1140 1141 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_AMD_shader_early_and_late_fragment_tests")) ) 1142 { 1143 if ( physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.shaderEarlyAndLateFragmentTests == VK_FALSE ) 1144 { 1145 log << tcu::TestLog::Message << "Mandatory feature shaderEarlyAndLateFragmentTests not supported" << tcu::TestLog::EndMessage; 1146 result = false; 1147 } 1148 } 1149 1150 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_ANDROID_external_format_resolve")) ) 1151 { 1152 if ( physicalDeviceExternalFormatResolveFeaturesANDROID.externalFormatResolve == VK_FALSE ) 1153 { 1154 log << tcu::TestLog::Message << "Mandatory feature externalFormatResolve not supported" << tcu::TestLog::EndMessage; 1155 result = false; 1156 } 1157 } 1158 1159 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) ) 1160 { 1161 if ( physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 == VK_FALSE ) 1162 { 1163 log << tcu::TestLog::Message << "Mandatory feature formatA4R4G4B4 not supported" << tcu::TestLog::EndMessage; 1164 result = false; 1165 } 1166 } 1167 1168#if defined(CTS_USES_VULKAN) 1169 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_attachment_feedback_loop_dynamic_state")) ) 1170 { 1171 if ( physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.attachmentFeedbackLoopDynamicState == VK_FALSE ) 1172 { 1173 log << tcu::TestLog::Message << "Mandatory feature attachmentFeedbackLoopDynamicState not supported" << tcu::TestLog::EndMessage; 1174 result = false; 1175 } 1176 } 1177#endif // defined(CTS_USES_VULKAN) 1178 1179#if defined(CTS_USES_VULKAN) 1180 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_attachment_feedback_loop_layout")) ) 1181 { 1182 if ( physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.attachmentFeedbackLoopLayout == VK_FALSE ) 1183 { 1184 log << tcu::TestLog::Message << "Mandatory feature attachmentFeedbackLoopLayout not supported" << tcu::TestLog::EndMessage; 1185 result = false; 1186 } 1187 } 1188#endif // defined(CTS_USES_VULKAN) 1189 1190#if defined(CTS_USES_VULKAN) 1191 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_border_color_swizzle")) ) 1192 { 1193 if ( physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle == VK_FALSE ) 1194 { 1195 log << tcu::TestLog::Message << "Mandatory feature borderColorSwizzle not supported" << tcu::TestLog::EndMessage; 1196 result = false; 1197 } 1198 } 1199#endif // defined(CTS_USES_VULKAN) 1200 1201 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) ) 1202 { 1203 if ( physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable == VK_FALSE ) 1204 { 1205 log << tcu::TestLog::Message << "Mandatory feature colorWriteEnable not supported" << tcu::TestLog::EndMessage; 1206 result = false; 1207 } 1208 } 1209 1210 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) ) 1211 { 1212 if ( physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering == VK_FALSE ) 1213 { 1214 log << tcu::TestLog::Message << "Mandatory feature conditionalRendering not supported" << tcu::TestLog::EndMessage; 1215 result = false; 1216 } 1217 } 1218 1219#if defined(CTS_USES_VULKAN) 1220 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_bias_control")) ) 1221 { 1222 if ( physicalDeviceDepthBiasControlFeaturesEXT.depthBiasControl == VK_FALSE ) 1223 { 1224 log << tcu::TestLog::Message << "Mandatory feature depthBiasControl not supported" << tcu::TestLog::EndMessage; 1225 result = false; 1226 } 1227 } 1228#endif // defined(CTS_USES_VULKAN) 1229 1230 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clamp_zero_one")) ) 1231 { 1232 if ( physicalDeviceDepthClampZeroOneFeaturesEXT.depthClampZeroOne == VK_FALSE ) 1233 { 1234 log << tcu::TestLog::Message << "Mandatory feature depthClampZeroOne not supported" << tcu::TestLog::EndMessage; 1235 result = false; 1236 } 1237 } 1238 1239 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_control")) ) 1240 { 1241 if ( physicalDeviceDepthClipControlFeaturesEXT.depthClipControl == VK_FALSE ) 1242 { 1243 log << tcu::TestLog::Message << "Mandatory feature depthClipControl not supported" << tcu::TestLog::EndMessage; 1244 result = false; 1245 } 1246 } 1247 1248 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) ) 1249 { 1250 if ( physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable == VK_FALSE ) 1251 { 1252 log << tcu::TestLog::Message << "Mandatory feature depthClipEnable not supported" << tcu::TestLog::EndMessage; 1253 result = false; 1254 } 1255 } 1256 1257 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_buffer")) ) 1258 { 1259 if ( physicalDeviceDescriptorBufferFeaturesEXT.descriptorBuffer == VK_FALSE ) 1260 { 1261 log << tcu::TestLog::Message << "Mandatory feature descriptorBuffer not supported" << tcu::TestLog::EndMessage; 1262 result = false; 1263 } 1264 } 1265 1266 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1267 { 1268 if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 1269 { 1270 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1271 result = false; 1272 } 1273 } 1274 1275 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1276 { 1277 if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 1278 { 1279 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1280 result = false; 1281 } 1282 } 1283 1284 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1285 { 1286 if ( physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 1287 { 1288 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1289 result = false; 1290 } 1291 } 1292 1293 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1294 { 1295 if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 1296 { 1297 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1298 result = false; 1299 } 1300 } 1301 1302 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1303 { 1304 if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 1305 { 1306 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1307 result = false; 1308 } 1309 } 1310 1311 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1312 { 1313 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 1314 { 1315 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1316 result = false; 1317 } 1318 } 1319 1320 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1321 { 1322 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 1323 { 1324 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1325 result = false; 1326 } 1327 } 1328 1329 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1330 { 1331 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 1332 { 1333 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1334 result = false; 1335 } 1336 } 1337 1338 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1339 { 1340 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 1341 { 1342 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1343 result = false; 1344 } 1345 } 1346 1347 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1348 { 1349 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 1350 { 1351 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1352 result = false; 1353 } 1354 } 1355 1356 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1357 { 1358 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 1359 { 1360 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 1361 result = false; 1362 } 1363 } 1364 1365 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1366 { 1367 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound == VK_FALSE ) 1368 { 1369 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 1370 result = false; 1371 } 1372 } 1373 1374 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1375 { 1376 if ( physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray == VK_FALSE ) 1377 { 1378 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 1379 result = false; 1380 } 1381 } 1382 1383 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1384 { 1385 if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 1386 { 1387 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1388 result = false; 1389 } 1390 } 1391 1392 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1393 { 1394 if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 1395 { 1396 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1397 result = false; 1398 } 1399 } 1400 1401 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1402 { 1403 if ( physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 1404 { 1405 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1406 result = false; 1407 } 1408 } 1409 1410 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1411 { 1412 if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 1413 { 1414 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1415 result = false; 1416 } 1417 } 1418 1419 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1420 { 1421 if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 1422 { 1423 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 1424 result = false; 1425 } 1426 } 1427 1428 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1429 { 1430 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 1431 { 1432 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1433 result = false; 1434 } 1435 } 1436 1437 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1438 { 1439 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 1440 { 1441 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1442 result = false; 1443 } 1444 } 1445 1446 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1447 { 1448 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 1449 { 1450 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1451 result = false; 1452 } 1453 } 1454 1455 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1456 { 1457 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 1458 { 1459 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1460 result = false; 1461 } 1462 } 1463 1464 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1465 { 1466 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 1467 { 1468 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1469 result = false; 1470 } 1471 } 1472 1473 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1474 { 1475 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 1476 { 1477 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 1478 result = false; 1479 } 1480 } 1481 1482 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1483 { 1484 if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound == VK_FALSE ) 1485 { 1486 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 1487 result = false; 1488 } 1489 } 1490 1491 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1492 { 1493 if ( physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray == VK_FALSE ) 1494 { 1495 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 1496 result = false; 1497 } 1498 } 1499 1500 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1501 { 1502 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 1503 { 1504 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1505 result = false; 1506 } 1507 } 1508 1509 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1510 { 1511 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 1512 { 1513 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1514 result = false; 1515 } 1516 } 1517 1518 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1519 { 1520 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 1521 { 1522 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1523 result = false; 1524 } 1525 } 1526 1527 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 1528 { 1529 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 1530 { 1531 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 1532 result = false; 1533 } 1534 } 1535 1536 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_device_address_binding_report")) ) 1537 { 1538 if ( physicalDeviceAddressBindingReportFeaturesEXT.reportAddressBinding == VK_FALSE ) 1539 { 1540 log << tcu::TestLog::Message << "Mandatory feature reportAddressBinding not supported" << tcu::TestLog::EndMessage; 1541 result = false; 1542 } 1543 } 1544 1545 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_device_fault")) ) 1546 { 1547 if ( physicalDeviceFaultFeaturesEXT.deviceFault == VK_FALSE ) 1548 { 1549 log << tcu::TestLog::Message << "Mandatory feature deviceFault not supported" << tcu::TestLog::EndMessage; 1550 result = false; 1551 } 1552 } 1553 1554 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_dynamic_rendering_unused_attachments")) ) 1555 { 1556 if ( physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.dynamicRenderingUnusedAttachments == VK_FALSE ) 1557 { 1558 log << tcu::TestLog::Message << "Mandatory feature dynamicRenderingUnusedAttachments not supported" << tcu::TestLog::EndMessage; 1559 result = false; 1560 } 1561 } 1562 1563 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) ) 1564 { 1565 if ( physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 == VK_FALSE ) 1566 { 1567 log << tcu::TestLog::Message << "Mandatory feature extendedDynamicState2 not supported" << tcu::TestLog::EndMessage; 1568 result = false; 1569 } 1570 } 1571 1572#if defined(CTS_USES_VULKAN) 1573 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageReductionMode ) 1574 { 1575 if ( physicalDeviceCoverageReductionModeFeaturesNV.coverageReductionMode == VK_FALSE ) 1576 { 1577 log << tcu::TestLog::Message << "Mandatory feature coverageReductionMode not supported" << tcu::TestLog::EndMessage; 1578 result = false; 1579 } 1580 } 1581#endif // defined(CTS_USES_VULKAN) 1582 1583#if defined(CTS_USES_VULKAN) 1584 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClipNegativeOneToOne ) 1585 { 1586 if ( physicalDeviceDepthClipControlFeaturesEXT.depthClipControl == VK_FALSE ) 1587 { 1588 log << tcu::TestLog::Message << "Mandatory feature depthClipControl not supported" << tcu::TestLog::EndMessage; 1589 result = false; 1590 } 1591 } 1592#endif // defined(CTS_USES_VULKAN) 1593 1594#if defined(CTS_USES_VULKAN) 1595 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3TessellationDomainOrigin ) 1596 { 1597 if ( coreFeatures.features.tessellationShader == VK_FALSE ) 1598 { 1599 log << tcu::TestLog::Message << "Mandatory feature tessellationShader not supported" << tcu::TestLog::EndMessage; 1600 result = false; 1601 } 1602 } 1603#endif // defined(CTS_USES_VULKAN) 1604 1605#if defined(CTS_USES_VULKAN) 1606 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClampEnable ) 1607 { 1608 if ( coreFeatures.features.depthClamp == VK_FALSE ) 1609 { 1610 log << tcu::TestLog::Message << "Mandatory feature depthClamp not supported" << tcu::TestLog::EndMessage; 1611 result = false; 1612 } 1613 } 1614#endif // defined(CTS_USES_VULKAN) 1615 1616#if defined(CTS_USES_VULKAN) 1617 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3PolygonMode ) 1618 { 1619 if ( coreFeatures.features.fillModeNonSolid == VK_FALSE ) 1620 { 1621 log << tcu::TestLog::Message << "Mandatory feature fillModeNonSolid not supported" << tcu::TestLog::EndMessage; 1622 result = false; 1623 } 1624 } 1625#endif // defined(CTS_USES_VULKAN) 1626 1627#if defined(CTS_USES_VULKAN) 1628 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3AlphaToOneEnable ) 1629 { 1630 if ( coreFeatures.features.alphaToOne == VK_FALSE ) 1631 { 1632 log << tcu::TestLog::Message << "Mandatory feature alphaToOne not supported" << tcu::TestLog::EndMessage; 1633 result = false; 1634 } 1635 } 1636#endif // defined(CTS_USES_VULKAN) 1637 1638#if defined(CTS_USES_VULKAN) 1639 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LogicOpEnable ) 1640 { 1641 if ( coreFeatures.features.logicOp == VK_FALSE ) 1642 { 1643 log << tcu::TestLog::Message << "Mandatory feature logicOp not supported" << tcu::TestLog::EndMessage; 1644 result = false; 1645 } 1646 } 1647#endif // defined(CTS_USES_VULKAN) 1648 1649#if defined(CTS_USES_VULKAN) 1650 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ProvokingVertexMode ) 1651 { 1652 if ( physicalDeviceProvokingVertexFeaturesEXT.provokingVertexLast == VK_FALSE ) 1653 { 1654 log << tcu::TestLog::Message << "Mandatory feature provokingVertexLast not supported" << tcu::TestLog::EndMessage; 1655 result = false; 1656 } 1657 } 1658#endif // defined(CTS_USES_VULKAN) 1659 1660#if defined(CTS_USES_VULKAN) 1661 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RepresentativeFragmentTestEnable ) 1662 { 1663 if ( physicalDeviceRepresentativeFragmentTestFeaturesNV.representativeFragmentTest == VK_FALSE ) 1664 { 1665 log << tcu::TestLog::Message << "Mandatory feature representativeFragmentTest not supported" << tcu::TestLog::EndMessage; 1666 result = false; 1667 } 1668 } 1669#endif // defined(CTS_USES_VULKAN) 1670 1671#if defined(CTS_USES_VULKAN) 1672 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ShadingRateImageEnable ) 1673 { 1674 if ( physicalDeviceShadingRateImageFeaturesNV.shadingRateImage == VK_FALSE ) 1675 { 1676 log << tcu::TestLog::Message << "Mandatory feature shadingRateImage not supported" << tcu::TestLog::EndMessage; 1677 result = false; 1678 } 1679 } 1680#endif // defined(CTS_USES_VULKAN) 1681 1682#if defined(CTS_USES_VULKAN) 1683 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RasterizationStream ) 1684 { 1685 if ( physicalDeviceTransformFeedbackFeaturesEXT.geometryStreams == VK_FALSE ) 1686 { 1687 log << tcu::TestLog::Message << "Mandatory feature geometryStreams not supported" << tcu::TestLog::EndMessage; 1688 result = false; 1689 } 1690 } 1691#endif // defined(CTS_USES_VULKAN) 1692 1693 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_density_map")) ) 1694 { 1695 if ( physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap == VK_FALSE ) 1696 { 1697 log << tcu::TestLog::Message << "Mandatory feature fragmentDensityMap not supported" << tcu::TestLog::EndMessage; 1698 result = false; 1699 } 1700 } 1701 1702 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) ) 1703 { 1704 if ( ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock == VK_FALSE ) ) 1705 { 1706 log << tcu::TestLog::Message << "Mandatory feature fragmentShaderSampleInterlock or fragmentShaderPixelInterlock or fragmentShaderShadingRateInterlock not supported" << tcu::TestLog::EndMessage; 1707 result = false; 1708 } 1709 } 1710 1711 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_frame_boundary")) ) 1712 { 1713 if ( physicalDeviceFrameBoundaryFeaturesEXT.frameBoundary == VK_FALSE ) 1714 { 1715 log << tcu::TestLog::Message << "Mandatory feature frameBoundary not supported" << tcu::TestLog::EndMessage; 1716 result = false; 1717 } 1718 } 1719 1720 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) ) 1721 { 1722 if ( physicalDeviceHostQueryResetFeatures.hostQueryReset == VK_FALSE ) 1723 { 1724 log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage; 1725 result = false; 1726 } 1727 } 1728 1729#if defined(CTS_USES_VULKAN) 1730 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_2d_view_of_3d")) ) 1731 { 1732 if ( physicalDeviceImage2DViewOf3DFeaturesEXT.image2DViewOf3D == VK_FALSE ) 1733 { 1734 log << tcu::TestLog::Message << "Mandatory feature image2DViewOf3D not supported" << tcu::TestLog::EndMessage; 1735 result = false; 1736 } 1737 } 1738#endif // defined(CTS_USES_VULKAN) 1739 1740 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control")) ) 1741 { 1742 if ( physicalDeviceImageCompressionControlFeaturesEXT.imageCompressionControl == VK_FALSE ) 1743 { 1744 log << tcu::TestLog::Message << "Mandatory feature imageCompressionControl not supported" << tcu::TestLog::EndMessage; 1745 result = false; 1746 } 1747 } 1748 1749 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_compression_control_swapchain")) ) 1750 { 1751 if ( physicalDeviceImageCompressionControlSwapchainFeaturesEXT.imageCompressionControlSwapchain == VK_FALSE ) 1752 { 1753 log << tcu::TestLog::Message << "Mandatory feature imageCompressionControlSwapchain not supported" << tcu::TestLog::EndMessage; 1754 result = false; 1755 } 1756 } 1757 1758#if defined(CTS_USES_VULKAN) 1759 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_image_sliced_view_of_3d")) ) 1760 { 1761 if ( physicalDeviceImageSlicedViewOf3DFeaturesEXT.imageSlicedViewOf3D == VK_FALSE ) 1762 { 1763 log << tcu::TestLog::Message << "Mandatory feature imageSlicedViewOf3D not supported" << tcu::TestLog::EndMessage; 1764 result = false; 1765 } 1766 } 1767#endif // defined(CTS_USES_VULKAN) 1768 1769 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) ) 1770 { 1771 if ( physicalDeviceInlineUniformBlockFeaturesEXT.inlineUniformBlock == VK_FALSE ) 1772 { 1773 log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage; 1774 result = false; 1775 } 1776 } 1777 1778 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) ) 1779 { 1780 if ( physicalDeviceInlineUniformBlockFeaturesEXT.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE ) 1781 { 1782 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 1783 result = false; 1784 } 1785 } 1786 1787 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_legacy_dithering")) ) 1788 { 1789 if ( physicalDeviceLegacyDitheringFeaturesEXT.legacyDithering == VK_FALSE ) 1790 { 1791 log << tcu::TestLog::Message << "Mandatory feature legacyDithering not supported" << tcu::TestLog::EndMessage; 1792 result = false; 1793 } 1794 } 1795 1796 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_memory_priority")) ) 1797 { 1798 if ( physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority == VK_FALSE ) 1799 { 1800 log << tcu::TestLog::Message << "Mandatory feature memoryPriority not supported" << tcu::TestLog::EndMessage; 1801 result = false; 1802 } 1803 } 1804 1805#if defined(CTS_USES_VULKAN) 1806 if ( physicalDeviceMeshShaderFeaturesEXT.primitiveFragmentShadingRateMeshShader ) 1807 { 1808 if ( physicalDeviceFragmentShadingRateFeaturesKHR.primitiveFragmentShadingRate == VK_FALSE ) 1809 { 1810 log << tcu::TestLog::Message << "Mandatory feature primitiveFragmentShadingRate not supported" << tcu::TestLog::EndMessage; 1811 result = false; 1812 } 1813 } 1814#endif // defined(CTS_USES_VULKAN) 1815 1816#if defined(CTS_USES_VULKAN) 1817 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_mesh_shader")) ) 1818 { 1819 if ( physicalDeviceMeshShaderFeaturesEXT.meshShader == VK_FALSE ) 1820 { 1821 log << tcu::TestLog::Message << "Mandatory feature meshShader not supported" << tcu::TestLog::EndMessage; 1822 result = false; 1823 } 1824 } 1825#endif // defined(CTS_USES_VULKAN) 1826 1827#if defined(CTS_USES_VULKAN) 1828 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_mesh_shader")) ) 1829 { 1830 if ( physicalDeviceMeshShaderFeaturesEXT.taskShader == VK_FALSE ) 1831 { 1832 log << tcu::TestLog::Message << "Mandatory feature taskShader not supported" << tcu::TestLog::EndMessage; 1833 result = false; 1834 } 1835 } 1836#endif // defined(CTS_USES_VULKAN) 1837 1838 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) ) 1839 { 1840 if ( physicalDeviceMultiDrawFeaturesEXT.multiDraw == VK_FALSE ) 1841 { 1842 log << tcu::TestLog::Message << "Mandatory feature multiDraw not supported" << tcu::TestLog::EndMessage; 1843 result = false; 1844 } 1845 } 1846 1847 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_multisampled_render_to_single_sampled")) ) 1848 { 1849 if ( physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.multisampledRenderToSingleSampled == VK_FALSE ) 1850 { 1851 log << tcu::TestLog::Message << "Mandatory feature multisampledRenderToSingleSampled not supported" << tcu::TestLog::EndMessage; 1852 result = false; 1853 } 1854 } 1855 1856 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_mutable_descriptor_type")) ) 1857 { 1858 if ( physicalDeviceMutableDescriptorTypeFeaturesEXT.mutableDescriptorType == VK_FALSE ) 1859 { 1860 log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; 1861 result = false; 1862 } 1863 } 1864 1865#if defined(CTS_USES_VULKAN) 1866 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_non_seamless_cube_map")) ) 1867 { 1868 if ( physicalDeviceNonSeamlessCubeMapFeaturesEXT.nonSeamlessCubeMap == VK_FALSE ) 1869 { 1870 log << tcu::TestLog::Message << "Mandatory feature nonSeamlessCubeMap not supported" << tcu::TestLog::EndMessage; 1871 result = false; 1872 } 1873 } 1874#endif // defined(CTS_USES_VULKAN) 1875 1876#if defined(CTS_USES_VULKAN) 1877 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_opacity_micromap")) ) 1878 { 1879 if ( physicalDeviceOpacityMicromapFeaturesEXT.micromap == VK_FALSE ) 1880 { 1881 log << tcu::TestLog::Message << "Mandatory feature micromap not supported" << tcu::TestLog::EndMessage; 1882 result = false; 1883 } 1884 } 1885#endif // defined(CTS_USES_VULKAN) 1886 1887#if defined(CTS_USES_VULKAN) 1888 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pageable_device_local_memory")) ) 1889 { 1890 if ( physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pageableDeviceLocalMemory == VK_FALSE ) 1891 { 1892 log << tcu::TestLog::Message << "Mandatory feature pageableDeviceLocalMemory not supported" << tcu::TestLog::EndMessage; 1893 result = false; 1894 } 1895 } 1896#endif // defined(CTS_USES_VULKAN) 1897 1898 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_library_group_handles")) ) 1899 { 1900 if ( physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.pipelineLibraryGroupHandles == VK_FALSE ) 1901 { 1902 log << tcu::TestLog::Message << "Mandatory feature pipelineLibraryGroupHandles not supported" << tcu::TestLog::EndMessage; 1903 result = false; 1904 } 1905 } 1906 1907 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_protected_access")) ) 1908 { 1909 if ( physicalDevicePipelineProtectedAccessFeaturesEXT.pipelineProtectedAccess == VK_FALSE ) 1910 { 1911 log << tcu::TestLog::Message << "Mandatory feature pipelineProtectedAccess not supported" << tcu::TestLog::EndMessage; 1912 result = false; 1913 } 1914 } 1915 1916#if defined(CTS_USES_VULKAN) 1917 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_primitive_topology_list_restart")) ) 1918 { 1919 if ( physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart == VK_FALSE ) 1920 { 1921 log << tcu::TestLog::Message << "Mandatory feature primitiveTopologyListRestart not supported" << tcu::TestLog::EndMessage; 1922 result = false; 1923 } 1924 } 1925#endif // defined(CTS_USES_VULKAN) 1926 1927 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) ) 1928 { 1929 if ( physicalDeviceScalarBlockLayoutFeatures.scalarBlockLayout == VK_FALSE ) 1930 { 1931 log << tcu::TestLog::Message << "Mandatory feature scalarBlockLayout not supported" << tcu::TestLog::EndMessage; 1932 result = false; 1933 } 1934 } 1935 1936 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ) 1937 { 1938 if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE ) 1939 { 1940 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage; 1941 result = false; 1942 } 1943 } 1944 1945 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ) 1946 { 1947 if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE ) 1948 { 1949 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage; 1950 result = false; 1951 } 1952 } 1953 1954#if defined(CTS_USES_VULKAN) 1955 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax ) 1956 { 1957 if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE ) 1958 { 1959 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage; 1960 result = false; 1961 } 1962 } 1963#endif // defined(CTS_USES_VULKAN) 1964 1965 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) ) 1966 { 1967 if ( physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.shaderDemoteToHelperInvocation == VK_FALSE ) 1968 { 1969 log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; 1970 result = false; 1971 } 1972 } 1973 1974 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 1975 { 1976 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 1977 { 1978 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 1979 result = false; 1980 } 1981 } 1982 1983 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 1984 { 1985 if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) 1986 { 1987 log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; 1988 result = false; 1989 } 1990 } 1991 1992 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ) 1993 { 1994 if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) 1995 { 1996 log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; 1997 result = false; 1998 } 1999 } 2000 2001 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_module_identifier")) ) 2002 { 2003 if ( physicalDeviceShaderModuleIdentifierFeaturesEXT.shaderModuleIdentifier == VK_FALSE ) 2004 { 2005 log << tcu::TestLog::Message << "Mandatory feature shaderModuleIdentifier not supported" << tcu::TestLog::EndMessage; 2006 result = false; 2007 } 2008 } 2009 2010 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_object")) ) 2011 { 2012 if ( physicalDeviceShaderObjectFeaturesEXT.shaderObject == VK_FALSE ) 2013 { 2014 log << tcu::TestLog::Message << "Mandatory feature shaderObject not supported" << tcu::TestLog::EndMessage; 2015 result = false; 2016 } 2017 } 2018 2019 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 2020 { 2021 if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE ) 2022 { 2023 log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; 2024 result = false; 2025 } 2026 } 2027 2028 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 2029 { 2030 if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE ) 2031 { 2032 log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; 2033 result = false; 2034 } 2035 } 2036 2037 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subpass_merge_feedback")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_create_renderpass2")) ) 2038 { 2039 if ( physicalDeviceSubpassMergeFeedbackFeaturesEXT.subpassMergeFeedback == VK_FALSE ) 2040 { 2041 log << tcu::TestLog::Message << "Mandatory feature subpassMergeFeedback not supported" << tcu::TestLog::EndMessage; 2042 result = false; 2043 } 2044 } 2045 2046 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) ) 2047 { 2048 if ( physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment == VK_FALSE ) 2049 { 2050 log << tcu::TestLog::Message << "Mandatory feature texelBufferAlignment not supported" << tcu::TestLog::EndMessage; 2051 result = false; 2052 } 2053 } 2054 2055 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) ) 2056 { 2057 if ( physicalDeviceTextureCompressionASTCHDRFeaturesEXT.textureCompressionASTC_HDR == VK_FALSE ) 2058 { 2059 log << tcu::TestLog::Message << "Mandatory feature textureCompressionASTC_HDR not supported" << tcu::TestLog::EndMessage; 2060 result = false; 2061 } 2062 } 2063 2064 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) ) 2065 { 2066#if defined(CTS_USES_VULKAN) 2067 if ( physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback == VK_FALSE ) 2068 { 2069 log << tcu::TestLog::Message << "Mandatory feature transformFeedback not supported" << tcu::TestLog::EndMessage; 2070 result = false; 2071 } 2072#endif // defined(CTS_USES_VULKAN) 2073 } 2074 2075 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) ) 2076 { 2077 if ( physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState == VK_FALSE ) 2078 { 2079 log << tcu::TestLog::Message << "Mandatory feature vertexInputDynamicState not supported" << tcu::TestLog::EndMessage; 2080 result = false; 2081 } 2082 } 2083 2084 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) ) 2085 { 2086 if ( physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats == VK_FALSE ) 2087 { 2088 log << tcu::TestLog::Message << "Mandatory feature ycbcr2plane444Formats not supported" << tcu::TestLog::EndMessage; 2089 result = false; 2090 } 2091 } 2092 2093 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) ) 2094 { 2095 if ( physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays == VK_FALSE ) 2096 { 2097 log << tcu::TestLog::Message << "Mandatory feature ycbcrImageArrays not supported" << tcu::TestLog::EndMessage; 2098 result = false; 2099 } 2100 } 2101 2102 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) ) 2103 { 2104 if ( physicalDevice16BitStorageFeatures.storageBuffer16BitAccess == VK_FALSE ) 2105 { 2106 log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage; 2107 result = false; 2108 } 2109 } 2110 2111 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) ) 2112 { 2113 if ( physicalDevice8BitStorageFeatures.storageBuffer8BitAccess == VK_FALSE ) 2114 { 2115 log << tcu::TestLog::Message << "Mandatory feature storageBuffer8BitAccess not supported" << tcu::TestLog::EndMessage; 2116 result = false; 2117 } 2118 } 2119 2120 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2121 { 2122 if ( physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE ) 2123 { 2124 log << tcu::TestLog::Message << "Mandatory feature accelerationStructure not supported" << tcu::TestLog::EndMessage; 2125 result = false; 2126 } 2127 } 2128 2129 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2130 { 2131 if ( physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind == VK_FALSE ) 2132 { 2133 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingAccelerationStructureUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2134 result = false; 2135 } 2136 } 2137 2138 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) ) 2139 { 2140 if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE ) 2141 { 2142 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 2143 result = false; 2144 } 2145 } 2146 2147 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2148 { 2149 if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE ) 2150 { 2151 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 2152 result = false; 2153 } 2154 } 2155 2156 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_dynamic_rendering_local_read")) ) 2157 { 2158 if ( physicalDeviceDynamicRenderingLocalReadFeaturesKHR.dynamicRenderingLocalRead == VK_FALSE ) 2159 { 2160 log << tcu::TestLog::Message << "Mandatory feature dynamicRenderingLocalRead not supported" << tcu::TestLog::EndMessage; 2161 result = false; 2162 } 2163 } 2164 2165 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) ) 2166 { 2167 if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) 2168 { 2169 log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; 2170 result = false; 2171 } 2172 } 2173 2174 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_global_priority")) ) 2175 { 2176 if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) 2177 { 2178 log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; 2179 result = false; 2180 } 2181 } 2182 2183 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) ) 2184 { 2185 if ( physicalDeviceImagelessFramebufferFeatures.imagelessFramebuffer == VK_FALSE ) 2186 { 2187 log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; 2188 result = false; 2189 } 2190 } 2191 2192 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) ) 2193 { 2194 if ( physicalDeviceIndexTypeUint8FeaturesKHR.indexTypeUint8 == VK_FALSE ) 2195 { 2196 log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage; 2197 result = false; 2198 } 2199 } 2200 2201 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_index_type_uint8")) ) 2202 { 2203 if ( physicalDeviceIndexTypeUint8FeaturesKHR.indexTypeUint8 == VK_FALSE ) 2204 { 2205 log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage; 2206 result = false; 2207 } 2208 } 2209 2210 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) ) 2211 { 2212 if ( ( physicalDeviceLineRasterizationFeaturesKHR.rectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.bresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.smoothLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledRectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledBresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledSmoothLines == VK_FALSE ) ) 2213 { 2214 log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage; 2215 result = false; 2216 } 2217 } 2218 2219 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_line_rasterization")) ) 2220 { 2221 if ( ( physicalDeviceLineRasterizationFeaturesKHR.rectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.bresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.smoothLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledRectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledBresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesKHR.stippledSmoothLines == VK_FALSE ) ) 2222 { 2223 log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage; 2224 result = false; 2225 } 2226 } 2227 2228 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_maintenance5")) ) 2229 { 2230 if ( physicalDeviceMaintenance5FeaturesKHR.maintenance5 == VK_FALSE ) 2231 { 2232 log << tcu::TestLog::Message << "Mandatory feature maintenance5 not supported" << tcu::TestLog::EndMessage; 2233 result = false; 2234 } 2235 } 2236 2237 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_maintenance6")) ) 2238 { 2239 if ( physicalDeviceMaintenance6FeaturesKHR.maintenance6 == VK_FALSE ) 2240 { 2241 log << tcu::TestLog::Message << "Mandatory feature maintenance6 not supported" << tcu::TestLog::EndMessage; 2242 result = false; 2243 } 2244 } 2245 2246 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) ) 2247 { 2248 if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) 2249 { 2250 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 2251 result = false; 2252 } 2253 } 2254 2255 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) ) 2256 { 2257 if ( physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools == VK_FALSE ) 2258 { 2259 log << tcu::TestLog::Message << "Mandatory feature performanceCounterQueryPools not supported" << tcu::TestLog::EndMessage; 2260 result = false; 2261 } 2262 } 2263 2264 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) ) 2265 { 2266 if ( physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo == VK_FALSE ) 2267 { 2268 log << tcu::TestLog::Message << "Mandatory feature pipelineExecutableInfo not supported" << tcu::TestLog::EndMessage; 2269 result = false; 2270 } 2271 } 2272 2273#if defined(CTS_USES_VULKAN) 2274 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) ) 2275 { 2276 if ( physicalDevicePresentIdFeaturesKHR.presentId == VK_FALSE ) 2277 { 2278 log << tcu::TestLog::Message << "Mandatory feature presentId not supported" << tcu::TestLog::EndMessage; 2279 result = false; 2280 } 2281 } 2282#endif // defined(CTS_USES_VULKAN) 2283 2284#if defined(CTS_USES_VULKAN) 2285 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) ) 2286 { 2287 if ( physicalDevicePresentWaitFeaturesKHR.presentWait == VK_FALSE ) 2288 { 2289 log << tcu::TestLog::Message << "Mandatory feature presentWait not supported" << tcu::TestLog::EndMessage; 2290 result = false; 2291 } 2292 } 2293#endif // defined(CTS_USES_VULKAN) 2294 2295 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 2296 { 2297 if ( physicalDeviceRayQueryFeaturesKHR.rayQuery == VK_FALSE ) 2298 { 2299 log << tcu::TestLog::Message << "Mandatory feature rayQuery not supported" << tcu::TestLog::EndMessage; 2300 result = false; 2301 } 2302 } 2303 2304 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_maintenance1")) ) 2305 { 2306 if ( physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingMaintenance1 == VK_FALSE ) 2307 { 2308 log << tcu::TestLog::Message << "Mandatory feature rayTracingMaintenance1 not supported" << tcu::TestLog::EndMessage; 2309 result = false; 2310 } 2311 } 2312 2313 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) ) 2314 { 2315 if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) 2316 { 2317 log << tcu::TestLog::Message << "Mandatory feature rayTracingPipeline not supported" << tcu::TestLog::EndMessage; 2318 result = false; 2319 } 2320 } 2321 2322 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) ) 2323 { 2324 if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) 2325 { 2326 log << tcu::TestLog::Message << "Mandatory feature rayTracingPipelineTraceRaysIndirect not supported" << tcu::TestLog::EndMessage; 2327 result = false; 2328 } 2329 } 2330 2331 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 2332 { 2333 if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling == VK_FALSE ) 2334 { 2335 log << tcu::TestLog::Message << "Mandatory feature rayTraversalPrimitiveCulling not supported" << tcu::TestLog::EndMessage; 2336 result = false; 2337 } 2338 } 2339 2340 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_position_fetch")) ) 2341 { 2342 if ( physicalDeviceRayTracingPositionFetchFeaturesKHR.rayTracingPositionFetch == VK_FALSE ) 2343 { 2344 log << tcu::TestLog::Message << "Mandatory feature rayTracingPositionFetch not supported" << tcu::TestLog::EndMessage; 2345 result = false; 2346 } 2347 } 2348 2349 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) ) 2350 { 2351 if ( physicalDeviceSamplerYcbcrConversionFeaturesKHR.samplerYcbcrConversion == VK_FALSE ) 2352 { 2353 log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion not supported" << tcu::TestLog::EndMessage; 2354 result = false; 2355 } 2356 } 2357 2358 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) ) 2359 { 2360 if ( physicalDeviceSeparateDepthStencilLayoutsFeatures.separateDepthStencilLayouts == VK_FALSE ) 2361 { 2362 log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; 2363 result = false; 2364 } 2365 } 2366 2367 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) ) 2368 { 2369 if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics == VK_FALSE ) 2370 { 2371 log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; 2372 result = false; 2373 } 2374 } 2375 2376 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) ) 2377 { 2378 if ( physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock == VK_FALSE ) 2379 { 2380 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupClock not supported" << tcu::TestLog::EndMessage; 2381 result = false; 2382 } 2383 } 2384 2385#if defined(CTS_USES_VULKAN) 2386 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_expect_assume")) ) 2387 { 2388 if ( physicalDeviceShaderExpectAssumeFeaturesKHR.shaderExpectAssume == VK_FALSE ) 2389 { 2390 log << tcu::TestLog::Message << "Mandatory feature shaderExpectAssume not supported" << tcu::TestLog::EndMessage; 2391 result = false; 2392 } 2393 } 2394#endif // defined(CTS_USES_VULKAN) 2395 2396 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) ) 2397 { 2398 if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) ) 2399 { 2400 log << tcu::TestLog::Message << "Mandatory feature shaderFloat16 or shaderInt8 not supported" << tcu::TestLog::EndMessage; 2401 result = false; 2402 } 2403 } 2404 2405 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float_controls2")) ) 2406 { 2407 if ( physicalDeviceShaderFloatControls2FeaturesKHR.shaderFloatControls2 == VK_FALSE ) 2408 { 2409 log << tcu::TestLog::Message << "Mandatory feature shaderFloatControls2 not supported" << tcu::TestLog::EndMessage; 2410 result = false; 2411 } 2412 } 2413 2414#if defined(CTS_USES_VULKAN) 2415 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) ) 2416 { 2417 if ( physicalDeviceShaderIntegerDotProductFeaturesKHR.shaderIntegerDotProduct == VK_FALSE ) 2418 { 2419 log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; 2420 result = false; 2421 } 2422 } 2423#endif // defined(CTS_USES_VULKAN) 2424 2425 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_maximal_reconvergence")) ) 2426 { 2427 if ( physicalDeviceShaderMaximalReconvergenceFeaturesKHR.shaderMaximalReconvergence == VK_FALSE ) 2428 { 2429 log << tcu::TestLog::Message << "Mandatory feature shaderMaximalReconvergence not supported" << tcu::TestLog::EndMessage; 2430 result = false; 2431 } 2432 } 2433 2434 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_quad_control")) ) 2435 { 2436 if ( physicalDeviceShaderQuadControlFeaturesKHR.shaderQuadControl == VK_FALSE ) 2437 { 2438 log << tcu::TestLog::Message << "Mandatory feature shaderQuadControl not supported" << tcu::TestLog::EndMessage; 2439 result = false; 2440 } 2441 } 2442 2443 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) ) 2444 { 2445 if ( physicalDeviceShaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes == VK_FALSE ) 2446 { 2447 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; 2448 result = false; 2449 } 2450 } 2451 2452 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_rotate")) ) 2453 { 2454 if ( physicalDeviceShaderSubgroupRotateFeaturesKHR.shaderSubgroupRotate == VK_FALSE ) 2455 { 2456 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupRotate not supported" << tcu::TestLog::EndMessage; 2457 result = false; 2458 } 2459 } 2460 2461 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) ) 2462 { 2463 if ( physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow == VK_FALSE ) 2464 { 2465 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupUniformControlFlow not supported" << tcu::TestLog::EndMessage; 2466 result = false; 2467 } 2468 } 2469 2470 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) ) 2471 { 2472 if ( physicalDeviceShaderTerminateInvocationFeaturesKHR.shaderTerminateInvocation == VK_FALSE ) 2473 { 2474 log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; 2475 result = false; 2476 } 2477 } 2478 2479 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) ) 2480 { 2481 if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE ) 2482 { 2483 log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; 2484 result = false; 2485 } 2486 } 2487 2488#if defined(CTS_USES_VULKAN) 2489 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) ) 2490 { 2491 if ( physicalDeviceTimelineSemaphoreFeatures.timelineSemaphore == VK_FALSE ) 2492 { 2493 log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; 2494 result = false; 2495 } 2496 } 2497#endif // defined(CTS_USES_VULKAN) 2498 2499 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) ) 2500 { 2501 if ( physicalDeviceUniformBufferStandardLayoutFeatures.uniformBufferStandardLayout == VK_FALSE ) 2502 { 2503 log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; 2504 result = false; 2505 } 2506 } 2507 2508 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) ) 2509 { 2510 if ( physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer == VK_FALSE ) 2511 { 2512 log << tcu::TestLog::Message << "Mandatory feature variablePointersStorageBuffer not supported" << tcu::TestLog::EndMessage; 2513 result = false; 2514 } 2515 } 2516 2517 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) ) 2518 { 2519 if ( physicalDeviceVertexAttributeDivisorFeaturesKHR.vertexAttributeInstanceRateDivisor == VK_FALSE ) 2520 { 2521 log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage; 2522 result = false; 2523 } 2524 } 2525 2526 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_vertex_attribute_divisor")) ) 2527 { 2528 if ( physicalDeviceVertexAttributeDivisorFeaturesKHR.vertexAttributeInstanceRateDivisor == VK_FALSE ) 2529 { 2530 log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage; 2531 result = false; 2532 } 2533 } 2534 2535 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) ) 2536 { 2537 if ( physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModel == VK_FALSE ) 2538 { 2539 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; 2540 result = false; 2541 } 2542 } 2543 2544 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) ) 2545 { 2546 if ( ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess == VK_FALSE ) ) 2547 { 2548 log << tcu::TestLog::Message << "Mandatory feature workgroupMemoryExplicitLayout or workgroupMemoryExplicitLayoutScalarBlockLayout or workgroupMemoryExplicitLayout8BitAccess or workgroupMemoryExplicitLayout16BitAccess not supported" << tcu::TestLog::EndMessage; 2549 result = false; 2550 } 2551 } 2552 2553 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) ) 2554 { 2555 if ( physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) 2556 { 2557 log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; 2558 result = false; 2559 } 2560 } 2561 2562 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) ) 2563 { 2564 if ( physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType == VK_FALSE ) 2565 { 2566 log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; 2567 result = false; 2568 } 2569 } 2570 2571 { 2572 if ( coreFeatures.features.robustBufferAccess == VK_FALSE ) 2573 { 2574 log << tcu::TestLog::Message << "Mandatory feature robustBufferAccess not supported" << tcu::TestLog::EndMessage; 2575 result = false; 2576 } 2577 } 2578 2579 if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ) 2580 { 2581 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2582 { 2583 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2584 result = false; 2585 } 2586 } 2587 2588 if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics ) 2589 { 2590 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2591 { 2592 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2593 result = false; 2594 } 2595 } 2596 2597 if ( physicalDeviceShaderAtomicInt64Features.shaderSharedInt64Atomics ) 2598 { 2599 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2600 { 2601 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2602 result = false; 2603 } 2604 } 2605 2606 if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics ) 2607 { 2608 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2609 { 2610 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2611 result = false; 2612 } 2613 } 2614 2615#if defined(CTS_USES_VULKAN) 2616 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) ) 2617 { 2618 if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) 2619 { 2620 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 2621 result = false; 2622 } 2623 } 2624#endif // defined(CTS_USES_VULKAN) 2625 2626 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2627 { 2628 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 2629 { 2630 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2631 result = false; 2632 } 2633 } 2634 2635 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2636 { 2637 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 2638 { 2639 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2640 result = false; 2641 } 2642 } 2643 2644#if defined(CTS_USES_VULKAN) 2645 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2646 { 2647 if ( physicalDeviceVulkan11Features.multiview == VK_FALSE ) 2648 { 2649 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 2650 result = false; 2651 } 2652 } 2653#endif // defined(CTS_USES_VULKAN) 2654 2655 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2656 { 2657 if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE ) 2658 { 2659 log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage; 2660 result = false; 2661 } 2662 } 2663 2664 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2665 { 2666 if ( physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes == VK_FALSE ) 2667 { 2668 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; 2669 result = false; 2670 } 2671 } 2672 2673 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2674 { 2675 if ( physicalDeviceVulkan12Features.imagelessFramebuffer == VK_FALSE ) 2676 { 2677 log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; 2678 result = false; 2679 } 2680 } 2681 2682 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2683 { 2684 if ( physicalDeviceVulkan12Features.uniformBufferStandardLayout == VK_FALSE ) 2685 { 2686 log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; 2687 result = false; 2688 } 2689 } 2690 2691 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2692 { 2693 if ( physicalDeviceVulkan12Features.separateDepthStencilLayouts == VK_FALSE ) 2694 { 2695 log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; 2696 result = false; 2697 } 2698 } 2699 2700 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2701 { 2702 if ( physicalDeviceVulkan12Features.hostQueryReset == VK_FALSE ) 2703 { 2704 log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage; 2705 result = false; 2706 } 2707 } 2708 2709#if defined(CTS_USES_VULKAN) 2710 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2711 { 2712 if ( physicalDeviceVulkan12Features.timelineSemaphore == VK_FALSE ) 2713 { 2714 log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; 2715 result = false; 2716 } 2717 } 2718#endif // defined(CTS_USES_VULKAN) 2719 2720 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2721 { 2722 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 2723 { 2724 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2725 result = false; 2726 } 2727 } 2728 2729 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2730 { 2731 if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 2732 { 2733 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2734 result = false; 2735 } 2736 } 2737 2738 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2739 { 2740 if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 2741 { 2742 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2743 result = false; 2744 } 2745 } 2746 2747 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2748 { 2749 if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 2750 { 2751 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2752 result = false; 2753 } 2754 } 2755 2756 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2757 { 2758 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 2759 { 2760 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2761 result = false; 2762 } 2763 } 2764 2765 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2766 { 2767 if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 2768 { 2769 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2770 result = false; 2771 } 2772 } 2773 2774 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2775 { 2776 if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 2777 { 2778 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2779 result = false; 2780 } 2781 } 2782 2783 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2784 { 2785 if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 2786 { 2787 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2788 result = false; 2789 } 2790 } 2791 2792 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2793 { 2794 if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 2795 { 2796 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2797 result = false; 2798 } 2799 } 2800 2801 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2802 { 2803 if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 2804 { 2805 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2806 result = false; 2807 } 2808 } 2809 2810 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2811 { 2812 if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 2813 { 2814 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 2815 result = false; 2816 } 2817 } 2818 2819 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2820 { 2821 if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE ) 2822 { 2823 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 2824 result = false; 2825 } 2826 } 2827 2828 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2829 { 2830 if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE ) 2831 { 2832 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 2833 result = false; 2834 } 2835 } 2836 2837 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ) 2838 { 2839 if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics == VK_FALSE ) 2840 { 2841 log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; 2842 result = false; 2843 } 2844 } 2845 2846 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_draw_indirect_count")) ) 2847 { 2848 if ( physicalDeviceVulkan12Features.drawIndirectCount == VK_FALSE ) 2849 { 2850 log << tcu::TestLog::Message << "Mandatory feature drawIndirectCount not supported" << tcu::TestLog::EndMessage; 2851 result = false; 2852 } 2853 } 2854 2855 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_mirror_clamp_to_edge")) ) 2856 { 2857 if ( physicalDeviceVulkan12Features.samplerMirrorClampToEdge == VK_FALSE ) 2858 { 2859 log << tcu::TestLog::Message << "Mandatory feature samplerMirrorClampToEdge not supported" << tcu::TestLog::EndMessage; 2860 result = false; 2861 } 2862 } 2863 2864 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_sampler_filter_minmax")) ) 2865 { 2866 if ( physicalDeviceVulkan12Features.samplerFilterMinmax == VK_FALSE ) 2867 { 2868 log << tcu::TestLog::Message << "Mandatory feature samplerFilterMinmax not supported" << tcu::TestLog::EndMessage; 2869 result = false; 2870 } 2871 } 2872 2873 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) ) 2874 { 2875 if ( physicalDeviceVulkan12Features.shaderOutputViewportIndex == VK_FALSE ) 2876 { 2877 log << tcu::TestLog::Message << "Mandatory feature shaderOutputViewportIndex not supported" << tcu::TestLog::EndMessage; 2878 result = false; 2879 } 2880 } 2881 2882 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) ) 2883 { 2884 if ( physicalDeviceVulkan12Features.shaderOutputLayer == VK_FALSE ) 2885 { 2886 log << tcu::TestLog::Message << "Mandatory feature shaderOutputLayer not supported" << tcu::TestLog::EndMessage; 2887 result = false; 2888 } 2889 } 2890 2891 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2892 { 2893 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 2894 { 2895 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2896 result = false; 2897 } 2898 } 2899 2900 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2901 { 2902 if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 2903 { 2904 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2905 result = false; 2906 } 2907 } 2908 2909 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2910 { 2911 if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 2912 { 2913 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2914 result = false; 2915 } 2916 } 2917 2918 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2919 { 2920 if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 2921 { 2922 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2923 result = false; 2924 } 2925 } 2926 2927 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2928 { 2929 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 2930 { 2931 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2932 result = false; 2933 } 2934 } 2935 2936 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2937 { 2938 if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 2939 { 2940 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2941 result = false; 2942 } 2943 } 2944 2945 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2946 { 2947 if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 2948 { 2949 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2950 result = false; 2951 } 2952 } 2953 2954 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2955 { 2956 if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 2957 { 2958 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2959 result = false; 2960 } 2961 } 2962 2963 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2964 { 2965 if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 2966 { 2967 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2968 result = false; 2969 } 2970 } 2971 2972 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2973 { 2974 if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 2975 { 2976 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2977 result = false; 2978 } 2979 } 2980 2981 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2982 { 2983 if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 2984 { 2985 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 2986 result = false; 2987 } 2988 } 2989 2990 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2991 { 2992 if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE ) 2993 { 2994 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 2995 result = false; 2996 } 2997 } 2998 2999 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 3000 { 3001 if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE ) 3002 { 3003 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 3004 result = false; 3005 } 3006 } 3007 3008 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 3009 { 3010 if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE ) 3011 { 3012 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 3013 result = false; 3014 } 3015 } 3016 3017#if defined(CTS_USES_VULKAN) 3018 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3019 { 3020 if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE ) 3021 { 3022 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 3023 result = false; 3024 } 3025 } 3026#endif // defined(CTS_USES_VULKAN) 3027 3028#if defined(CTS_USES_VULKANSC) 3029 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3030 { 3031 if ( physicalDeviceVulkan12Features.vulkanMemoryModel == VK_FALSE ) 3032 { 3033 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; 3034 result = false; 3035 } 3036 } 3037#endif // defined(CTS_USES_VULKANSC) 3038 3039#if defined(CTS_USES_VULKAN) 3040 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3041 { 3042 if ( physicalDeviceVulkan12Features.vulkanMemoryModelDeviceScope == VK_FALSE ) 3043 { 3044 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModelDeviceScope not supported" << tcu::TestLog::EndMessage; 3045 result = false; 3046 } 3047 } 3048#endif // defined(CTS_USES_VULKAN) 3049 3050#if defined(CTS_USES_VULKAN) 3051 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3052 { 3053 if ( physicalDeviceVulkan13Features.robustImageAccess == VK_FALSE ) 3054 { 3055 log << tcu::TestLog::Message << "Mandatory feature robustImageAccess not supported" << tcu::TestLog::EndMessage; 3056 result = false; 3057 } 3058 } 3059#endif // defined(CTS_USES_VULKAN) 3060 3061#if defined(CTS_USES_VULKAN) 3062 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3063 { 3064 if ( physicalDeviceVulkan13Features.inlineUniformBlock == VK_FALSE ) 3065 { 3066 log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage; 3067 result = false; 3068 } 3069 } 3070#endif // defined(CTS_USES_VULKAN) 3071 3072#if defined(CTS_USES_VULKAN) 3073 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 3074 { 3075 if ( physicalDeviceVulkan13Features.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE ) 3076 { 3077 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 3078 result = false; 3079 } 3080 } 3081#endif // defined(CTS_USES_VULKAN) 3082 3083#if defined(CTS_USES_VULKAN) 3084 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3085 { 3086 if ( physicalDeviceVulkan13Features.pipelineCreationCacheControl == VK_FALSE ) 3087 { 3088 log << tcu::TestLog::Message << "Mandatory feature pipelineCreationCacheControl not supported" << tcu::TestLog::EndMessage; 3089 result = false; 3090 } 3091 } 3092#endif // defined(CTS_USES_VULKAN) 3093 3094#if defined(CTS_USES_VULKAN) 3095 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3096 { 3097 if ( physicalDeviceVulkan13Features.privateData == VK_FALSE ) 3098 { 3099 log << tcu::TestLog::Message << "Mandatory feature privateData not supported" << tcu::TestLog::EndMessage; 3100 result = false; 3101 } 3102 } 3103#endif // defined(CTS_USES_VULKAN) 3104 3105#if defined(CTS_USES_VULKAN) 3106 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3107 { 3108 if ( physicalDeviceVulkan13Features.shaderDemoteToHelperInvocation == VK_FALSE ) 3109 { 3110 log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; 3111 result = false; 3112 } 3113 } 3114#endif // defined(CTS_USES_VULKAN) 3115 3116#if defined(CTS_USES_VULKAN) 3117 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3118 { 3119 if ( physicalDeviceVulkan13Features.shaderTerminateInvocation == VK_FALSE ) 3120 { 3121 log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; 3122 result = false; 3123 } 3124 } 3125#endif // defined(CTS_USES_VULKAN) 3126 3127#if defined(CTS_USES_VULKAN) 3128 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3129 { 3130 if ( physicalDeviceVulkan13Features.subgroupSizeControl == VK_FALSE ) 3131 { 3132 log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; 3133 result = false; 3134 } 3135 } 3136#endif // defined(CTS_USES_VULKAN) 3137 3138#if defined(CTS_USES_VULKAN) 3139 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3140 { 3141 if ( physicalDeviceVulkan13Features.computeFullSubgroups == VK_FALSE ) 3142 { 3143 log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; 3144 result = false; 3145 } 3146 } 3147#endif // defined(CTS_USES_VULKAN) 3148 3149#if defined(CTS_USES_VULKAN) 3150 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3151 { 3152 if ( physicalDeviceVulkan13Features.synchronization2 == VK_FALSE ) 3153 { 3154 log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; 3155 result = false; 3156 } 3157 } 3158#endif // defined(CTS_USES_VULKAN) 3159 3160#if defined(CTS_USES_VULKAN) 3161 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3162 { 3163 if ( physicalDeviceVulkan13Features.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) 3164 { 3165 log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; 3166 result = false; 3167 } 3168 } 3169#endif // defined(CTS_USES_VULKAN) 3170 3171#if defined(CTS_USES_VULKAN) 3172 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3173 { 3174 if ( physicalDeviceVulkan13Features.dynamicRendering == VK_FALSE ) 3175 { 3176 log << tcu::TestLog::Message << "Mandatory feature dynamicRendering not supported" << tcu::TestLog::EndMessage; 3177 result = false; 3178 } 3179 } 3180#endif // defined(CTS_USES_VULKAN) 3181 3182#if defined(CTS_USES_VULKAN) 3183 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3184 { 3185 if ( physicalDeviceVulkan13Features.shaderIntegerDotProduct == VK_FALSE ) 3186 { 3187 log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; 3188 result = false; 3189 } 3190 } 3191#endif // defined(CTS_USES_VULKAN) 3192 3193#if defined(CTS_USES_VULKAN) 3194 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3195 { 3196 if ( physicalDeviceVulkan13Features.maintenance4 == VK_FALSE ) 3197 { 3198 log << tcu::TestLog::Message << "Mandatory feature maintenance4 not supported" << tcu::TestLog::EndMessage; 3199 result = false; 3200 } 3201 } 3202#endif // defined(CTS_USES_VULKAN) 3203 3204#if defined(CTS_USES_VULKAN) 3205 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ConservativeRasterizationMode ) 3206 { 3207 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_conservative_rasterization")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_conservative_rasterization"))) 3208 { 3209 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_conservative_rasterization not supported" << tcu::TestLog::EndMessage; 3210 result = false; 3211 } 3212 } 3213#endif // defined(CTS_USES_VULKAN) 3214 3215#if defined(CTS_USES_VULKAN) 3216 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ExtraPrimitiveOverestimationSize ) 3217 { 3218 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_conservative_rasterization")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_conservative_rasterization"))) 3219 { 3220 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_conservative_rasterization not supported" << tcu::TestLog::EndMessage; 3221 result = false; 3222 } 3223 } 3224#endif // defined(CTS_USES_VULKAN) 3225 3226#if defined(CTS_USES_VULKAN) 3227 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3SampleLocationsEnable ) 3228 { 3229 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_sample_locations")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_sample_locations"))) 3230 { 3231 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_sample_locations not supported" << tcu::TestLog::EndMessage; 3232 result = false; 3233 } 3234 } 3235#endif // defined(CTS_USES_VULKAN) 3236 3237#if defined(CTS_USES_VULKAN) 3238 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendAdvanced ) 3239 { 3240 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_blend_operation_advanced")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_blend_operation_advanced"))) 3241 { 3242 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_blend_operation_advanced not supported" << tcu::TestLog::EndMessage; 3243 result = false; 3244 } 3245 } 3246#endif // defined(CTS_USES_VULKAN) 3247 3248#if defined(CTS_USES_VULKAN) 3249 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LineRasterizationMode ) 3250 { 3251 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_line_rasterization"))) 3252 { 3253 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_line_rasterization not supported" << tcu::TestLog::EndMessage; 3254 result = false; 3255 } 3256 } 3257#endif // defined(CTS_USES_VULKAN) 3258 3259#if defined(CTS_USES_VULKAN) 3260 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LineStippleEnable ) 3261 { 3262 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_line_rasterization"))) 3263 { 3264 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_line_rasterization not supported" << tcu::TestLog::EndMessage; 3265 result = false; 3266 } 3267 } 3268#endif // defined(CTS_USES_VULKAN) 3269 3270#if defined(CTS_USES_VULKAN) 3271 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ViewportWScalingEnable ) 3272 { 3273 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_clip_space_w_scaling")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_clip_space_w_scaling"))) 3274 { 3275 log << tcu::TestLog::Message << "Mandatory extension VK_NV_clip_space_w_scaling not supported" << tcu::TestLog::EndMessage; 3276 result = false; 3277 } 3278 } 3279#endif // defined(CTS_USES_VULKAN) 3280 3281#if defined(CTS_USES_VULKAN) 3282 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ViewportSwizzle ) 3283 { 3284 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_viewport_swizzle")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_viewport_swizzle"))) 3285 { 3286 log << tcu::TestLog::Message << "Mandatory extension VK_NV_viewport_swizzle not supported" << tcu::TestLog::EndMessage; 3287 result = false; 3288 } 3289 } 3290#endif // defined(CTS_USES_VULKAN) 3291 3292#if defined(CTS_USES_VULKAN) 3293 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageToColorEnable ) 3294 { 3295 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_fragment_coverage_to_color")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_fragment_coverage_to_color"))) 3296 { 3297 log << tcu::TestLog::Message << "Mandatory extension VK_NV_fragment_coverage_to_color not supported" << tcu::TestLog::EndMessage; 3298 result = false; 3299 } 3300 } 3301#endif // defined(CTS_USES_VULKAN) 3302 3303#if defined(CTS_USES_VULKAN) 3304 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageToColorLocation ) 3305 { 3306 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_fragment_coverage_to_color")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_fragment_coverage_to_color"))) 3307 { 3308 log << tcu::TestLog::Message << "Mandatory extension VK_NV_fragment_coverage_to_color not supported" << tcu::TestLog::EndMessage; 3309 result = false; 3310 } 3311 } 3312#endif // defined(CTS_USES_VULKAN) 3313 3314#if defined(CTS_USES_VULKAN) 3315 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationMode ) 3316 { 3317 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_framebuffer_mixed_samples")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_framebuffer_mixed_samples"))) 3318 { 3319 log << tcu::TestLog::Message << "Mandatory extension VK_NV_framebuffer_mixed_samples not supported" << tcu::TestLog::EndMessage; 3320 result = false; 3321 } 3322 } 3323#endif // defined(CTS_USES_VULKAN) 3324 3325#if defined(CTS_USES_VULKAN) 3326 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationTableEnable ) 3327 { 3328 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_framebuffer_mixed_samples")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_framebuffer_mixed_samples"))) 3329 { 3330 log << tcu::TestLog::Message << "Mandatory extension VK_NV_framebuffer_mixed_samples not supported" << tcu::TestLog::EndMessage; 3331 result = false; 3332 } 3333 } 3334#endif // defined(CTS_USES_VULKAN) 3335 3336#if defined(CTS_USES_VULKAN) 3337 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationTable ) 3338 { 3339 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_framebuffer_mixed_samples")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_framebuffer_mixed_samples"))) 3340 { 3341 log << tcu::TestLog::Message << "Mandatory extension VK_NV_framebuffer_mixed_samples not supported" << tcu::TestLog::EndMessage; 3342 result = false; 3343 } 3344 } 3345#endif // defined(CTS_USES_VULKAN) 3346 3347 return result; 3348} 3349 3350