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 6using namespace tcu; 7using ExtPropVect = std::vector<vk::VkExtensionProperties>; 8using IsSupportedFun = bool (*)(const tcu::UVec2&, const ExtPropVect&, const ExtPropVect&); 9using DependencyCheckVect = std::vector<std::pair<const char*, IsSupportedFun> >; 10 11bool isCompatibile(deUint32 major, deUint32 minor, const tcu::UVec2& testedApiVersion) 12{ 13 // return true when tested api version is greater 14 // or equal to version represented by two uints 15 if (major == testedApiVersion.x()) 16 return minor <= testedApiVersion.y(); 17 return major < testedApiVersion.x(); 18} 19 20bool isSupported(const ExtPropVect& extensions, const char* ext) 21{ 22 return isExtensionStructSupported(extensions, vk::RequiredExtension(ext)); 23} 24 25bool check_VK_KHR_display(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 26{ 27 DE_UNREF(v); 28 DE_UNREF(vDEP); 29 30 if (!isSupported(vIEP, "VK_KHR_display")) 31 return true; 32 33 // depends attribute in xml: VK_KHR_surface 34 return isSupported(vIEP, "VK_KHR_surface"); 35} 36 37bool check_VK_EXT_direct_mode_display(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 38{ 39 DE_UNREF(v); 40 DE_UNREF(vDEP); 41 42 if (!isSupported(vIEP, "VK_EXT_direct_mode_display")) 43 return true; 44 45 // depends attribute in xml: VK_KHR_display 46 return isSupported(vIEP, "VK_KHR_display"); 47} 48 49bool check_VK_EXT_display_surface_counter(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 50{ 51 DE_UNREF(v); 52 DE_UNREF(vDEP); 53 54 if (!isSupported(vIEP, "VK_EXT_display_surface_counter")) 55 return true; 56 57 // depends attribute in xml: VK_KHR_display 58 return isSupported(vIEP, "VK_KHR_display"); 59} 60 61bool check_VK_EXT_swapchain_colorspace(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 62{ 63 DE_UNREF(v); 64 DE_UNREF(vDEP); 65 66 if (!isSupported(vIEP, "VK_EXT_swapchain_colorspace")) 67 return true; 68 69 // depends attribute in xml: VK_KHR_surface 70 return isSupported(vIEP, "VK_KHR_surface"); 71} 72 73bool check_VK_KHR_get_surface_capabilities2(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 74{ 75 DE_UNREF(v); 76 DE_UNREF(vDEP); 77 78 if (!isSupported(vIEP, "VK_KHR_get_surface_capabilities2")) 79 return true; 80 81 // depends attribute in xml: VK_KHR_surface 82 return isSupported(vIEP, "VK_KHR_surface"); 83} 84 85bool check_VK_KHR_get_display_properties2(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 86{ 87 DE_UNREF(v); 88 DE_UNREF(vDEP); 89 90 if (!isSupported(vIEP, "VK_KHR_get_display_properties2")) 91 return true; 92 93 // depends attribute in xml: VK_KHR_display 94 return isSupported(vIEP, "VK_KHR_display"); 95} 96 97bool check_VK_EXT_headless_surface(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 98{ 99 DE_UNREF(v); 100 DE_UNREF(vDEP); 101 102 if (!isSupported(vIEP, "VK_EXT_headless_surface")) 103 return true; 104 105 // depends attribute in xml: VK_KHR_surface 106 return isSupported(vIEP, "VK_KHR_surface"); 107} 108 109static const DependencyCheckVect instanceExtensionDependencies 110{ 111 std::make_pair("VK_KHR_display", &check_VK_KHR_display), 112 std::make_pair("VK_EXT_direct_mode_display", &check_VK_EXT_direct_mode_display), 113 std::make_pair("VK_EXT_display_surface_counter", &check_VK_EXT_display_surface_counter), 114 std::make_pair("VK_EXT_swapchain_colorspace", &check_VK_EXT_swapchain_colorspace), 115 std::make_pair("VK_KHR_get_surface_capabilities2", &check_VK_KHR_get_surface_capabilities2), 116 std::make_pair("VK_KHR_get_display_properties2", &check_VK_KHR_get_display_properties2), 117 std::make_pair("VK_EXT_headless_surface", &check_VK_EXT_headless_surface), 118}; 119 120bool check_VK_KHR_swapchain(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 121{ 122 DE_UNREF(v); 123 DE_UNREF(vIEP); 124 125 if (!isSupported(vDEP, "VK_KHR_swapchain")) 126 return true; 127 128 // depends attribute in xml: VK_KHR_surface 129 return isSupported(vIEP, "VK_KHR_surface"); 130} 131 132bool check_VK_KHR_display_swapchain(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 133{ 134 DE_UNREF(v); 135 DE_UNREF(vIEP); 136 137 if (!isSupported(vDEP, "VK_KHR_display_swapchain")) 138 return true; 139 140 // depends attribute in xml: VK_KHR_swapchain+VK_KHR_display 141 return isSupported(vDEP, "VK_KHR_swapchain") && isSupported(vIEP, "VK_KHR_display"); 142} 143 144bool check_VK_EXT_texture_compression_astc_hdr(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 145{ 146 if (isCompatibile(1, 3, v)) 147 return true; 148 149 DE_UNREF(vIEP); 150 151 if (!isSupported(vDEP, "VK_EXT_texture_compression_astc_hdr")) 152 return true; 153 154 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 155 return true; 156} 157 158bool check_VK_EXT_astc_decode_mode(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 159{ 160 DE_UNREF(v); 161 DE_UNREF(vIEP); 162 163 if (!isSupported(vDEP, "VK_EXT_astc_decode_mode")) 164 return true; 165 166 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 167 return true; 168} 169 170bool check_VK_KHR_external_memory_fd(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 171{ 172 DE_UNREF(v); 173 DE_UNREF(vIEP); 174 175 if (!isSupported(vDEP, "VK_KHR_external_memory_fd")) 176 return true; 177 178 // depends attribute in xml: VK_KHR_external_memory,VK_VERSION_1_1 179 return true; 180} 181 182bool check_VK_KHR_external_semaphore_fd(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 183{ 184 DE_UNREF(v); 185 DE_UNREF(vIEP); 186 187 if (!isSupported(vDEP, "VK_KHR_external_semaphore_fd")) 188 return true; 189 190 // depends attribute in xml: VK_KHR_external_semaphore,VK_VERSION_1_1 191 return true; 192} 193 194bool check_VK_KHR_incremental_present(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 195{ 196 DE_UNREF(v); 197 DE_UNREF(vIEP); 198 199 if (!isSupported(vDEP, "VK_KHR_incremental_present")) 200 return true; 201 202 // depends attribute in xml: VK_KHR_swapchain 203 return isSupported(vDEP, "VK_KHR_swapchain"); 204} 205 206bool check_VK_EXT_display_control(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 207{ 208 DE_UNREF(v); 209 DE_UNREF(vIEP); 210 211 if (!isSupported(vDEP, "VK_EXT_display_control")) 212 return true; 213 214 // depends attribute in xml: VK_EXT_display_surface_counter+VK_KHR_swapchain 215 return isSupported(vIEP, "VK_EXT_display_surface_counter") && isSupported(vDEP, "VK_KHR_swapchain"); 216} 217 218bool check_VK_EXT_discard_rectangles(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 219{ 220 DE_UNREF(v); 221 DE_UNREF(vIEP); 222 223 if (!isSupported(vDEP, "VK_EXT_discard_rectangles")) 224 return true; 225 226 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 227 return true; 228} 229 230bool check_VK_EXT_conservative_rasterization(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 231{ 232 DE_UNREF(v); 233 DE_UNREF(vIEP); 234 235 if (!isSupported(vDEP, "VK_EXT_conservative_rasterization")) 236 return true; 237 238 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 239 return true; 240} 241 242bool check_VK_EXT_depth_clip_enable(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 243{ 244 DE_UNREF(v); 245 DE_UNREF(vIEP); 246 247 if (!isSupported(vDEP, "VK_EXT_depth_clip_enable")) 248 return true; 249 250 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 251 return true; 252} 253 254bool check_VK_EXT_hdr_metadata(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 255{ 256 DE_UNREF(v); 257 DE_UNREF(vIEP); 258 259 if (!isSupported(vDEP, "VK_EXT_hdr_metadata")) 260 return true; 261 262 // depends attribute in xml: VK_KHR_swapchain 263 return isSupported(vDEP, "VK_KHR_swapchain"); 264} 265 266bool check_VK_KHR_shared_presentable_image(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 267{ 268 DE_UNREF(v); 269 DE_UNREF(vIEP); 270 271 if (!isSupported(vDEP, "VK_KHR_shared_presentable_image")) 272 return true; 273 274 // depends attribute in xml: VK_KHR_swapchain+VK_KHR_get_surface_capabilities2+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1) 275 return isSupported(vDEP, "VK_KHR_swapchain") && isSupported(vIEP, "VK_KHR_get_surface_capabilities2") && (true); 276} 277 278bool check_VK_KHR_external_fence_fd(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 279{ 280 DE_UNREF(v); 281 DE_UNREF(vIEP); 282 283 if (!isSupported(vDEP, "VK_KHR_external_fence_fd")) 284 return true; 285 286 // depends attribute in xml: VK_KHR_external_fence,VK_VERSION_1_1 287 return true; 288} 289 290bool check_VK_KHR_performance_query(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 291{ 292 DE_UNREF(v); 293 DE_UNREF(vIEP); 294 295 if (!isSupported(vDEP, "VK_KHR_performance_query")) 296 return true; 297 298 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 299 return true; 300} 301 302bool check_VK_EXT_external_memory_dma_buf(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 303{ 304 DE_UNREF(v); 305 DE_UNREF(vIEP); 306 307 if (!isSupported(vDEP, "VK_EXT_external_memory_dma_buf")) 308 return true; 309 310 // depends attribute in xml: VK_KHR_external_memory_fd 311 return isSupported(vDEP, "VK_KHR_external_memory_fd"); 312} 313 314bool check_VK_EXT_queue_family_foreign(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 315{ 316 DE_UNREF(v); 317 DE_UNREF(vIEP); 318 319 if (!isSupported(vDEP, "VK_EXT_queue_family_foreign")) 320 return true; 321 322 // depends attribute in xml: VK_KHR_external_memory,VK_VERSION_1_1 323 return true; 324} 325 326bool check_VK_EXT_sample_locations(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 327{ 328 DE_UNREF(v); 329 DE_UNREF(vIEP); 330 331 if (!isSupported(vDEP, "VK_EXT_sample_locations")) 332 return true; 333 334 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 335 return true; 336} 337 338bool check_VK_EXT_blend_operation_advanced(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 339{ 340 DE_UNREF(v); 341 DE_UNREF(vIEP); 342 343 if (!isSupported(vDEP, "VK_EXT_blend_operation_advanced")) 344 return true; 345 346 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 347 return true; 348} 349 350bool check_VK_EXT_image_drm_format_modifier(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 351{ 352 DE_UNREF(v); 353 DE_UNREF(vIEP); 354 355 if (!isSupported(vDEP, "VK_EXT_image_drm_format_modifier")) 356 return true; 357 358 // depends attribute in xml: ((VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion),VK_VERSION_1_1)+(VK_KHR_image_format_list,VK_VERSION_1_2) 359 return ((true && true && true)) && (true); 360} 361 362bool check_VK_EXT_external_memory_host(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 363{ 364 DE_UNREF(v); 365 DE_UNREF(vIEP); 366 367 if (!isSupported(vDEP, "VK_EXT_external_memory_host")) 368 return true; 369 370 // depends attribute in xml: VK_KHR_external_memory,VK_VERSION_1_1 371 return true; 372} 373 374bool check_VK_KHR_shader_clock(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 375{ 376 DE_UNREF(v); 377 DE_UNREF(vIEP); 378 379 if (!isSupported(vDEP, "VK_KHR_shader_clock")) 380 return true; 381 382 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 383 return true; 384} 385 386bool check_VK_EXT_calibrated_timestamps(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 387{ 388 DE_UNREF(v); 389 DE_UNREF(vIEP); 390 391 if (!isSupported(vDEP, "VK_EXT_calibrated_timestamps")) 392 return true; 393 394 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 395 return true; 396} 397 398bool check_VK_EXT_vertex_attribute_divisor(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 399{ 400 DE_UNREF(v); 401 DE_UNREF(vIEP); 402 403 if (!isSupported(vDEP, "VK_EXT_vertex_attribute_divisor")) 404 return true; 405 406 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 407 return true; 408} 409 410bool check_VK_KHR_swapchain_mutable_format(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 411{ 412 DE_UNREF(v); 413 DE_UNREF(vIEP); 414 415 if (!isSupported(vDEP, "VK_KHR_swapchain_mutable_format")) 416 return true; 417 418 // depends attribute in xml: VK_KHR_swapchain+(VK_KHR_maintenance2,VK_VERSION_1_1)+(VK_KHR_image_format_list,VK_VERSION_1_2) 419 return isSupported(vDEP, "VK_KHR_swapchain") && (true) && (true); 420} 421 422bool check_VK_EXT_pci_bus_info(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 423{ 424 DE_UNREF(v); 425 DE_UNREF(vIEP); 426 427 if (!isSupported(vDEP, "VK_EXT_pci_bus_info")) 428 return true; 429 430 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 431 return true; 432} 433 434bool check_VK_KHR_shader_terminate_invocation(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 435{ 436 if (isCompatibile(1, 3, v)) 437 return true; 438 439 DE_UNREF(vIEP); 440 441 if (!isSupported(vDEP, "VK_KHR_shader_terminate_invocation")) 442 return true; 443 444 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 445 return true; 446} 447 448bool check_VK_EXT_subgroup_size_control(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 449{ 450 if (isCompatibile(1, 3, v)) 451 return true; 452 453 DE_UNREF(vIEP); 454 455 if (!isSupported(vDEP, "VK_EXT_subgroup_size_control")) 456 return true; 457 458 // depends attribute in xml: VK_VERSION_1_1 459 return isCompatibile(1, 1, v); 460} 461 462bool check_VK_KHR_fragment_shading_rate(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 463{ 464 DE_UNREF(v); 465 DE_UNREF(vIEP); 466 467 if (!isSupported(vDEP, "VK_KHR_fragment_shading_rate")) 468 return true; 469 470 // depends attribute in xml: (VK_KHR_create_renderpass2,VK_VERSION_1_2)+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1) 471 return (true) && (true); 472} 473 474bool check_VK_EXT_shader_image_atomic_int64(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 475{ 476 DE_UNREF(v); 477 DE_UNREF(vIEP); 478 479 if (!isSupported(vDEP, "VK_EXT_shader_image_atomic_int64")) 480 return true; 481 482 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 483 return true; 484} 485 486bool check_VK_EXT_memory_budget(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 487{ 488 DE_UNREF(v); 489 DE_UNREF(vIEP); 490 491 if (!isSupported(vDEP, "VK_EXT_memory_budget")) 492 return true; 493 494 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 495 return true; 496} 497 498bool check_VK_EXT_fragment_shader_interlock(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 499{ 500 DE_UNREF(v); 501 DE_UNREF(vIEP); 502 503 if (!isSupported(vDEP, "VK_EXT_fragment_shader_interlock")) 504 return true; 505 506 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 507 return true; 508} 509 510bool check_VK_EXT_ycbcr_image_arrays(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 511{ 512 DE_UNREF(v); 513 DE_UNREF(vIEP); 514 515 if (!isSupported(vDEP, "VK_EXT_ycbcr_image_arrays")) 516 return true; 517 518 // depends attribute in xml: VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1 519 return true; 520} 521 522bool check_VK_EXT_line_rasterization(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 523{ 524 DE_UNREF(v); 525 DE_UNREF(vIEP); 526 527 if (!isSupported(vDEP, "VK_EXT_line_rasterization")) 528 return true; 529 530 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 531 return true; 532} 533 534bool check_VK_EXT_shader_atomic_float(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 535{ 536 DE_UNREF(v); 537 DE_UNREF(vIEP); 538 539 if (!isSupported(vDEP, "VK_EXT_shader_atomic_float")) 540 return true; 541 542 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 543 return true; 544} 545 546bool check_VK_EXT_index_type_uint8(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 547{ 548 DE_UNREF(v); 549 DE_UNREF(vIEP); 550 551 if (!isSupported(vDEP, "VK_EXT_index_type_uint8")) 552 return true; 553 554 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 555 return true; 556} 557 558bool check_VK_EXT_extended_dynamic_state(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 559{ 560 if (isCompatibile(1, 3, v)) 561 return true; 562 563 DE_UNREF(vIEP); 564 565 if (!isSupported(vDEP, "VK_EXT_extended_dynamic_state")) 566 return true; 567 568 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 569 return true; 570} 571 572bool check_VK_EXT_shader_demote_to_helper_invocation(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 573{ 574 if (isCompatibile(1, 3, v)) 575 return true; 576 577 DE_UNREF(vIEP); 578 579 if (!isSupported(vDEP, "VK_EXT_shader_demote_to_helper_invocation")) 580 return true; 581 582 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 583 return true; 584} 585 586bool check_VK_EXT_texel_buffer_alignment(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 587{ 588 if (isCompatibile(1, 3, v)) 589 return true; 590 591 DE_UNREF(vIEP); 592 593 if (!isSupported(vDEP, "VK_EXT_texel_buffer_alignment")) 594 return true; 595 596 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 597 return true; 598} 599 600bool check_VK_EXT_robustness2(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 601{ 602 DE_UNREF(v); 603 DE_UNREF(vIEP); 604 605 if (!isSupported(vDEP, "VK_EXT_robustness2")) 606 return true; 607 608 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 609 return true; 610} 611 612bool check_VK_EXT_custom_border_color(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 613{ 614 DE_UNREF(v); 615 DE_UNREF(vIEP); 616 617 if (!isSupported(vDEP, "VK_EXT_custom_border_color")) 618 return true; 619 620 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 621 return true; 622} 623 624bool check_VK_KHR_synchronization2(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 625{ 626 if (isCompatibile(1, 3, v)) 627 return true; 628 629 DE_UNREF(vIEP); 630 631 if (!isSupported(vDEP, "VK_KHR_synchronization2")) 632 return true; 633 634 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 635 return true; 636} 637 638bool check_VK_EXT_ycbcr_2plane_444_formats(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 639{ 640 if (isCompatibile(1, 3, v)) 641 return true; 642 643 DE_UNREF(vIEP); 644 645 if (!isSupported(vDEP, "VK_EXT_ycbcr_2plane_444_formats")) 646 return true; 647 648 // depends attribute in xml: VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1 649 return true; 650} 651 652bool check_VK_EXT_image_robustness(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 653{ 654 if (isCompatibile(1, 3, v)) 655 return true; 656 657 DE_UNREF(vIEP); 658 659 if (!isSupported(vDEP, "VK_EXT_image_robustness")) 660 return true; 661 662 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 663 return true; 664} 665 666bool check_VK_KHR_copy_commands2(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 667{ 668 if (isCompatibile(1, 3, v)) 669 return true; 670 671 DE_UNREF(vIEP); 672 673 if (!isSupported(vDEP, "VK_KHR_copy_commands2")) 674 return true; 675 676 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 677 return true; 678} 679 680bool check_VK_EXT_4444_formats(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 681{ 682 if (isCompatibile(1, 3, v)) 683 return true; 684 685 DE_UNREF(vIEP); 686 687 if (!isSupported(vDEP, "VK_EXT_4444_formats")) 688 return true; 689 690 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 691 return true; 692} 693 694bool check_VK_EXT_vertex_input_dynamic_state(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 695{ 696 DE_UNREF(v); 697 DE_UNREF(vIEP); 698 699 if (!isSupported(vDEP, "VK_EXT_vertex_input_dynamic_state")) 700 return true; 701 702 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 703 return true; 704} 705 706bool check_VK_NV_external_sci_sync(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 707{ 708 DE_UNREF(v); 709 DE_UNREF(vIEP); 710 711 if (!isSupported(vDEP, "VK_NV_external_sci_sync")) 712 return true; 713 714 // depends attribute in xml: VK_VERSION_1_1 715 return isCompatibile(1, 1, v); 716} 717 718bool check_VK_NV_external_memory_sci_buf(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 719{ 720 DE_UNREF(v); 721 DE_UNREF(vIEP); 722 723 if (!isSupported(vDEP, "VK_NV_external_memory_sci_buf")) 724 return true; 725 726 // depends attribute in xml: VK_VERSION_1_1 727 return isCompatibile(1, 1, v); 728} 729 730bool check_VK_EXT_extended_dynamic_state2(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 731{ 732 if (isCompatibile(1, 3, v)) 733 return true; 734 735 DE_UNREF(vIEP); 736 737 if (!isSupported(vDEP, "VK_EXT_extended_dynamic_state2")) 738 return true; 739 740 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 741 return true; 742} 743 744bool check_VK_EXT_color_write_enable(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 745{ 746 DE_UNREF(v); 747 DE_UNREF(vIEP); 748 749 if (!isSupported(vDEP, "VK_EXT_color_write_enable")) 750 return true; 751 752 // depends attribute in xml: VK_KHR_get_physical_device_properties2,VK_VERSION_1_1 753 return true; 754} 755 756bool check_VK_NV_external_sci_sync2(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 757{ 758 DE_UNREF(v); 759 DE_UNREF(vIEP); 760 761 if (!isSupported(vDEP, "VK_NV_external_sci_sync2")) 762 return true; 763 764 // depends attribute in xml: VK_VERSION_1_1 765 return isCompatibile(1, 1, v); 766} 767 768bool check_VK_QNX_external_memory_screen_buffer(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 769{ 770 DE_UNREF(v); 771 DE_UNREF(vIEP); 772 773 if (!isSupported(vDEP, "VK_QNX_external_memory_screen_buffer")) 774 return true; 775 776 // depends attribute in xml: ((VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation),VK_VERSION_1_1)+VK_EXT_queue_family_foreign 777 return ((true && true && true)) && isSupported(vDEP, "VK_EXT_queue_family_foreign"); 778} 779 780bool check_VK_NV_device_diagnostic_checkpoints(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 781{ 782 DE_UNREF(v); 783 DE_UNREF(vIEP); 784 785 if (!isSupported(vDEP, "VK_NV_device_diagnostic_checkpoints")) 786 return true; 787 788 // depends attribute in xml: VK_KHR_get_physical_device_properties2 789 return true; 790} 791 792bool check_VK_KHR_format_feature_flags2(const tcu::UVec2& v, const ExtPropVect& vIEP, const ExtPropVect& vDEP) 793{ 794 if (isCompatibile(1, 3, v)) 795 return true; 796 797 DE_UNREF(vIEP); 798 799 if (!isSupported(vDEP, "VK_KHR_format_feature_flags2")) 800 return true; 801 802 // depends attribute in xml: VK_KHR_get_physical_device_properties2 803 return true; 804} 805 806static const DependencyCheckVect deviceExtensionDependencies 807{ 808 std::make_pair("VK_KHR_swapchain", &check_VK_KHR_swapchain), 809 std::make_pair("VK_KHR_display_swapchain", &check_VK_KHR_display_swapchain), 810 std::make_pair("VK_EXT_texture_compression_astc_hdr", &check_VK_EXT_texture_compression_astc_hdr), 811 std::make_pair("VK_EXT_astc_decode_mode", &check_VK_EXT_astc_decode_mode), 812 std::make_pair("VK_KHR_external_memory_fd", &check_VK_KHR_external_memory_fd), 813 std::make_pair("VK_KHR_external_semaphore_fd", &check_VK_KHR_external_semaphore_fd), 814 std::make_pair("VK_KHR_incremental_present", &check_VK_KHR_incremental_present), 815 std::make_pair("VK_EXT_display_control", &check_VK_EXT_display_control), 816 std::make_pair("VK_EXT_discard_rectangles", &check_VK_EXT_discard_rectangles), 817 std::make_pair("VK_EXT_conservative_rasterization", &check_VK_EXT_conservative_rasterization), 818 std::make_pair("VK_EXT_depth_clip_enable", &check_VK_EXT_depth_clip_enable), 819 std::make_pair("VK_EXT_hdr_metadata", &check_VK_EXT_hdr_metadata), 820 std::make_pair("VK_KHR_shared_presentable_image", &check_VK_KHR_shared_presentable_image), 821 std::make_pair("VK_KHR_external_fence_fd", &check_VK_KHR_external_fence_fd), 822 std::make_pair("VK_KHR_performance_query", &check_VK_KHR_performance_query), 823 std::make_pair("VK_EXT_external_memory_dma_buf", &check_VK_EXT_external_memory_dma_buf), 824 std::make_pair("VK_EXT_queue_family_foreign", &check_VK_EXT_queue_family_foreign), 825 std::make_pair("VK_EXT_sample_locations", &check_VK_EXT_sample_locations), 826 std::make_pair("VK_EXT_blend_operation_advanced", &check_VK_EXT_blend_operation_advanced), 827 std::make_pair("VK_EXT_image_drm_format_modifier", &check_VK_EXT_image_drm_format_modifier), 828 std::make_pair("VK_EXT_external_memory_host", &check_VK_EXT_external_memory_host), 829 std::make_pair("VK_KHR_shader_clock", &check_VK_KHR_shader_clock), 830 std::make_pair("VK_EXT_calibrated_timestamps", &check_VK_EXT_calibrated_timestamps), 831 std::make_pair("VK_EXT_vertex_attribute_divisor", &check_VK_EXT_vertex_attribute_divisor), 832 std::make_pair("VK_KHR_swapchain_mutable_format", &check_VK_KHR_swapchain_mutable_format), 833 std::make_pair("VK_EXT_pci_bus_info", &check_VK_EXT_pci_bus_info), 834 std::make_pair("VK_KHR_shader_terminate_invocation", &check_VK_KHR_shader_terminate_invocation), 835 std::make_pair("VK_EXT_subgroup_size_control", &check_VK_EXT_subgroup_size_control), 836 std::make_pair("VK_KHR_fragment_shading_rate", &check_VK_KHR_fragment_shading_rate), 837 std::make_pair("VK_EXT_shader_image_atomic_int64", &check_VK_EXT_shader_image_atomic_int64), 838 std::make_pair("VK_EXT_memory_budget", &check_VK_EXT_memory_budget), 839 std::make_pair("VK_EXT_fragment_shader_interlock", &check_VK_EXT_fragment_shader_interlock), 840 std::make_pair("VK_EXT_ycbcr_image_arrays", &check_VK_EXT_ycbcr_image_arrays), 841 std::make_pair("VK_EXT_line_rasterization", &check_VK_EXT_line_rasterization), 842 std::make_pair("VK_EXT_shader_atomic_float", &check_VK_EXT_shader_atomic_float), 843 std::make_pair("VK_EXT_index_type_uint8", &check_VK_EXT_index_type_uint8), 844 std::make_pair("VK_EXT_extended_dynamic_state", &check_VK_EXT_extended_dynamic_state), 845 std::make_pair("VK_EXT_shader_demote_to_helper_invocation", &check_VK_EXT_shader_demote_to_helper_invocation), 846 std::make_pair("VK_EXT_texel_buffer_alignment", &check_VK_EXT_texel_buffer_alignment), 847 std::make_pair("VK_EXT_robustness2", &check_VK_EXT_robustness2), 848 std::make_pair("VK_EXT_custom_border_color", &check_VK_EXT_custom_border_color), 849 std::make_pair("VK_KHR_synchronization2", &check_VK_KHR_synchronization2), 850 std::make_pair("VK_EXT_ycbcr_2plane_444_formats", &check_VK_EXT_ycbcr_2plane_444_formats), 851 std::make_pair("VK_EXT_image_robustness", &check_VK_EXT_image_robustness), 852 std::make_pair("VK_KHR_copy_commands2", &check_VK_KHR_copy_commands2), 853 std::make_pair("VK_EXT_4444_formats", &check_VK_EXT_4444_formats), 854 std::make_pair("VK_EXT_vertex_input_dynamic_state", &check_VK_EXT_vertex_input_dynamic_state), 855 std::make_pair("VK_NV_external_sci_sync", &check_VK_NV_external_sci_sync), 856 std::make_pair("VK_NV_external_memory_sci_buf", &check_VK_NV_external_memory_sci_buf), 857 std::make_pair("VK_EXT_extended_dynamic_state2", &check_VK_EXT_extended_dynamic_state2), 858 std::make_pair("VK_EXT_color_write_enable", &check_VK_EXT_color_write_enable), 859 std::make_pair("VK_NV_external_sci_sync2", &check_VK_NV_external_sci_sync2), 860 std::make_pair("VK_QNX_external_memory_screen_buffer", &check_VK_QNX_external_memory_screen_buffer), 861 std::make_pair("VK_NV_device_diagnostic_checkpoints", &check_VK_NV_device_diagnostic_checkpoints), 862 std::make_pair("VK_KHR_format_feature_flags2", &check_VK_KHR_format_feature_flags2), 863}; 864 865static const std::tuple<deUint32, deUint32, deUint32, deUint32> releasedApiVersions[] = 866{ 867 std::make_tuple(541065216, 1, 1, 0), 868 std::make_tuple(541077504, 1, 1, 3), 869 std::make_tuple(541073408, 1, 1, 2), 870 std::make_tuple(541069312, 1, 1, 1), 871 std::make_tuple(541065216, 1, 1, 0), 872}; 873static const std::tuple<deUint32, deUint32, const char*> extensionRequiredCoreVersion[] = 874{ 875 std::make_tuple(1, 0, "VK_KHR_surface"), 876 std::make_tuple(1, 0, "VK_KHR_swapchain"), 877 std::make_tuple(1, 0, "VK_KHR_display"), 878 std::make_tuple(1, 0, "VK_KHR_display_swapchain"), 879 std::make_tuple(1, 0, "VK_EXT_depth_range_unrestricted"), 880 std::make_tuple(1, 0, "VK_NV_private_vendor_info"), 881 std::make_tuple(1, 0, "VK_EXT_texture_compression_astc_hdr"), 882 std::make_tuple(1, 0, "VK_EXT_astc_decode_mode"), 883 std::make_tuple(1, 0, "VK_KHR_external_memory_fd"), 884 std::make_tuple(1, 0, "VK_KHR_external_semaphore_fd"), 885 std::make_tuple(1, 0, "VK_KHR_incremental_present"), 886 std::make_tuple(1, 0, "VK_EXT_direct_mode_display"), 887 std::make_tuple(1, 0, "VK_EXT_display_surface_counter"), 888 std::make_tuple(1, 0, "VK_EXT_display_control"), 889 std::make_tuple(1, 0, "VK_EXT_discard_rectangles"), 890 std::make_tuple(1, 0, "VK_EXT_conservative_rasterization"), 891 std::make_tuple(1, 0, "VK_EXT_depth_clip_enable"), 892 std::make_tuple(1, 0, "VK_EXT_swapchain_colorspace"), 893 std::make_tuple(1, 0, "VK_EXT_hdr_metadata"), 894 std::make_tuple(1, 0, "VK_KHR_shared_presentable_image"), 895 std::make_tuple(1, 0, "VK_KHR_external_fence_fd"), 896 std::make_tuple(1, 0, "VK_KHR_performance_query"), 897 std::make_tuple(1, 0, "VK_KHR_get_surface_capabilities2"), 898 std::make_tuple(1, 0, "VK_KHR_get_display_properties2"), 899 std::make_tuple(1, 0, "VK_EXT_external_memory_dma_buf"), 900 std::make_tuple(1, 0, "VK_EXT_queue_family_foreign"), 901 std::make_tuple(1, 0, "VK_EXT_debug_utils"), 902 std::make_tuple(1, 0, "VK_EXT_shader_stencil_export"), 903 std::make_tuple(1, 0, "VK_EXT_sample_locations"), 904 std::make_tuple(1, 0, "VK_EXT_blend_operation_advanced"), 905 std::make_tuple(1, 0, "VK_EXT_post_depth_coverage"), 906 std::make_tuple(1, 0, "VK_EXT_image_drm_format_modifier"), 907 std::make_tuple(1, 0, "VK_EXT_filter_cubic"), 908 std::make_tuple(1, 0, "VK_EXT_global_priority"), 909 std::make_tuple(1, 0, "VK_EXT_external_memory_host"), 910 std::make_tuple(1, 0, "VK_KHR_shader_clock"), 911 std::make_tuple(1, 0, "VK_EXT_calibrated_timestamps"), 912 std::make_tuple(1, 0, "VK_EXT_vertex_attribute_divisor"), 913 std::make_tuple(1, 0, "VK_KHR_swapchain_mutable_format"), 914 std::make_tuple(1, 0, "VK_EXT_pci_bus_info"), 915 std::make_tuple(1, 0, "VK_KHR_shader_terminate_invocation"), 916 std::make_tuple(1, 1, "VK_EXT_subgroup_size_control"), 917 std::make_tuple(1, 0, "VK_KHR_fragment_shading_rate"), 918 std::make_tuple(1, 0, "VK_EXT_shader_image_atomic_int64"), 919 std::make_tuple(1, 0, "VK_EXT_memory_budget"), 920 std::make_tuple(1, 0, "VK_EXT_validation_features"), 921 std::make_tuple(1, 0, "VK_EXT_fragment_shader_interlock"), 922 std::make_tuple(1, 0, "VK_EXT_ycbcr_image_arrays"), 923 std::make_tuple(1, 0, "VK_EXT_headless_surface"), 924 std::make_tuple(1, 0, "VK_EXT_line_rasterization"), 925 std::make_tuple(1, 0, "VK_EXT_shader_atomic_float"), 926 std::make_tuple(1, 0, "VK_EXT_index_type_uint8"), 927 std::make_tuple(1, 0, "VK_EXT_extended_dynamic_state"), 928 std::make_tuple(1, 0, "VK_EXT_shader_demote_to_helper_invocation"), 929 std::make_tuple(1, 0, "VK_EXT_texel_buffer_alignment"), 930 std::make_tuple(1, 0, "VK_EXT_robustness2"), 931 std::make_tuple(1, 0, "VK_EXT_custom_border_color"), 932 std::make_tuple(1, 0, "VK_KHR_object_refresh"), 933 std::make_tuple(1, 0, "VK_KHR_synchronization2"), 934 std::make_tuple(1, 0, "VK_EXT_ycbcr_2plane_444_formats"), 935 std::make_tuple(1, 0, "VK_EXT_image_robustness"), 936 std::make_tuple(1, 0, "VK_KHR_copy_commands2"), 937 std::make_tuple(1, 0, "VK_EXT_4444_formats"), 938 std::make_tuple(1, 0, "VK_EXT_vertex_input_dynamic_state"), 939 std::make_tuple(1, 1, "VK_NV_external_sci_sync"), 940 std::make_tuple(1, 1, "VK_NV_external_memory_sci_buf"), 941 std::make_tuple(1, 0, "VK_EXT_extended_dynamic_state2"), 942 std::make_tuple(1, 0, "VK_EXT_color_write_enable"), 943 std::make_tuple(1, 0, "VK_EXT_application_parameters"), 944 std::make_tuple(1, 1, "VK_NV_external_sci_sync2"), 945 std::make_tuple(1, 0, "VK_QNX_external_memory_screen_buffer"), 946 std::make_tuple(1, 0, "VK_NV_device_diagnostic_checkpoints"), 947 std::make_tuple(1, 0, "VK_KHR_format_feature_flags2"), 948}; 949