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).
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.
Loaded images:
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.
Buffer table:
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.
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
Edit: Link: WARSTORY: Scottish Jacobites Press Kit – Mindty Kollektiv
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.