Vulkan lavapipe software rendering is working on Haiku

Nice! as usual :wink:
Would be cool if it would become possible to render on the same card that displays the desktop at some point. Do you have plans for that yet, do you foresee difficulties, or am I just asking a bit too early? :innocent:


there is some kind of opengl fps test in blender, maybe it can help you to see performance differences…
from the search menu in blender, type “debug menu” and then enter “21”
there are other debugging option for opengl here in this video:

1 Like

After fixing buffer stride alignment problem, multiple windows in Blender, window resizing and GLTeapot are working. There are currently problem with efficiency in Zink and RadeonGfx in server mode that it clone and delete buffer on each frame that is time consuming.



Now wiil be a great oportunity to test Godot Engine demos too n,n BTW Godot Engine 4 Alfa have a vulkan engine.


Zink over Lavapipe also works, but with glitches (no cube in Blender) and crashes.




Ah those expected standard “Nice, and i would use IF…” comments.


Shall we update the title? It’s more than software rendering at this point.

Maybe better to split when I started to write about implementing stub libdrm for RADV.


I think that article don’t clarify what things were ported and what were written from scratch.


  1. LavaPipe (remove dependency on DRM)
  2. RADV (small changes to solve header conflicts and weak symbols)
  3. Zink (no changes to Zink itself, switching from softpipe to zink in Haiku Gallium add-on)
  4. libdrm_amdgpu (no changes)
  5. libvulkan (compile fixes)
  6. Vulkan WSI add-on (implementing Haiku window over headless surface, very incomplete for now)


  1. libdrm2 (partially-compatible with libdrm, provides only render devices, no KMS related functionality, interacts with RadeonGfx)
  2. RadeonGfx (low-level driver interacting with GPU hardware. Functional alternative of Linux amdgpu kernel mode. Runs fully in userland as separate server process over existing Haiku radeon_hd kernel driver.)
  3. Various helper libraries: Locks, SADomains, Poke, ExternalAllocator, ThreadLink.

A full article explaining everything in detail (after you’re finished with your work) would be a great-to-have. It would serve as a great point of reference, and hopefully attract interested parties.


I’m at a point where I’m trying to see the roadmap that’s left ?

Implementing RLC block (exact meaning unknown) handling code seems required for proper GFX ring operation and scheduling, amdgpu code. Also interrupt handling and power management need to be implemented.


Started implementing inspection protocol and server monitor client

