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