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