Vulkan lavapipe software rendering is working on Haiku

I updated Mesa RADV to latest upstream Git version. Latest Zink is not working so old one is currently used. For new RADV driver libdrm Syncobj API become mandatory and I implemented initial support for it. Syncobj support is incomplete so old buffer competion waiting logic is restored.

I did some bugfixes. In case of GPU display output is used, GPU page faults occured. HDP flush was required for page tables located in VRAM. I also fixed a bug in SA Domains request queue logic that caused random crashes. After fixes test application run stable for night. No page faults, crashes, freezes or interrupt delivery problems.

I also fixed and simplified VideoStreams VideoConsumer logic so buffer flipping works correcly for all tests now (VideoFileProducer, TestProducer, Compositor).

I implemented hadware cursor support. Current GPU supports hardware 32 bit RGBA cursors with maximum size 64x64.

Next tasks:

  1. Implementing GPU buffer sharing between processes and intergating them with VideoStreams, including VRAM buffers.

  2. Compositor need to be modified to support hardware compositing in VRAM.

  3. VideoStreams copy present mode need to be implemented to be used in app_server back buffer.

  4. Design of new accelerant API and corresponding AccelerantHWInterface in app_server. app_server can support both for easier migration.

Tasks that can be done later:

  1. Proper implementation of Syncobj.

  2. Proper implementation of process GPU virtual address space assignment. Currently it works only if only one process is executing command buffer at the same time.

  3. Proper initialization, finalization and GPU reset.

  4. Proper collection of GPU information. Currently dump of Linux driver output is used in some places.

  5. Implement GPU handling that depends on GPU version and generation.

  6. Fix latest Zink.

  7. Fix HDMI modeseting (need Linux drivers AtomBIOS calls tracing). Currently mode set by UEFI GOP is used.

  8. Implement Vulkan WSI layer add-on for VideoStreams VideoProducer (VkProducer).

  9. Implement Mesa OpenGL integration for VideoStreams VideoProducer (GLProducer).

29 Likes