> make_meson run Monitor
ninja: no work to do.
+ThreadLink(), thread: 95169
team 95059
 id kind     address    size
  1 GTT      0x80017000 0x00001000
  2 VRAM MAP 0x00442000 0x00040000
  3 VRAM MAP 0x00482000 0x00010000
  4 VRAM MAP 0x00492000 0x00047000
  5 VRAM MAP 0x004da000 0x00047000
  6 VRAM MAP 0x00521000 0x00047000
  7 VRAM MAP 0x00568000 0x00047000
  8 GTT      0x80018000 0x00001000
  9 GTT      0x80019000 0x00080000
 10 GTT      0x80099000 0x00300000
 11 GTT      0x80399000 0x00300000
 12 VRAM     0x10000000 0x003cd000
 16 GTT      0x8126c000 0x00001000
 17 VRAM     0x103ce000 0x00001000
 18 GTT      0x806a1000 0x00001000
 19 VRAM     0x13a8a000 0x00209000
 21 VRAM     0x10457000 0x00209000
 22 VRAM MAP 0x005fe000 0x00047000
 23 VRAM     0x103cd000 0x00001000
 24 VRAM     0x12520000 0x01556000
 25 VRAM     0x103cf000 0x00001000
 26 VRAM     0x103e8000 0x0000f000
 27 GTT      0x806b1000 0x00400000
 28 VRAM MAP 0x005b7000 0x00047000
 29 VRAM MAP 0x00645000 0x00047000
 30 VRAM MAP 0x0068d000 0x00047000
 31 GTT      0x806b0000 0x00001000
 32 GTT      0x80ab1000 0x00080000
 33 GTT      0x806af000 0x00001000
 34 GTT      0x806ad000 0x00001000
 35 VRAM     0x103d0000 0x00001000
 36 VRAM     0x103e2000 0x00006000
 37 VRAM     0x109d6000 0x01556000
 38 GTT      0x80b31000 0x00001000
 39 VRAM     0x103d2000 0x0000d000
 40 VRAM     0x1099c000 0x00008000
 41 VRAM     0x13c93000 0x00018000
 42 VRAM     0x13a76000 0x00014000
 43 GTT      0x806a3000 0x00001000
 44 VRAM     0x103d1000 0x00001000
 45 GTT      0x81304000 0x00002000
 46 GTT      0x8128b000 0x00001000
 47 VRAM     0x13cab000 0x00232000
 49 VRAM     0x103f7000 0x00060000
 50 GTT      0x81309000 0x00001000
 51 GTT      0x812eb000 0x00001000
 52 VRAM     0x10696000 0x0001b000
 53 VRAM     0x103df000 0x00001000
 54 GTT      0x812f3000 0x00001000
 55 VRAM     0x1410f000 0x00232000
 56 GTT      0x812f2000 0x00001000
 57 VRAM     0x10666000 0x00030000
 58 GTT      0x812ec000 0x00001000
 59 VRAM     0x10660000 0x00006000
 60 VRAM     0x103e0000 0x00001000
 61 VRAM     0x106b1000 0x0001b000
 62 VRAM     0x10727000 0x0001b000
 63 VRAM     0x1099b000 0x00001000
 64 VRAM     0x10742000 0x00027000
 65 GTT      0x812cf000 0x00006000
 66 VRAM     0x11f2c000 0x002c9000
 67 GTT      0x81306000 0x00001000
 68 GTT      0x81238000 0x00001000
 69 GTT      0x8128f000 0x00004000
 70 GTT      0x812f4000 0x00001000
 71 GTT      0x812ee000 0x00001000
 72 VRAM     0x10769000 0x00232000
 73 VRAM     0x103e1000 0x00001000
 74 GTT      0x812f9000 0x00001000
 75 GTT      0x812fb000 0x00001000
 76 VRAM     0x121f5000 0x00232000
 77 GTT      0x812fd000 0x00001000
 78 GTT      0x812fe000 0x00002000
 79 VRAM     0x106cc000 0x0001b000
 80 VRAM     0x106e7000 0x00040000
 81 VRAM     0x13edd000 0x00232000
 82 VRAM     0x149ed000 0x00200000
 83 GTT      0x812ef000 0x00001000
 84 VRAM     0x109a4000 0x00001000
 85 GTT      0x812f7000 0x00001000
 86 VRAM     0x109a5000 0x00001000
 87 VRAM     0x14341000 0x002c9000
 88 VRAM     0x1460a000 0x0011a000
 89 VRAM     0x14724000 0x002c9000
 90 GTT      0x81250000 0x00001000
 94 GTT      0x81240000 0x00001000
 95 GTT      0x8129b000 0x00010000
 96 GTT      0x812ab000 0x00008000
 97 GTT      0x812b3000 0x00004000
 98 GTT      0x812f6000 0x00001000
 99 GTT      0x8130a000 0x00001000
