The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

comp/main: Simplify use of u_string_list

+27 -48
+27 -48
src/xrt/compositor/main/comp_compositor.c
··· 523 523 VK_KHR_SURFACE_EXTENSION_NAME 524 524 // clang-format on 525 525 526 - static const char *instance_extensions_none[] = { 526 + static const char *instance_extensions_common[] = { 527 527 COMP_INSTANCE_EXTENSIONS_COMMON, 528 528 }; 529 529 530 530 #ifdef VK_USE_PLATFORM_XCB_KHR 531 531 static const char *instance_extensions_xcb[] = { 532 - COMP_INSTANCE_EXTENSIONS_COMMON, 533 532 VK_KHR_XCB_SURFACE_EXTENSION_NAME, 534 533 }; 535 534 #endif 536 535 537 536 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 538 537 static const char *instance_extensions_wayland[] = { 539 - COMP_INSTANCE_EXTENSIONS_COMMON, 540 538 VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME, 541 539 }; 542 540 543 541 static const char *instance_extensions_direct_wayland[] = { 544 - COMP_INSTANCE_EXTENSIONS_COMMON, // 545 542 VK_KHR_DISPLAY_EXTENSION_NAME, // 546 543 VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME, // 547 544 VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME, // ··· 554 551 555 552 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 556 553 static const char *instance_extensions_direct_mode[] = { 557 - COMP_INSTANCE_EXTENSIONS_COMMON, 558 554 VK_KHR_DISPLAY_EXTENSION_NAME, 559 555 VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME, 560 556 VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME, ··· 563 559 564 560 #ifdef VK_USE_PLATFORM_DISPLAY_KHR 565 561 static const char *instance_extensions_vk_display[] = { 566 - COMP_INSTANCE_EXTENSIONS_COMMON, 567 562 VK_KHR_DISPLAY_EXTENSION_NAME, 568 563 }; 569 564 #endif 570 565 571 566 #ifdef VK_USE_PLATFORM_ANDROID_KHR 572 567 static const char *instance_extensions_android[] = { 573 - COMP_INSTANCE_EXTENSIONS_COMMON, 574 568 VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, 575 569 }; 576 570 #endif 577 571 578 572 #ifdef VK_USE_PLATFORM_WIN32_KHR 579 573 static const char *instance_extensions_windows[] = { 580 - COMP_INSTANCE_EXTENSIONS_COMMON, 581 574 VK_KHR_WIN32_SURFACE_EXTENSION_NAME, 582 575 }; 583 576 #endif ··· 620 613 #endif 621 614 }; 622 615 623 - static const char *optional_device_extensions[] = {VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME, 624 - VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, 616 + static const char *optional_device_extensions[] = { 617 + VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME, 618 + VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, 625 619 #ifdef VK_EXT_robustness2 626 - VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, 620 + VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, 627 621 #endif 628 622 #ifdef VK_EXT_display_control 629 - VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME 623 + VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME, 630 624 #endif 631 625 }; 632 626 633 - static bool 634 - append_all(struct comp_compositor *c, struct u_string_list *required, const char *const *arr, uint32_t size) 635 - { 636 - for (uint32_t i = 0; i < size; i++) { 637 - int ret = u_string_list_append(required, arr[i]); 638 - if (ret < 0) { 639 - COMP_ERROR(c, "Failed to add %s to instance extension list: %d", arr[i], ret); 640 - return false; 641 - } 642 - } 643 - return true; 644 - } 645 - 646 627 static VkResult 647 628 select_instances_extensions(struct comp_compositor *c, struct u_string_list *required, struct u_string_list *optional) 648 629 { 649 630 switch (c->settings.window_type) { 650 - case WINDOW_NONE: 651 - append_all(c, required, instance_extensions_none, ARRAY_SIZE(instance_extensions_none)); 652 - break; 631 + case WINDOW_NONE: break; 653 632 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 654 633 case WINDOW_DIRECT_WAYLAND: 655 - append_all(c, required, instance_extensions_direct_wayland, 656 - ARRAY_SIZE(instance_extensions_direct_wayland)); 634 + u_string_list_append_array(required, instance_extensions_direct_wayland, 635 + ARRAY_SIZE(instance_extensions_direct_wayland)); 657 636 break; 658 637 659 638 case WINDOW_WAYLAND: 660 - append_all(c, required, instance_extensions_wayland, ARRAY_SIZE(instance_extensions_wayland)); 639 + u_string_list_append_array(required, instance_extensions_wayland, 640 + ARRAY_SIZE(instance_extensions_wayland)); 661 641 break; 662 642 #endif 663 643 #ifdef VK_USE_PLATFORM_XCB_KHR 664 - case WINDOW_XCB: append_all(c, required, instance_extensions_xcb, ARRAY_SIZE(instance_extensions_xcb)); break; 644 + u_string_list_append_array(required, instance_extensions_xcb, ARRAY_SIZE(instance_extensions_xcb)); 645 + break; 665 646 #endif 666 647 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 667 648 case WINDOW_DIRECT_RANDR: 668 649 case WINDOW_DIRECT_NVIDIA: 669 - append_all(c, required, instance_extensions_direct_mode, ARRAY_SIZE(instance_extensions_direct_mode)); 650 + u_string_list_append_array(required, instance_extensions_direct_mode, 651 + ARRAY_SIZE(instance_extensions_direct_mode)); 670 652 break; 671 653 #endif 672 654 #ifdef VK_USE_PLATFORM_ANDROID_KHR 673 655 case WINDOW_ANDROID: 674 - append_all(c, required, instance_extensions_android, ARRAY_SIZE(instance_extensions_android)); 656 + u_string_list_append_array(required, instance_extensions_android, 657 + ARRAY_SIZE(instance_extensions_android)); 675 658 break; 676 659 #endif 677 660 #ifdef VK_USE_PLATFORM_WIN32_KHR 678 661 case WINDOW_MSWIN: 679 - append_all(c, required, instance_extensions_windows, ARRAY_SIZE(instance_extensions_windows)); 662 + u_string_list_append_array(required, instance_extensions_windows, 663 + ARRAY_SIZE(instance_extensions_windows)); 680 664 break; 681 665 #endif 682 666 #ifdef VK_USE_PLATFORM_DISPLAY_KHR 683 667 case WINDOW_VK_DISPLAY: 684 - append_all(c, required, instance_extensions_vk_display, ARRAY_SIZE(instance_extensions_vk_display)); 668 + u_string_list_append_array(required, instance_extensions_vk_display, 669 + ARRAY_SIZE(instance_extensions_vk_display)); 685 670 break; 686 671 #endif 687 672 default: return VK_ERROR_INITIALIZATION_FAILED; ··· 700 685 struct vk_bundle *vk = get_vk(c); 701 686 VkResult ret; 702 687 703 - // every backend needs at least as many extensions as the none window 688 + // every backend needs at least the common extensions 704 689 struct u_string_list *required_instance_ext_list = 705 - u_string_list_create_with_capacity(ARRAY_SIZE(instance_extensions_none)); 690 + u_string_list_create_from_array(instance_extensions_common, ARRAY_SIZE(instance_extensions_common)); 706 691 707 692 struct u_string_list *optional_instance_ext_list = u_string_list_create(); 708 693 ··· 715 700 } 716 701 717 702 struct u_string_list *required_device_extension_list = 718 - u_string_list_create_with_capacity(ARRAY_SIZE(required_device_extensions)); 719 - append_all(c, required_device_extension_list, required_device_extensions, 720 - ARRAY_SIZE(required_device_extensions)); 703 + u_string_list_create_from_array(required_device_extensions, ARRAY_SIZE(required_device_extensions)); 721 704 722 705 struct u_string_list *optional_device_extension_list = 723 - u_string_list_create_with_capacity(ARRAY_SIZE(optional_device_extensions)); 724 - append_all(c, optional_device_extension_list, optional_device_extensions, 725 - ARRAY_SIZE(optional_device_extensions)); 706 + u_string_list_create_from_array(optional_device_extensions, ARRAY_SIZE(optional_device_extensions)); 726 707 727 708 struct comp_vulkan_arguments vk_args = { 728 709 .get_instance_proc_address = vkGetInstanceProcAddr, ··· 908 889 bool use_compute = c->settings.use_compute; 909 890 910 891 struct u_string_list *required_device_ext_list = 911 - u_string_list_create_with_capacity(ARRAY_SIZE(required_device_extensions)); 912 - append_all(c, required_device_ext_list, required_device_extensions, ARRAY_SIZE(required_device_extensions)); 892 + u_string_list_create_from_array(required_device_extensions, ARRAY_SIZE(required_device_extensions)); 913 893 914 894 struct u_string_list *optional_device_ext_list = 915 - u_string_list_create_with_capacity(ARRAY_SIZE(optional_device_extensions)); 916 - append_all(c, optional_device_ext_list, optional_device_extensions, ARRAY_SIZE(optional_device_extensions)); 895 + u_string_list_create_from_array(optional_device_extensions, ARRAY_SIZE(optional_device_extensions)); 917 896 918 897 // follow same device selection logic as subsequent calls 919 898 ret = vk_create_device( //