Issue was moved from Vulkan-ValidationLayers to Vulkan-Loader
The settings file allows specifying which VkPhysicalDevice's should be visible to applications. This logic applies to the ouput of vkEnumeratePhysicalDevices. It currently doesn't apply to vkEnumeratePhysicalDeviceGroups which is a bug, and causes the validation layer to crash if an app tries to create a VkDevice using a VkPhysicalDevice queried by vkEnumeratePhysicalDeviceGroups.
Original issue
Environment:
- OS: MacOS
- GPU and driver version: MoltenVK or KosmicKrisp
- SDK or header version if building from repo: 1.4.350.0
- Options enabled (synchronization, best practices, etc.):
Default Presets from Vulkan Configurator
Vulkan Configurator allows you to force a single driver to be used on the "Vulkan Drivers" tab. If you select "Force a single Vulkan physical device", and have validation enabled with the default presets, vulkaninfo will segfault. It does not matter if you choose MoltenVK or KosmicKrisp. It crashes right after starting the device groups as shown below. This is likely a conflict with how the newer loaders allow device filtering, which is being exposed by Vulkan Configurator here.
Device Groups:
Group 0:
Properties:
physicalDevices: count = 1
Apple M4 Max (ID: 0)
subsetAllocation = 0
zsh: segmentation fault vulkaninfo
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libVkLayer_khronos_validation.dylib 0x10faf8a84 vvl::DeviceState::DeviceState(vvl::DispatchDevice*, vvl::InstanceState*) + 1300 (state_tracker.cpp:69)
1 libVkLayer_khronos_validation.dylib 0x10f8724e8 vvl::DispatchDevice::InitValidationObjects() + 1448 (dispatch_object.cpp:103)
2 libVkLayer_khronos_validation.dylib 0x10f4cb088 vvl::DispatchDevice::DispatchDevice(vvl::DispatchInstance*, VkPhysicalDevice_T*, VkDeviceCreateInfo const*) + 460 (dispatch_object_manual.cpp:900)
3 libVkLayer_khronos_validation.dylib 0x10f4bf8d4 std::__1::unique_ptr<vvl::DispatchDevice, std::__1::default_deletevvl::DispatchDevice> std::__1::make_unique[abi:ne200100]<vvl::DispatchDevice, vvl::DispatchInstance*&, VkPhysicalDevice_T*&, VkDeviceCreateInfo const*&, 0>(vvl::DispatchInstance*&, VkPhysicalDevice_T*&, VkDeviceCreateInfo const*&) + 32 (unique_ptr.h:767) [inlined]
4 libVkLayer_khronos_validation.dylib 0x10f4bf8d4 vulkan_layer_chassis::CreateDevice(VkPhysicalDevice_T*, VkDeviceCreateInfo const*, VkAllocationCallbacks const*, VkDevice_T**) + 156 (chassis_manual.cpp:337)
5 libvulkan.1.4.350.dylib 0x102717ea8 loader_create_device_chain + 2888 (loader.c:5535)
6 libvulkan.1.4.350.dylib 0x102717010 loader_layer_create_device + 588 (loader.c:4892)
7 libvulkan.1.4.350.dylib 0x102720b00 vkCreateDevice + 124 (trampoline.c:994)
8 vulkaninfo 0x102393310 GetGroupCapabilities(AppInstance&, VkPhysicalDeviceGroupProperties) + 944 (vulkaninfo.h:1465)
Issue was moved from Vulkan-ValidationLayers to Vulkan-Loader
The settings file allows specifying which VkPhysicalDevice's should be visible to applications. This logic applies to the ouput of
vkEnumeratePhysicalDevices. It currently doesn't apply tovkEnumeratePhysicalDeviceGroupswhich is a bug, and causes the validation layer to crash if an app tries to create aVkDeviceusing aVkPhysicalDevicequeried byvkEnumeratePhysicalDeviceGroups.Original issue
Environment:
Default Presets from Vulkan Configurator
Vulkan Configurator allows you to force a single driver to be used on the "Vulkan Drivers" tab. If you select "Force a single Vulkan physical device", and have validation enabled with the default presets, vulkaninfo will segfault. It does not matter if you choose MoltenVK or KosmicKrisp. It crashes right after starting the device groups as shown below. This is likely a conflict with how the newer loaders allow device filtering, which is being exposed by Vulkan Configurator here.
Device Groups:
Group 0:
Properties:
physicalDevices: count = 1
Apple M4 Max (ID: 0)
subsetAllocation = 0
zsh: segmentation fault vulkaninfo