100 GTT      0x806a8000 0x00001000
101 GTT      0x80b32000 0x00100000
102 GTT      0x812b7000 0x00004000
103 GTT      0x812f0000 0x00001000
104 GTT      0x812bb000 0x00004000
105 GTT      0x81307000 0x00001000
106 GTT      0x812d7000 0x00004000
107 GTT      0x806a2000 0x00001000
108 GTT      0x80699000 0x00001000
109 GTT      0x812f5000 0x00001000
110 GTT      0x81300000 0x00001000
111 GTT      0x81301000 0x00001000
112 GTT      0x812d5000 0x00001000
113 GTT      0x812d6000 0x00001000
114 GTT      0x8128c000 0x00001000
115 GTT      0x8128d000 0x00001000
116 GTT      0x8128e000 0x00001000
117 GTT      0x812db000 0x00001000
118 GTT      0x812dc000 0x00001000
119 GTT      0x812dd000 0x00001000
120 GTT      0x812de000 0x00001000
121 GTT      0x81293000 0x00001000
122 GTT      0x81294000 0x00001000
123 GTT      0x81295000 0x00001000
124 GTT      0x81296000 0x00001000
125 GTT      0x81297000 0x00001000
126 GTT      0x81298000 0x00001000
127 GTT      0x81299000 0x00001000
128 GTT      0x8129a000 0x00001000
129 GTT      0x812bf000 0x00001000
130 GTT      0x812c0000 0x00001000
131 GTT      0x81213000 0x0001f000
132 GTT      0x812c1000 0x00001000
133 GTT      0x812c2000 0x00001000
134 GTT      0x812c3000 0x00001000
135 GTT      0x812c4000 0x00001000
136 GTT      0x812c5000 0x00001000
137 GTT      0x812c6000 0x00001000
138 GTT      0x812c7000 0x00001000
139 GTT      0x812c8000 0x00001000
140 GTT      0x812c9000 0x00001000
141 GTT      0x812ca000 0x00001000
142 GTT      0x812cb000 0x00002000
143 GTT      0x812cd000 0x00001000
144 GTT      0x812ce000 0x00001000
145 GTT      0x812df000 0x00001000
146 GTT      0x812e0000 0x00001000
147 GTT      0x812e1000 0x00001000
148 GTT      0x812e2000 0x00001000
149 GTT      0x812e3000 0x00001000
150 GTT      0x812e4000 0x00001000
151 GTT      0x812e5000 0x00001000
152 GTT      0x812e7000 0x00001000
153 GTT      0x812e6000 0x00001000
154 GTT      0x81289000 0x00001000
155 GTT      0x81252000 0x00001000
156 GTT      0x812fa000 0x00001000
157 GTT      0x81232000 0x00004000
158 VRAM     0x14bed000 0x00109000
161 GTT      0x80d32000 0x00100000
162 GTT      0x81264000 0x00001000
165 GTT      0x80c32000 0x00008000
168 GTT      0x81260000 0x00001000
169 GTT      0x81239000 0x00001000
170 GTT      0x8126b000 0x00001000
172 GTT      0x81245000 0x00001000
175 GTT      0x8125d000 0x00001000
179 GTT      0x81243000 0x00001000
180 GTT      0x8124c000 0x00001000
181 GTT      0x8124b000 0x00001000
182 GTT      0x8123e000 0x00001000
183 GTT      0x80c6d000 0x00001000
184 GTT      0x8124d000 0x00001000
185 GTT      0x81242000 0x00001000
186 GTT      0x812ea000 0x00001000
187 GTT      0x8124a000 0x00001000
189 GTT      0x81255000 0x00008000
190 GTT      0x8123f000 0x00001000
191 GTT      0x81253000 0x00001000
193 GTT      0x8125f000 0x00001000
194 GTT      0x8128a000 0x00001000
195 GTT      0x81265000 0x00001000
196 GTT      0x81276000 0x00008000
200 GTT      0x81244000 0x00001000
201 GTT      0x812ed000 0x00001000
202 GTT      0x80c74000 0x00008000
204 GTT      0x8124e000 0x00001000
205 GTT      0x81270000 0x00001000
206 GTT      0x8126f000 0x00001000
208 GTT      0x812f1000 0x00001000
210 GTT      0x81246000 0x00001000
212 GTT      0x81236000 0x00001000
213 GTT      0x806a0000 0x00001000
214 GTT      0x812f8000 0x00001000
215 GTT      0x81266000 0x00001000
220 GTT      0x81248000 0x00001000
team 95118
 id kind     address    size
  1 GTT      0x81267000 0x00001000
  2 GTT      0x81262000 0x00001000
  3 VRAM MAP 0x0071c000 0x00040000
  4 GTT      0x8130b000 0x00384000
  5 VRAM     0x14cf6000 0x003c3000
  6 VRAM     0x150b9000 0x003c3000
  7 VRAM     0x1547c000 0x004c3000
  8 VRAM     0x12427000 0x00040000
  9 VRAM     0x15a95000 0x00aac000
 10 GTT      0x8127e000 0x00004000
 11 VRAM MAP 0x00766000 0x00001000
 12 VRAM     0x109a6000 0x00001000
 13 GTT      0x81274000 0x00002000
 14 VRAM     0x109ad000 0x00001000
 15 VRAM     0x109a7000 0x00005000
 16 VRAM     0x109ac000 0x00001000
 17 VRAM MAP 0x00767000 0x00001000
 18 GTT      0x806a4000 0x00002000
 19 VRAM     0x1593f000 0x00156000
 20 VRAM     0x109b2000 0x0001a000
 21 VRAM     0x109cc000 0x00006000
 22 VRAM MAP 0x00768000 0x00001000
 23 VRAM     0x12467000 0x00040000
 24 VRAM MAP 0x00774000 0x00001000
 25 GTT      0x8069f000 0x00001000
 26 GTT      0x8069a000 0x00004000
 27 GTT      0x80c40000 0x00004000
 28 GTT      0x81282000 0x00004000
 29 GTT      0x8126e000 0x00001000
 30 GTT      0x80c3a000 0x00003000
 31 GTT      0x81287000 0x00001000
