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:
-
Implementing GPU buffer sharing between processes and intergating them with VideoStreams, including VRAM buffers.
-
Compositor need to be modified to support hardware compositing in VRAM.
-
VideoStreams copy present mode need to be implemented to be used in
app_server
back buffer. -
Design of new accelerant API and corresponding
AccelerantHWInterface
inapp_server
.app_server
can support both for easier migration.
Tasks that can be done later:
-
Proper implementation of Syncobj.
-
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.
-
Proper initialization, finalization and GPU reset.
-
Proper collection of GPU information. Currently dump of Linux driver output is used in some places.
-
Implement GPU handling that depends on GPU version and generation.
-
Fix latest Zink.
-
Fix HDMI modeseting (need Linux drivers AtomBIOS calls tracing). Currently mode set by UEFI GOP is used.
-
Implement Vulkan WSI layer add-on for VideoStreams VideoProducer (VkProducer).
-
Implement Mesa OpenGL integration for VideoStreams VideoProducer (GLProducer).