turanszkij / WickedEngine

3D engine with modern graphics
https://wickedengine.net
Other
5.7k stars 603 forks source link

Linux Template Fails on Pipeline Creation #690

Closed shepard47 closed 1 year ago

shepard47 commented 1 year ago

I've built the engine on Linux but I get a segmentation fault when I launch the template (the same happens with the ImGui example). This is the gdb backtrace output:

`#0 anv_CreatePipelineLayout () at ../mesa-23.1.1/src/intel/vulkan_hasvk/anv_descriptor_set.c:778

1 0x00005555556b79e8 in wi::graphics::GraphicsDevice_Vulkan::CreatePipelineState(wi::graphics::PipelineStateDesc const, wi::graphics::PipelineState, wi::graphics::RenderPassInfo const*) const ()

2 0x000055555566168c in wi::font::LoadShaders() ()

3 0x00005555556622fa in wi::font::Initialize() ()

4 0x00005555557080c9 in std::_Function_handler<void (wi::jobsystem::JobArgs), wi::initializer::InitializeComponentsAsync()::{lambda(wi::jobsystem::JobArgs)#1}>::_M_invoke(std::_Any_data const&, wi::jobsystem::JobArgs&&) ()

5 0x0000555555712317 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<wi::jobsystem::Initialize(unsigned int)::{lambda()#1}> > >::_M_run() ()

6 0x00007ffff7ae1943 in std::execute_native_thread_routine (__p=0x555556138210) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104

7 0x00007ffff789d44b in start_thread (arg=) at pthread_create.c:444

8 0x00007ffff7920e40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81`

(I have an intel haswell cpu if that's related to the problem.)

turanszkij commented 1 year ago

What is your GPU? First thing try to update graphics driver.

shepard47 commented 1 year ago

My drivers are all up-to-date and I have an integrated Intel GPU. 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])

turanszkij commented 1 year ago

I still don't know what is your GPU, only that it is integrated Intel. For example is it a Intel 620? This seems to be that the driver cannot compile the shaders. Probably the shaders contain some instructions that specific Intel GPU doesn't support.

shepard47 commented 1 year ago

I'm sorry, it's Intel HD Graphics 4400.

turanszkij commented 1 year ago

Thanks. I think for a GPU that old, you will be out of luck with this engine. Here it reports that it only supports Vulkan 1.0: https://www.techpowerup.com/gpu-specs/hd-graphics-4400.c2470 This engine requires support for Vulkan 1.3 at least.

shepard47 commented 1 year ago

I think what you've found is on Windows. On Linux, there's a different implementation as far as I know and my Vulkan version is 1.3. Vulkan Instance Version: 1.3.246 But you might be right that this implementation won't run the engine because I also get this message: MESA-INTEL: warning: Haswell Vulkan support is incomplete I was just curious if I could make the engine work on this older machine but thank you for your help.

shepard47 commented 1 year ago

I built the engine in debug mode and I found the problem: Assertion features_1_2.descriptorIndexing == VK_TRUE' failed

turanszkij commented 1 year ago

Thanks for checking. If this is the case, unfortunately you are out of luck because we rely on hardware that supports descriptor indexing (also called bindless resource). The error reporting will be improved in the future.