team 95133
 id kind     address    size
  1 GTT      0x8069e000 0x00001000
  2 GTT      0x81269000 0x00001000
  3 VRAM MAP 0x0077e000 0x00040000
  4 GTT      0x8168f000 0x00384000
  5 VRAM     0x16541000 0x003c3000
  6 VRAM     0x16904000 0x003c3000
  7 VRAM     0x16cc7000 0x004c3000
  8 VRAM     0x124a7000 0x00040000
  9 VRAM     0x176e0000 0x00556000
 10 GTT      0x80c44000 0x00004000
 11 VRAM MAP 0x007c8000 0x00001000
 12 VRAM     0x1718a000 0x00556000
 13 VRAM     0x17c36000 0x00556000
 14 VRAM     0x1818c000 0x00556000
 15 VRAM     0x186e2000 0x00556000
 16 VRAM     0x18c38000 0x00556000
 17 VRAM     0x1918e000 0x00556000
 18 VRAM     0x196e4000 0x00556000
 19 VRAM     0x19c3a000 0x00556000
 20 VRAM     0x1a190000 0x00556000
 21 VRAM     0x1a6e6000 0x00556000
 22 VRAM     0x1ac3c000 0x00556000
 23 VRAM     0x1b192000 0x00556000
 24 VRAM     0x1b6e8000 0x00556000
 25 VRAM     0x1bc3e000 0x00556000
 26 VRAM     0x1c194000 0x00556000
 27 VRAM     0x109ae000 0x00001000
 28 VRAM     0x1c6ea000 0x00556000
 29 VRAM     0x1cc40000 0x00556000
 30 VRAM     0x1d196000 0x00556000
 31 VRAM     0x1d6ec000 0x00556000
 32 VRAM     0x1dc42000 0x00556000
 33 VRAM     0x1e198000 0x00556000
 34 VRAM     0x1e6ee000 0x00556000
 35 VRAM     0x1ec44000 0x00556000
 36 VRAM     0x1f19a000 0x00556000
 37 VRAM     0x1f6f0000 0x00556000
 38 VRAM     0x1fc46000 0x00556000
 39 VRAM     0x2019c000 0x00556000
 40 VRAM     0x206f2000 0x00556000
 41 VRAM     0x20c48000 0x00556000
 42 VRAM     0x2119e000 0x00556000
 43 VRAM     0x216f4000 0x00556000
 44 VRAM     0x21c4a000 0x00556000
 45 VRAM     0x221a0000 0x00556000
 46 VRAM     0x226f6000 0x00556000
 47 VRAM     0x22c4c000 0x00556000
 48 VRAM     0x231a2000 0x00556000
 49 VRAM     0x236f8000 0x00556000
 50 VRAM     0x23c4e000 0x00556000
 51 VRAM     0x241a4000 0x00556000
 52 VRAM     0x246fa000 0x00556000
 53 VRAM     0x24c50000 0x00556000
 54 VRAM     0x251a6000 0x00556000
 55 VRAM     0x256fc000 0x00556000
 56 VRAM     0x25c52000 0x00556000
 57 VRAM     0x261a8000 0x00556000
 58 VRAM     0x266fe000 0x00556000
 59 VRAM     0x26c54000 0x00556000
 60 VRAM     0x109af000 0x00001000
 61 GTT      0x80c3d000 0x00002000
 62 GTT      0x81271000 0x00002000
 63 GTT      0x80c48000 0x00002000
 64 GTT      0x80c4a000 0x00002000
 65 GTT      0x80c4c000 0x00002000
 66 GTT      0x80c4e000 0x00002000
 67 GTT      0x80c50000 0x00002000
 68 GTT      0x80c52000 0x00002000
 69 GTT      0x806a6000 0x00002000
 70 GTT      0x80c54000 0x00002000
 71 GTT      0x80c56000 0x00002000
 72 GTT      0x80c5a000 0x00002000
 73 GTT      0x80c5c000 0x00002000
 74 VRAM     0x28882000 0x00f00000
 75 VRAM     0x29782000 0x003c3000
 76 VRAM     0x271aa000 0x013d7000
 77 VRAM     0x28581000 0x00301000
 78 VRAM MAP 0x00872000 0x00001000
 79 VRAM     0x29b45000 0x003c3000
 80 VRAM     0x29f08000 0x004c3000
 81 VRAM     0x2a3cb000 0x000f3000
 82 VRAM     0x2a4be000 0x000f3000
 83 GTT      0x81302000 0x00001000
 84 GTT      0x8126d000 0x00001000
 85 GTT      0x81268000 0x00001000
 86 GTT      0x80c5e000 0x00004000
 87 VRAM     0x109b0000 0x00001000
 88 VRAM MAP 0x00876000 0x00001000
 89 GTT      0x80c62000 0x00004000
 90 GTT      0x80c66000 0x00004000
 91 GTT      0x80c6a000 0x00003000
 92 GTT      0x812e9000 0x00001000
 93 GTT      0x80c80000 0x00004000
team 95153
 id kind     address    size
team 95169
 id kind     address    size
-ThreadLink(), thread: 95169

RLC seems to be Ring List Controller. Found a reference to it in a patent.


Is there a point where the 2d driver needs integration with any of this ???

Another article:


What is 2D driver?

1 Like

The mode setting driver for the radeon cards, not dure how complete it is, but it’s in tree