curiosity question, the high frames on linux, could it be because some sort of multithreading or something similar is active?
CPU threads are probably unrelated. Problems that can affect performance:
- Driver do not set power state so GPU may run at low power or failsafe mode.
- GFX ring is reset before each command sequence to avoid driver bug. It need more investigation to fix.
- Interrupts are not supported yet. Pooling is used to detect command buffers completion.
- Command buffer scheduler is too primitive and it waits completion in scheduling function instead of dedicated wait function. Related to (2).
power_dpm_state set to
So, your driver is about 3x slower. Probably I would guess #2 and #4 on your list are most related (command ring resets are usually pretty expensive), but possibly #3 also if you are not just busy-looping.
Pooling timer thread is used with 1 ms pooling period. Decreasing pooling period to 100 ns have almost no effect on FPS, but increase CPU usage.
Thats great news X512. You’ve already reached 1/3 Linux performance by using combo of external Radeon + Intel GPU. With Linux you’re probably using just the Radeon, so a memcpy + sync less to begin with. The HW mux benchmarks I’ve seen for laptops show up to 20% performance benefit when using hw mux in dual GPU config which is common with laptops (naturally, single GPU option will be faster). With your Linux benchmark, I’d expect that only Radeon is used effectively becoming a single GPU solution.
So 1/3 performance this early with the dual GPU dance is amazing progress. A celebration in Ilya’s honour.
Some details how it work.
Waiting for command buffer execution stack trace. Most major components are present (libdrm2, libdrm_amdgpu, RADV, RadeonGfx).
Threads. Last thread is WSI presenter thread that copy swap chain image to BBitmap and display it.
id kind address size 1 GTT 0x80017000 0x00001000 2 GTT 0x80018000 0x00001000 3 VRAM MAP 0x0040a000 0x00040000 4 GTT 0x80019000 0x00384000 5 VRAM 0x10000000 0x003c3000 6 VRAM 0x103c3000 0x003c3000 7 VRAM 0x10786000 0x004c3000 8 VRAM 0x10c49000 0x00040000 9 VRAM 0x10e07000 0x00aac000 10 GTT 0x803dd000 0x00004000 11 VRAM MAP 0x00454000 0x00001000 12 VRAM 0x10c89000 0x00001000 13 GTT 0x8039e000 0x00002000 14 VRAM 0x10c90000 0x00001000 15 VRAM 0x10c8a000 0x00005000 16 VRAM 0x10c8f000 0x00001000 17 VRAM MAP 0x00455000 0x00001000 18 GTT 0x803a0000 0x00002000 19 VRAM 0x10cb1000 0x00156000 20 VRAM 0x10c91000 0x0001a000 21 VRAM 0x10cab000 0x00006000 22 VRAM MAP 0x00456000 0x00001000 23 VRAM 0x118b3000 0x00040000 24 VRAM MAP 0x00462000 0x00001000 25 GTT 0x8039d000 0x00001000 26 GTT 0x803bf000 0x00004000 27 GTT 0x803c5000 0x00004000 28 GTT 0x803c9000 0x00004000 29 GTT 0x803a4000 0x00001000 30 GTT 0x803cf000 0x00003000 31 GTT 0x803c3000 0x00001000
Are there any vulkan 3d game engines that can be easily pprted to haiku ? Iirc i thought there was a open source doom or quake for vulkan project
Might be useful soon to have one of those.
Godot 4.0 uses Vulkan. Our engine is not ready 100% using Vulkan but close. I guess there are more out there.
Edit: e.g. Ogre has also Vulkan support.
Should be even possible to port Unreal!
Not sure about NDA or something but I know you can subscribe to Unreal Repo and then you have access.
Looks like @X512 gets the ball rolling here <3
At the very least, having any 3d game would be useful, because the performance testing will reqyire it let alone the bug hunting
I think our engine is perfect for testing lots of 3d driver features/issues. I can assist also.
Port it, Contact HiakuPorts to get it into the repository, also games welcomed as well. You can also start a repo, and if you have games that run users can buy from you as well.
If you mean our engine. It is ported. Just a few Makefile adjustments to compile with GLFW3 and Vulkan.
We also have a game in our pipeline. We can release this for Haiku if 3D graphics drivers are OK for that
Does it have some sample open source games?
Lots of engine feature tests and a editor u can try with sample assets that are included as well. We can also compile our game to test on Haiku.
Definitely compile to test on haiku
Maybe it can be already compiled, libvulkan with Vulkan headers is already present in HaikuPorts.