Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

Journeyman III

need help in writing open source driver


I'm writing a replacement for existing DRI infrastructure in linux* and I have several questions related to hardware.

1)where can I get description of HW registers for R800 and newest GPUs? There are register descriptions for R600-R700, but I cant find any documents for newer chips.

2)evegreen and newest gpus are dx11-compliant, that means they support "gpu preemption". However, I can't find any information related to this feature.

My driver will operate with per-application per-gpu "contexts", and will rely on ability to interrupt(possibly unrecoverable) a specified context.

Can I get any links to docs where  preemption features are explained?

3)Recently, AMD published list of ACPI methods, some of them can be used to control display links, other can be used to manage power.

3.1)Some of ACPI methods seem to have parameters that override device's acpi object handle. ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST, for example, can adress device by pci id. Should it be evaluated with handle obtained by DEVICE_ACPI_HANDLE(&pci_device->dev), or I must use some other handle?

3.2)'radeon' driver seems to obtain atom bios image from first vga device which supports ATRM method. Is this correct behavior or I must obtain bios image with handle of device which will be accessed by this image?

3.3)how power management functions interoperate with atom bios functions? should they all be protected by single mutex?

3.4)in case of old GPUs, are there any unsupported methods I should be aware and not threat their absense as an unrecoverable error?

*why? because i'm developing my own os, because i support wayland, and want my programs to run without X, and because i'm very-very dissapointed with ugly hacks like DRM-prime.



1 Reply

Hi Dmitry;

1. The registers haven't changed much between 6xx/7xx and later GPUs, so we've just been providing updated register header files for the newer hardware. We're going to try to get a new set of docs out for SI then go back to register header updates for a few more generations.

2. AFAIK preemption for DX is usually done in the OS scheduler with a bit of help from the driver, ie not purely in hardware.

3. Probably best to ask this on #radeon or #dri-devel

Note that the open source drivers run without X today -- Wayland and Android both run with just the kernel driver and mesa.