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 ) && ( physicalDeviceMeshShaderFeaturesEXT.taskShader == VK_FALSE ) ) 1820 { 1821 log << tcu::TestLog::Message << "Mandatory feature meshShader or taskShader not supported" << tcu::TestLog::EndMessage; 1822 result = false; 1823 } 1824 } 1825#endif // defined(CTS_USES_VULKAN) 1826 1827 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) ) 1828 { 1829 if ( physicalDeviceMultiDrawFeaturesEXT.multiDraw == VK_FALSE ) 1830 { 1831 log << tcu::TestLog::Message << "Mandatory feature multiDraw not supported" << tcu::TestLog::EndMessage; 1832 result = false; 1833 } 1834 } 1835 1836 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_multisampled_render_to_single_sampled")) ) 1837 { 1838 if ( physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.multisampledRenderToSingleSampled == VK_FALSE ) 1839 { 1840 log << tcu::TestLog::Message << "Mandatory feature multisampledRenderToSingleSampled not supported" << tcu::TestLog::EndMessage; 1841 result = false; 1842 } 1843 } 1844 1845 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_mutable_descriptor_type")) ) 1846 { 1847 if ( physicalDeviceMutableDescriptorTypeFeaturesEXT.mutableDescriptorType == VK_FALSE ) 1848 { 1849 log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; 1850 result = false; 1851 } 1852 } 1853 1854#if defined(CTS_USES_VULKAN) 1855 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_non_seamless_cube_map")) ) 1856 { 1857 if ( physicalDeviceNonSeamlessCubeMapFeaturesEXT.nonSeamlessCubeMap == VK_FALSE ) 1858 { 1859 log << tcu::TestLog::Message << "Mandatory feature nonSeamlessCubeMap not supported" << tcu::TestLog::EndMessage; 1860 result = false; 1861 } 1862 } 1863#endif // defined(CTS_USES_VULKAN) 1864 1865#if defined(CTS_USES_VULKAN) 1866 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_opacity_micromap")) ) 1867 { 1868 if ( physicalDeviceOpacityMicromapFeaturesEXT.micromap == VK_FALSE ) 1869 { 1870 log << tcu::TestLog::Message << "Mandatory feature micromap 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_pageable_device_local_memory")) ) 1878 { 1879 if ( physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pageableDeviceLocalMemory == VK_FALSE ) 1880 { 1881 log << tcu::TestLog::Message << "Mandatory feature pageableDeviceLocalMemory not supported" << tcu::TestLog::EndMessage; 1882 result = false; 1883 } 1884 } 1885#endif // defined(CTS_USES_VULKAN) 1886 1887 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_library_group_handles")) ) 1888 { 1889 if ( physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.pipelineLibraryGroupHandles == VK_FALSE ) 1890 { 1891 log << tcu::TestLog::Message << "Mandatory feature pipelineLibraryGroupHandles not supported" << tcu::TestLog::EndMessage; 1892 result = false; 1893 } 1894 } 1895 1896 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_protected_access")) ) 1897 { 1898 if ( physicalDevicePipelineProtectedAccessFeaturesEXT.pipelineProtectedAccess == VK_FALSE ) 1899 { 1900 log << tcu::TestLog::Message << "Mandatory feature pipelineProtectedAccess not supported" << tcu::TestLog::EndMessage; 1901 result = false; 1902 } 1903 } 1904 1905#if defined(CTS_USES_VULKAN) 1906 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_primitive_topology_list_restart")) ) 1907 { 1908 if ( physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart == VK_FALSE ) 1909 { 1910 log << tcu::TestLog::Message << "Mandatory feature primitiveTopologyListRestart not supported" << tcu::TestLog::EndMessage; 1911 result = false; 1912 } 1913 } 1914#endif // defined(CTS_USES_VULKAN) 1915 1916 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) ) 1917 { 1918 if ( physicalDeviceScalarBlockLayoutFeatures.scalarBlockLayout == VK_FALSE ) 1919 { 1920 log << tcu::TestLog::Message << "Mandatory feature scalarBlockLayout not supported" << tcu::TestLog::EndMessage; 1921 result = false; 1922 } 1923 } 1924 1925 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ) 1926 { 1927 if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE ) 1928 { 1929 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage; 1930 result = false; 1931 } 1932 } 1933 1934 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ) 1935 { 1936 if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE ) 1937 { 1938 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage; 1939 result = false; 1940 } 1941 } 1942 1943#if defined(CTS_USES_VULKAN) 1944 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax ) 1945 { 1946 if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE ) 1947 { 1948 log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage; 1949 result = false; 1950 } 1951 } 1952#endif // defined(CTS_USES_VULKAN) 1953 1954 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) ) 1955 { 1956 if ( physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.shaderDemoteToHelperInvocation == VK_FALSE ) 1957 { 1958 log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; 1959 result = false; 1960 } 1961 } 1962 1963 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 1964 { 1965 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 1966 { 1967 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 1968 result = false; 1969 } 1970 } 1971 1972 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) ) 1973 { 1974 if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) 1975 { 1976 log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; 1977 result = false; 1978 } 1979 } 1980 1981 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ) 1982 { 1983 if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) 1984 { 1985 log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; 1986 result = false; 1987 } 1988 } 1989 1990 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_module_identifier")) ) 1991 { 1992 if ( physicalDeviceShaderModuleIdentifierFeaturesEXT.shaderModuleIdentifier == VK_FALSE ) 1993 { 1994 log << tcu::TestLog::Message << "Mandatory feature shaderModuleIdentifier not supported" << tcu::TestLog::EndMessage; 1995 result = false; 1996 } 1997 } 1998 1999 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_object")) ) 2000 { 2001 if ( physicalDeviceShaderObjectFeaturesEXT.shaderObject == VK_FALSE ) 2002 { 2003 log << tcu::TestLog::Message << "Mandatory feature shaderObject not supported" << tcu::TestLog::EndMessage; 2004 result = false; 2005 } 2006 } 2007 2008 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 2009 { 2010 if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE ) 2011 { 2012 log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; 2013 result = false; 2014 } 2015 } 2016 2017 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) ) 2018 { 2019 if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE ) 2020 { 2021 log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; 2022 result = false; 2023 } 2024 } 2025 2026 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_subpass_merge_feedback")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_create_renderpass2")) ) 2027 { 2028 if ( physicalDeviceSubpassMergeFeedbackFeaturesEXT.subpassMergeFeedback == VK_FALSE ) 2029 { 2030 log << tcu::TestLog::Message << "Mandatory feature subpassMergeFeedback not supported" << tcu::TestLog::EndMessage; 2031 result = false; 2032 } 2033 } 2034 2035 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) ) 2036 { 2037 if ( physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment == VK_FALSE ) 2038 { 2039 log << tcu::TestLog::Message << "Mandatory feature texelBufferAlignment not supported" << tcu::TestLog::EndMessage; 2040 result = false; 2041 } 2042 } 2043 2044 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) ) 2045 { 2046 if ( physicalDeviceTextureCompressionASTCHDRFeaturesEXT.textureCompressionASTC_HDR == VK_FALSE ) 2047 { 2048 log << tcu::TestLog::Message << "Mandatory feature textureCompressionASTC_HDR not supported" << tcu::TestLog::EndMessage; 2049 result = false; 2050 } 2051 } 2052 2053 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) ) 2054 { 2055#if defined(CTS_USES_VULKAN) 2056 if ( physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback == VK_FALSE ) 2057 { 2058 log << tcu::TestLog::Message << "Mandatory feature transformFeedback not supported" << tcu::TestLog::EndMessage; 2059 result = false; 2060 } 2061#endif // defined(CTS_USES_VULKAN) 2062 } 2063 2064 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) ) 2065 { 2066 if ( physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState == VK_FALSE ) 2067 { 2068 log << tcu::TestLog::Message << "Mandatory feature vertexInputDynamicState not supported" << tcu::TestLog::EndMessage; 2069 result = false; 2070 } 2071 } 2072 2073 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) ) 2074 { 2075 if ( physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats == VK_FALSE ) 2076 { 2077 log << tcu::TestLog::Message << "Mandatory feature ycbcr2plane444Formats not supported" << tcu::TestLog::EndMessage; 2078 result = false; 2079 } 2080 } 2081 2082 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) ) 2083 { 2084 if ( physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays == VK_FALSE ) 2085 { 2086 log << tcu::TestLog::Message << "Mandatory feature ycbcrImageArrays not supported" << tcu::TestLog::EndMessage; 2087 result = false; 2088 } 2089 } 2090 2091 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) ) 2092 { 2093 if ( physicalDevice16BitStorageFeatures.storageBuffer16BitAccess == VK_FALSE ) 2094 { 2095 log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage; 2096 result = false; 2097 } 2098 } 2099 2100 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) ) 2101 { 2102 if ( physicalDevice8BitStorageFeatures.storageBuffer8BitAccess == VK_FALSE ) 2103 { 2104 log << tcu::TestLog::Message << "Mandatory feature storageBuffer8BitAccess not supported" << tcu::TestLog::EndMessage; 2105 result = false; 2106 } 2107 } 2108 2109 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2110 { 2111 if ( physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE ) 2112 { 2113 log << tcu::TestLog::Message << "Mandatory feature accelerationStructure not supported" << tcu::TestLog::EndMessage; 2114 result = false; 2115 } 2116 } 2117 2118 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2119 { 2120 if ( physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind == VK_FALSE ) 2121 { 2122 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingAccelerationStructureUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2123 result = false; 2124 } 2125 } 2126 2127 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) ) 2128 { 2129 if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE ) 2130 { 2131 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 2132 result = false; 2133 } 2134 } 2135 2136 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2137 { 2138 if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE ) 2139 { 2140 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 2141 result = false; 2142 } 2143 } 2144 2145 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_dynamic_rendering_local_read")) ) 2146 { 2147 if ( physicalDeviceDynamicRenderingLocalReadFeaturesKHR.dynamicRenderingLocalRead == VK_FALSE ) 2148 { 2149 log << tcu::TestLog::Message << "Mandatory feature dynamicRenderingLocalRead not supported" << tcu::TestLog::EndMessage; 2150 result = false; 2151 } 2152 } 2153 2154 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) ) 2155 { 2156 if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) 2157 { 2158 log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; 2159 result = false; 2160 } 2161 } 2162 2163 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_global_priority")) ) 2164 { 2165 if ( physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery == VK_FALSE ) 2166 { 2167 log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage; 2168 result = false; 2169 } 2170 } 2171 2172 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) ) 2173 { 2174 if ( physicalDeviceImagelessFramebufferFeatures.imagelessFramebuffer == VK_FALSE ) 2175 { 2176 log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; 2177 result = false; 2178 } 2179 } 2180 2181 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) ) 2182 { 2183 if ( physicalDeviceIndexTypeUint8FeaturesKHR.indexTypeUint8 == VK_FALSE ) 2184 { 2185 log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage; 2186 result = false; 2187 } 2188 } 2189 2190 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_index_type_uint8")) ) 2191 { 2192 if ( physicalDeviceIndexTypeUint8FeaturesKHR.indexTypeUint8 == VK_FALSE ) 2193 { 2194 log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage; 2195 result = false; 2196 } 2197 } 2198 2199 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) ) 2200 { 2201 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 ) ) 2202 { 2203 log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage; 2204 result = false; 2205 } 2206 } 2207 2208 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_line_rasterization")) ) 2209 { 2210 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 ) ) 2211 { 2212 log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage; 2213 result = false; 2214 } 2215 } 2216 2217 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_maintenance5")) ) 2218 { 2219 if ( physicalDeviceMaintenance5FeaturesKHR.maintenance5 == VK_FALSE ) 2220 { 2221 log << tcu::TestLog::Message << "Mandatory feature maintenance5 not supported" << tcu::TestLog::EndMessage; 2222 result = false; 2223 } 2224 } 2225 2226 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_maintenance6")) ) 2227 { 2228 if ( physicalDeviceMaintenance6FeaturesKHR.maintenance6 == VK_FALSE ) 2229 { 2230 log << tcu::TestLog::Message << "Mandatory feature maintenance6 not supported" << tcu::TestLog::EndMessage; 2231 result = false; 2232 } 2233 } 2234 2235 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) ) 2236 { 2237 if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) 2238 { 2239 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 2240 result = false; 2241 } 2242 } 2243 2244 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) ) 2245 { 2246 if ( physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools == VK_FALSE ) 2247 { 2248 log << tcu::TestLog::Message << "Mandatory feature performanceCounterQueryPools not supported" << tcu::TestLog::EndMessage; 2249 result = false; 2250 } 2251 } 2252 2253 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) ) 2254 { 2255 if ( physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo == VK_FALSE ) 2256 { 2257 log << tcu::TestLog::Message << "Mandatory feature pipelineExecutableInfo not supported" << tcu::TestLog::EndMessage; 2258 result = false; 2259 } 2260 } 2261 2262#if defined(CTS_USES_VULKAN) 2263 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) ) 2264 { 2265 if ( physicalDevicePresentIdFeaturesKHR.presentId == VK_FALSE ) 2266 { 2267 log << tcu::TestLog::Message << "Mandatory feature presentId not supported" << tcu::TestLog::EndMessage; 2268 result = false; 2269 } 2270 } 2271#endif // defined(CTS_USES_VULKAN) 2272 2273#if defined(CTS_USES_VULKAN) 2274 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) ) 2275 { 2276 if ( physicalDevicePresentWaitFeaturesKHR.presentWait == VK_FALSE ) 2277 { 2278 log << tcu::TestLog::Message << "Mandatory feature presentWait not supported" << tcu::TestLog::EndMessage; 2279 result = false; 2280 } 2281 } 2282#endif // defined(CTS_USES_VULKAN) 2283 2284 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 2285 { 2286 if ( physicalDeviceRayQueryFeaturesKHR.rayQuery == VK_FALSE ) 2287 { 2288 log << tcu::TestLog::Message << "Mandatory feature rayQuery not supported" << tcu::TestLog::EndMessage; 2289 result = false; 2290 } 2291 } 2292 2293 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_maintenance1")) ) 2294 { 2295 if ( physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingMaintenance1 == VK_FALSE ) 2296 { 2297 log << tcu::TestLog::Message << "Mandatory feature rayTracingMaintenance1 not supported" << tcu::TestLog::EndMessage; 2298 result = false; 2299 } 2300 } 2301 2302 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) ) 2303 { 2304 if ( ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) && ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) ) 2305 { 2306 log << tcu::TestLog::Message << "Mandatory feature rayTracingPipeline or rayTracingPipelineTraceRaysIndirect not supported" << tcu::TestLog::EndMessage; 2307 result = false; 2308 } 2309 } 2310 2311 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) ) 2312 { 2313 if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling == VK_FALSE ) 2314 { 2315 log << tcu::TestLog::Message << "Mandatory feature rayTraversalPrimitiveCulling not supported" << tcu::TestLog::EndMessage; 2316 result = false; 2317 } 2318 } 2319 2320 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_position_fetch")) ) 2321 { 2322 if ( physicalDeviceRayTracingPositionFetchFeaturesKHR.rayTracingPositionFetch == VK_FALSE ) 2323 { 2324 log << tcu::TestLog::Message << "Mandatory feature rayTracingPositionFetch not supported" << tcu::TestLog::EndMessage; 2325 result = false; 2326 } 2327 } 2328 2329 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) ) 2330 { 2331 if ( physicalDeviceSamplerYcbcrConversionFeaturesKHR.samplerYcbcrConversion == VK_FALSE ) 2332 { 2333 log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion not supported" << tcu::TestLog::EndMessage; 2334 result = false; 2335 } 2336 } 2337 2338 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) ) 2339 { 2340 if ( physicalDeviceSeparateDepthStencilLayoutsFeatures.separateDepthStencilLayouts == VK_FALSE ) 2341 { 2342 log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; 2343 result = false; 2344 } 2345 } 2346 2347 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) ) 2348 { 2349 if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics == VK_FALSE ) 2350 { 2351 log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; 2352 result = false; 2353 } 2354 } 2355 2356 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) ) 2357 { 2358 if ( physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock == VK_FALSE ) 2359 { 2360 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupClock not supported" << tcu::TestLog::EndMessage; 2361 result = false; 2362 } 2363 } 2364 2365#if defined(CTS_USES_VULKAN) 2366 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_expect_assume")) ) 2367 { 2368 if ( physicalDeviceShaderExpectAssumeFeaturesKHR.shaderExpectAssume == VK_FALSE ) 2369 { 2370 log << tcu::TestLog::Message << "Mandatory feature shaderExpectAssume not supported" << tcu::TestLog::EndMessage; 2371 result = false; 2372 } 2373 } 2374#endif // defined(CTS_USES_VULKAN) 2375 2376 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) ) 2377 { 2378 if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) ) 2379 { 2380 log << tcu::TestLog::Message << "Mandatory feature shaderFloat16 or shaderInt8 not supported" << tcu::TestLog::EndMessage; 2381 result = false; 2382 } 2383 } 2384 2385 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float_controls2")) ) 2386 { 2387 if ( physicalDeviceShaderFloatControls2FeaturesKHR.shaderFloatControls2 == VK_FALSE ) 2388 { 2389 log << tcu::TestLog::Message << "Mandatory feature shaderFloatControls2 not supported" << tcu::TestLog::EndMessage; 2390 result = false; 2391 } 2392 } 2393 2394#if defined(CTS_USES_VULKAN) 2395 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) ) 2396 { 2397 if ( physicalDeviceShaderIntegerDotProductFeaturesKHR.shaderIntegerDotProduct == VK_FALSE ) 2398 { 2399 log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; 2400 result = false; 2401 } 2402 } 2403#endif // defined(CTS_USES_VULKAN) 2404 2405 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_maximal_reconvergence")) ) 2406 { 2407 if ( physicalDeviceShaderMaximalReconvergenceFeaturesKHR.shaderMaximalReconvergence == VK_FALSE ) 2408 { 2409 log << tcu::TestLog::Message << "Mandatory feature shaderMaximalReconvergence not supported" << tcu::TestLog::EndMessage; 2410 result = false; 2411 } 2412 } 2413 2414 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_quad_control")) ) 2415 { 2416 if ( physicalDeviceShaderQuadControlFeaturesKHR.shaderQuadControl == VK_FALSE ) 2417 { 2418 log << tcu::TestLog::Message << "Mandatory feature shaderQuadControl not supported" << tcu::TestLog::EndMessage; 2419 result = false; 2420 } 2421 } 2422 2423 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) ) 2424 { 2425 if ( physicalDeviceShaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes == VK_FALSE ) 2426 { 2427 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; 2428 result = false; 2429 } 2430 } 2431 2432 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_rotate")) ) 2433 { 2434 if ( physicalDeviceShaderSubgroupRotateFeaturesKHR.shaderSubgroupRotate == VK_FALSE ) 2435 { 2436 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupRotate not supported" << tcu::TestLog::EndMessage; 2437 result = false; 2438 } 2439 } 2440 2441 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) ) 2442 { 2443 if ( physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow == VK_FALSE ) 2444 { 2445 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupUniformControlFlow not supported" << tcu::TestLog::EndMessage; 2446 result = false; 2447 } 2448 } 2449 2450 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) ) 2451 { 2452 if ( physicalDeviceShaderTerminateInvocationFeaturesKHR.shaderTerminateInvocation == VK_FALSE ) 2453 { 2454 log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; 2455 result = false; 2456 } 2457 } 2458 2459 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) ) 2460 { 2461 if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE ) 2462 { 2463 log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; 2464 result = false; 2465 } 2466 } 2467 2468#if defined(CTS_USES_VULKAN) 2469 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) ) 2470 { 2471 if ( physicalDeviceTimelineSemaphoreFeatures.timelineSemaphore == VK_FALSE ) 2472 { 2473 log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; 2474 result = false; 2475 } 2476 } 2477#endif // defined(CTS_USES_VULKAN) 2478 2479 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) ) 2480 { 2481 if ( physicalDeviceUniformBufferStandardLayoutFeatures.uniformBufferStandardLayout == VK_FALSE ) 2482 { 2483 log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; 2484 result = false; 2485 } 2486 } 2487 2488 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) ) 2489 { 2490 if ( physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer == VK_FALSE ) 2491 { 2492 log << tcu::TestLog::Message << "Mandatory feature variablePointersStorageBuffer not supported" << tcu::TestLog::EndMessage; 2493 result = false; 2494 } 2495 } 2496 2497 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) ) 2498 { 2499 if ( physicalDeviceVertexAttributeDivisorFeaturesKHR.vertexAttributeInstanceRateDivisor == VK_FALSE ) 2500 { 2501 log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage; 2502 result = false; 2503 } 2504 } 2505 2506 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_vertex_attribute_divisor")) ) 2507 { 2508 if ( physicalDeviceVertexAttributeDivisorFeaturesKHR.vertexAttributeInstanceRateDivisor == VK_FALSE ) 2509 { 2510 log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage; 2511 result = false; 2512 } 2513 } 2514 2515 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) ) 2516 { 2517 if ( physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModel == VK_FALSE ) 2518 { 2519 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; 2520 result = false; 2521 } 2522 } 2523 2524 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) ) 2525 { 2526 if ( ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess == VK_FALSE ) ) 2527 { 2528 log << tcu::TestLog::Message << "Mandatory feature workgroupMemoryExplicitLayout or workgroupMemoryExplicitLayoutScalarBlockLayout or workgroupMemoryExplicitLayout8BitAccess or workgroupMemoryExplicitLayout16BitAccess not supported" << tcu::TestLog::EndMessage; 2529 result = false; 2530 } 2531 } 2532 2533 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) ) 2534 { 2535 if ( physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) 2536 { 2537 log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; 2538 result = false; 2539 } 2540 } 2541 2542 if ( isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) ) 2543 { 2544 if ( physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType == VK_FALSE ) 2545 { 2546 log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage; 2547 result = false; 2548 } 2549 } 2550 2551 { 2552 if ( coreFeatures.features.robustBufferAccess == VK_FALSE ) 2553 { 2554 log << tcu::TestLog::Message << "Mandatory feature robustBufferAccess not supported" << tcu::TestLog::EndMessage; 2555 result = false; 2556 } 2557 } 2558 2559 if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ) 2560 { 2561 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2562 { 2563 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2564 result = false; 2565 } 2566 } 2567 2568 if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics ) 2569 { 2570 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2571 { 2572 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2573 result = false; 2574 } 2575 } 2576 2577 if ( physicalDeviceShaderAtomicInt64Features.shaderSharedInt64Atomics ) 2578 { 2579 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2580 { 2581 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2582 result = false; 2583 } 2584 } 2585 2586 if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics ) 2587 { 2588 if ( coreFeatures.features.shaderInt64 == VK_FALSE ) 2589 { 2590 log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage; 2591 result = false; 2592 } 2593 } 2594 2595#if defined(CTS_USES_VULKAN) 2596 if ( context.contextSupports(vk::ApiVersion(0, 1, 1, 0)) ) 2597 { 2598 if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE ) 2599 { 2600 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 2601 result = false; 2602 } 2603 } 2604#endif // defined(CTS_USES_VULKAN) 2605 2606 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2607 { 2608 if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE ) 2609 { 2610 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2611 result = false; 2612 } 2613 } 2614 2615 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2616 { 2617 if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE ) 2618 { 2619 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2620 result = false; 2621 } 2622 } 2623 2624#if defined(CTS_USES_VULKAN) 2625 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2626 { 2627 if ( physicalDeviceVulkan11Features.multiview == VK_FALSE ) 2628 { 2629 log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage; 2630 result = false; 2631 } 2632 } 2633#endif // defined(CTS_USES_VULKAN) 2634 2635 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2636 { 2637 if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE ) 2638 { 2639 log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage; 2640 result = false; 2641 } 2642 } 2643 2644 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2645 { 2646 if ( physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes == VK_FALSE ) 2647 { 2648 log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage; 2649 result = false; 2650 } 2651 } 2652 2653 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2654 { 2655 if ( physicalDeviceVulkan12Features.imagelessFramebuffer == VK_FALSE ) 2656 { 2657 log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage; 2658 result = false; 2659 } 2660 } 2661 2662 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2663 { 2664 if ( physicalDeviceVulkan12Features.uniformBufferStandardLayout == VK_FALSE ) 2665 { 2666 log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage; 2667 result = false; 2668 } 2669 } 2670 2671 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2672 { 2673 if ( physicalDeviceVulkan12Features.separateDepthStencilLayouts == VK_FALSE ) 2674 { 2675 log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage; 2676 result = false; 2677 } 2678 } 2679 2680 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2681 { 2682 if ( physicalDeviceVulkan12Features.hostQueryReset == VK_FALSE ) 2683 { 2684 log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage; 2685 result = false; 2686 } 2687 } 2688 2689#if defined(CTS_USES_VULKAN) 2690 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) ) 2691 { 2692 if ( physicalDeviceVulkan12Features.timelineSemaphore == VK_FALSE ) 2693 { 2694 log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage; 2695 result = false; 2696 } 2697 } 2698#endif // defined(CTS_USES_VULKAN) 2699 2700 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2701 { 2702 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 2703 { 2704 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2705 result = false; 2706 } 2707 } 2708 2709 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2710 { 2711 if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 2712 { 2713 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2714 result = false; 2715 } 2716 } 2717 2718 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2719 { 2720 if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 2721 { 2722 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2723 result = false; 2724 } 2725 } 2726 2727 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2728 { 2729 if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 2730 { 2731 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2732 result = false; 2733 } 2734 } 2735 2736 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2737 { 2738 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 2739 { 2740 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2741 result = false; 2742 } 2743 } 2744 2745 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2746 { 2747 if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 2748 { 2749 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2750 result = false; 2751 } 2752 } 2753 2754 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2755 { 2756 if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 2757 { 2758 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2759 result = false; 2760 } 2761 } 2762 2763 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2764 { 2765 if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 2766 { 2767 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2768 result = false; 2769 } 2770 } 2771 2772 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2773 { 2774 if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 2775 { 2776 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2777 result = false; 2778 } 2779 } 2780 2781 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2782 { 2783 if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 2784 { 2785 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2786 result = false; 2787 } 2788 } 2789 2790 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2791 { 2792 if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 2793 { 2794 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 2795 result = false; 2796 } 2797 } 2798 2799 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2800 { 2801 if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE ) 2802 { 2803 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 2804 result = false; 2805 } 2806 } 2807 2808 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 2809 { 2810 if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE ) 2811 { 2812 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 2813 result = false; 2814 } 2815 } 2816 2817 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ) 2818 { 2819 if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics == VK_FALSE ) 2820 { 2821 log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage; 2822 result = false; 2823 } 2824 } 2825 2826 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_draw_indirect_count")) ) 2827 { 2828 if ( physicalDeviceVulkan12Features.drawIndirectCount == VK_FALSE ) 2829 { 2830 log << tcu::TestLog::Message << "Mandatory feature drawIndirectCount not supported" << tcu::TestLog::EndMessage; 2831 result = false; 2832 } 2833 } 2834 2835 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_mirror_clamp_to_edge")) ) 2836 { 2837 if ( physicalDeviceVulkan12Features.samplerMirrorClampToEdge == VK_FALSE ) 2838 { 2839 log << tcu::TestLog::Message << "Mandatory feature samplerMirrorClampToEdge not supported" << tcu::TestLog::EndMessage; 2840 result = false; 2841 } 2842 } 2843 2844 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_sampler_filter_minmax")) ) 2845 { 2846 if ( physicalDeviceVulkan12Features.samplerFilterMinmax == VK_FALSE ) 2847 { 2848 log << tcu::TestLog::Message << "Mandatory feature samplerFilterMinmax not supported" << tcu::TestLog::EndMessage; 2849 result = false; 2850 } 2851 } 2852 2853 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) ) 2854 { 2855 if ( physicalDeviceVulkan12Features.shaderOutputViewportIndex == VK_FALSE ) 2856 { 2857 log << tcu::TestLog::Message << "Mandatory feature shaderOutputViewportIndex not supported" << tcu::TestLog::EndMessage; 2858 result = false; 2859 } 2860 } 2861 2862 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) ) 2863 { 2864 if ( physicalDeviceVulkan12Features.shaderOutputLayer == VK_FALSE ) 2865 { 2866 log << tcu::TestLog::Message << "Mandatory feature shaderOutputLayer not supported" << tcu::TestLog::EndMessage; 2867 result = false; 2868 } 2869 } 2870 2871 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2872 { 2873 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE ) 2874 { 2875 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2876 result = false; 2877 } 2878 } 2879 2880 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2881 { 2882 if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE ) 2883 { 2884 log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage; 2885 result = false; 2886 } 2887 } 2888 2889 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2890 { 2891 if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE ) 2892 { 2893 log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2894 result = false; 2895 } 2896 } 2897 2898 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2899 { 2900 if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE ) 2901 { 2902 log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2903 result = false; 2904 } 2905 } 2906 2907 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2908 { 2909 if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE ) 2910 { 2911 log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage; 2912 result = false; 2913 } 2914 } 2915 2916 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2917 { 2918 if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE ) 2919 { 2920 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2921 result = false; 2922 } 2923 } 2924 2925 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2926 { 2927 if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE ) 2928 { 2929 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2930 result = false; 2931 } 2932 } 2933 2934 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2935 { 2936 if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE ) 2937 { 2938 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2939 result = false; 2940 } 2941 } 2942 2943 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2944 { 2945 if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE ) 2946 { 2947 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2948 result = false; 2949 } 2950 } 2951 2952 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2953 { 2954 if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE ) 2955 { 2956 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 2957 result = false; 2958 } 2959 } 2960 2961 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2962 { 2963 if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE ) 2964 { 2965 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage; 2966 result = false; 2967 } 2968 } 2969 2970 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2971 { 2972 if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE ) 2973 { 2974 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage; 2975 result = false; 2976 } 2977 } 2978 2979 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2980 { 2981 if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE ) 2982 { 2983 log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage; 2984 result = false; 2985 } 2986 } 2987 2988 if ( context.contextSupports(vk::ApiVersion(0, 1, 2, 0)) && isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) ) 2989 { 2990 if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE ) 2991 { 2992 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 2993 result = false; 2994 } 2995 } 2996 2997#if defined(CTS_USES_VULKAN) 2998 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 2999 { 3000 if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE ) 3001 { 3002 log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage; 3003 result = false; 3004 } 3005 } 3006#endif // defined(CTS_USES_VULKAN) 3007 3008#if defined(CTS_USES_VULKANSC) 3009 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3010 { 3011 if ( physicalDeviceVulkan12Features.vulkanMemoryModel == VK_FALSE ) 3012 { 3013 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage; 3014 result = false; 3015 } 3016 } 3017#endif // defined(CTS_USES_VULKANSC) 3018 3019#if defined(CTS_USES_VULKAN) 3020 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3021 { 3022 if ( physicalDeviceVulkan12Features.vulkanMemoryModelDeviceScope == VK_FALSE ) 3023 { 3024 log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModelDeviceScope not supported" << tcu::TestLog::EndMessage; 3025 result = false; 3026 } 3027 } 3028#endif // defined(CTS_USES_VULKAN) 3029 3030#if defined(CTS_USES_VULKAN) 3031 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3032 { 3033 if ( physicalDeviceVulkan13Features.robustImageAccess == VK_FALSE ) 3034 { 3035 log << tcu::TestLog::Message << "Mandatory feature robustImageAccess not supported" << tcu::TestLog::EndMessage; 3036 result = false; 3037 } 3038 } 3039#endif // defined(CTS_USES_VULKAN) 3040 3041#if defined(CTS_USES_VULKAN) 3042 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3043 { 3044 if ( physicalDeviceVulkan13Features.inlineUniformBlock == VK_FALSE ) 3045 { 3046 log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage; 3047 result = false; 3048 } 3049 } 3050#endif // defined(CTS_USES_VULKAN) 3051 3052#if defined(CTS_USES_VULKAN) 3053 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) && physicalDeviceVulkan12Features.descriptorIndexing ) 3054 { 3055 if ( physicalDeviceVulkan13Features.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE ) 3056 { 3057 log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage; 3058 result = false; 3059 } 3060 } 3061#endif // defined(CTS_USES_VULKAN) 3062 3063#if defined(CTS_USES_VULKAN) 3064 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3065 { 3066 if ( physicalDeviceVulkan13Features.pipelineCreationCacheControl == VK_FALSE ) 3067 { 3068 log << tcu::TestLog::Message << "Mandatory feature pipelineCreationCacheControl not supported" << tcu::TestLog::EndMessage; 3069 result = false; 3070 } 3071 } 3072#endif // defined(CTS_USES_VULKAN) 3073 3074#if defined(CTS_USES_VULKAN) 3075 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3076 { 3077 if ( physicalDeviceVulkan13Features.privateData == VK_FALSE ) 3078 { 3079 log << tcu::TestLog::Message << "Mandatory feature privateData not supported" << tcu::TestLog::EndMessage; 3080 result = false; 3081 } 3082 } 3083#endif // defined(CTS_USES_VULKAN) 3084 3085#if defined(CTS_USES_VULKAN) 3086 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3087 { 3088 if ( physicalDeviceVulkan13Features.shaderDemoteToHelperInvocation == VK_FALSE ) 3089 { 3090 log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage; 3091 result = false; 3092 } 3093 } 3094#endif // defined(CTS_USES_VULKAN) 3095 3096#if defined(CTS_USES_VULKAN) 3097 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3098 { 3099 if ( physicalDeviceVulkan13Features.shaderTerminateInvocation == VK_FALSE ) 3100 { 3101 log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage; 3102 result = false; 3103 } 3104 } 3105#endif // defined(CTS_USES_VULKAN) 3106 3107#if defined(CTS_USES_VULKAN) 3108 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3109 { 3110 if ( physicalDeviceVulkan13Features.subgroupSizeControl == VK_FALSE ) 3111 { 3112 log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage; 3113 result = false; 3114 } 3115 } 3116#endif // defined(CTS_USES_VULKAN) 3117 3118#if defined(CTS_USES_VULKAN) 3119 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3120 { 3121 if ( physicalDeviceVulkan13Features.computeFullSubgroups == VK_FALSE ) 3122 { 3123 log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage; 3124 result = false; 3125 } 3126 } 3127#endif // defined(CTS_USES_VULKAN) 3128 3129#if defined(CTS_USES_VULKAN) 3130 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3131 { 3132 if ( physicalDeviceVulkan13Features.synchronization2 == VK_FALSE ) 3133 { 3134 log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage; 3135 result = false; 3136 } 3137 } 3138#endif // defined(CTS_USES_VULKAN) 3139 3140#if defined(CTS_USES_VULKAN) 3141 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3142 { 3143 if ( physicalDeviceVulkan13Features.shaderZeroInitializeWorkgroupMemory == VK_FALSE ) 3144 { 3145 log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage; 3146 result = false; 3147 } 3148 } 3149#endif // defined(CTS_USES_VULKAN) 3150 3151#if defined(CTS_USES_VULKAN) 3152 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3153 { 3154 if ( physicalDeviceVulkan13Features.dynamicRendering == VK_FALSE ) 3155 { 3156 log << tcu::TestLog::Message << "Mandatory feature dynamicRendering not supported" << tcu::TestLog::EndMessage; 3157 result = false; 3158 } 3159 } 3160#endif // defined(CTS_USES_VULKAN) 3161 3162#if defined(CTS_USES_VULKAN) 3163 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3164 { 3165 if ( physicalDeviceVulkan13Features.shaderIntegerDotProduct == VK_FALSE ) 3166 { 3167 log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage; 3168 result = false; 3169 } 3170 } 3171#endif // defined(CTS_USES_VULKAN) 3172 3173#if defined(CTS_USES_VULKAN) 3174 if ( context.contextSupports(vk::ApiVersion(0, 1, 3, 0)) ) 3175 { 3176 if ( physicalDeviceVulkan13Features.maintenance4 == VK_FALSE ) 3177 { 3178 log << tcu::TestLog::Message << "Mandatory feature maintenance4 not supported" << tcu::TestLog::EndMessage; 3179 result = false; 3180 } 3181 } 3182#endif // defined(CTS_USES_VULKAN) 3183 3184#if defined(CTS_USES_VULKAN) 3185 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ConservativeRasterizationMode ) 3186 { 3187 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_conservative_rasterization")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_conservative_rasterization"))) 3188 { 3189 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_conservative_rasterization not supported" << tcu::TestLog::EndMessage; 3190 result = false; 3191 } 3192 } 3193#endif // defined(CTS_USES_VULKAN) 3194 3195#if defined(CTS_USES_VULKAN) 3196 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ExtraPrimitiveOverestimationSize ) 3197 { 3198 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_conservative_rasterization")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_conservative_rasterization"))) 3199 { 3200 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_conservative_rasterization not supported" << tcu::TestLog::EndMessage; 3201 result = false; 3202 } 3203 } 3204#endif // defined(CTS_USES_VULKAN) 3205 3206#if defined(CTS_USES_VULKAN) 3207 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3SampleLocationsEnable ) 3208 { 3209 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_sample_locations")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_sample_locations"))) 3210 { 3211 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_sample_locations not supported" << tcu::TestLog::EndMessage; 3212 result = false; 3213 } 3214 } 3215#endif // defined(CTS_USES_VULKAN) 3216 3217#if defined(CTS_USES_VULKAN) 3218 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendAdvanced ) 3219 { 3220 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_blend_operation_advanced")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_blend_operation_advanced"))) 3221 { 3222 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_blend_operation_advanced not supported" << tcu::TestLog::EndMessage; 3223 result = false; 3224 } 3225 } 3226#endif // defined(CTS_USES_VULKAN) 3227 3228#if defined(CTS_USES_VULKAN) 3229 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LineRasterizationMode ) 3230 { 3231 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_line_rasterization"))) 3232 { 3233 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_line_rasterization not supported" << tcu::TestLog::EndMessage; 3234 result = false; 3235 } 3236 } 3237#endif // defined(CTS_USES_VULKAN) 3238 3239#if defined(CTS_USES_VULKAN) 3240 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LineStippleEnable ) 3241 { 3242 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) || isCoreDeviceExtension(usedApiVersion, "VK_EXT_line_rasterization"))) 3243 { 3244 log << tcu::TestLog::Message << "Mandatory extension VK_EXT_line_rasterization not supported" << tcu::TestLog::EndMessage; 3245 result = false; 3246 } 3247 } 3248#endif // defined(CTS_USES_VULKAN) 3249 3250#if defined(CTS_USES_VULKAN) 3251 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ViewportWScalingEnable ) 3252 { 3253 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_clip_space_w_scaling")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_clip_space_w_scaling"))) 3254 { 3255 log << tcu::TestLog::Message << "Mandatory extension VK_NV_clip_space_w_scaling not supported" << tcu::TestLog::EndMessage; 3256 result = false; 3257 } 3258 } 3259#endif // defined(CTS_USES_VULKAN) 3260 3261#if defined(CTS_USES_VULKAN) 3262 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ViewportSwizzle ) 3263 { 3264 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_viewport_swizzle")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_viewport_swizzle"))) 3265 { 3266 log << tcu::TestLog::Message << "Mandatory extension VK_NV_viewport_swizzle not supported" << tcu::TestLog::EndMessage; 3267 result = false; 3268 } 3269 } 3270#endif // defined(CTS_USES_VULKAN) 3271 3272#if defined(CTS_USES_VULKAN) 3273 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageToColorEnable ) 3274 { 3275 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_fragment_coverage_to_color")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_fragment_coverage_to_color"))) 3276 { 3277 log << tcu::TestLog::Message << "Mandatory extension VK_NV_fragment_coverage_to_color not supported" << tcu::TestLog::EndMessage; 3278 result = false; 3279 } 3280 } 3281#endif // defined(CTS_USES_VULKAN) 3282 3283#if defined(CTS_USES_VULKAN) 3284 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageToColorLocation ) 3285 { 3286 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_fragment_coverage_to_color")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_fragment_coverage_to_color"))) 3287 { 3288 log << tcu::TestLog::Message << "Mandatory extension VK_NV_fragment_coverage_to_color not supported" << tcu::TestLog::EndMessage; 3289 result = false; 3290 } 3291 } 3292#endif // defined(CTS_USES_VULKAN) 3293 3294#if defined(CTS_USES_VULKAN) 3295 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationMode ) 3296 { 3297 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_framebuffer_mixed_samples")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_framebuffer_mixed_samples"))) 3298 { 3299 log << tcu::TestLog::Message << "Mandatory extension VK_NV_framebuffer_mixed_samples not supported" << tcu::TestLog::EndMessage; 3300 result = false; 3301 } 3302 } 3303#endif // defined(CTS_USES_VULKAN) 3304 3305#if defined(CTS_USES_VULKAN) 3306 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationTableEnable ) 3307 { 3308 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_framebuffer_mixed_samples")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_framebuffer_mixed_samples"))) 3309 { 3310 log << tcu::TestLog::Message << "Mandatory extension VK_NV_framebuffer_mixed_samples not supported" << tcu::TestLog::EndMessage; 3311 result = false; 3312 } 3313 } 3314#endif // defined(CTS_USES_VULKAN) 3315 3316#if defined(CTS_USES_VULKAN) 3317 if ( physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationTable ) 3318 { 3319 if (!(isExtensionStructSupported(deviceExtensions, RequiredExtension("VK_NV_framebuffer_mixed_samples")) || isCoreDeviceExtension(usedApiVersion, "VK_NV_framebuffer_mixed_samples"))) 3320 { 3321 log << tcu::TestLog::Message << "Mandatory extension VK_NV_framebuffer_mixed_samples not supported" << tcu::TestLog::EndMessage; 3322 result = false; 3323 } 3324 } 3325#endif // defined(CTS_USES_VULKAN) 3326 3327 return result; 3328} 3329 3330