https://bugs.winehq.org/show_bug.cgi?id=54763
Bug ID: 54763 Summary: Build-time tests fail in an autobuilder environment Product: vkd3d Version: 1.7 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: vkd3d Assignee: wine-bugs@winehq.org Reporter: smcv@collabora.com Distribution: ---
In a typical distribution autobuilder environment, all builds will be run in a chroot or container, usually on server-class hardware or in a virtual machine. This means tests that just do computation (such as shader compilation) should still succeed, but tests that want to access a real GPU will find that either there is no VkDevice at all, or there is a VkDevice but it's only software rendering (lavapipe).
It seems like vkd3d already has some partial handling for this: run_shader_tests_vulkan() skips itself if a VkDevice cannot be created. However, run_shader_tests_d3d12() still tries to run, and crashes when it can't create a Vulkan instance, for example:
FAIL: tests/cast-to-half ========================
vkd3d:err:vkd3d_instance_init Failed to create Vulkan instance, vr -9. vkd3d:fixme:hresult_from_vk_result Unhandled VkResult -9. vkd3d:err:vkd3d_instance_init Failed to create Vulkan instance, vr -9. vkd3d:fixme:hresult_from_vk_result Unhandled VkResult -9. FAIL tests/cast-to-half.shader_test (exit status: 139)
(Exit status 139 is a segmentation fault.)
Would you consider patches that make the tests skip themselves in this situation? Or should distro packaging just not be running build-time tests at all?